diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..79d21e186 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +* +!Arrowgene.DragonsDogmaOnline.sln +!SetSourceRevision.targets +# This is required by projects which import the SetSourceRevision.targets command to add Git revision info. +# Not including it causes (ingoreable) errors to be thrown +#!.git/ +!Arrowgene.Ddon.Cli/ +!Arrowgene.Ddon.Client/ +!Arrowgene.Ddon.Database/ +!Arrowgene.Ddon.GameServer/ +!Arrowgene.Ddon.LoginServer/ +!Arrowgene.Ddon.Rpc/ +!Arrowgene.Ddon.Rpc.Web/ +!Arrowgene.Ddon.Server/ +!Arrowgene.Ddon.Shared/ +!Arrowgene.Ddon.WebServer/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 52647af76..8ceae9e50 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,7 +3,6 @@ "fudge.auto-using", "jeff-hykin.better-cpp-syntax", "ms-dotnettools.csharp", - "kreativ-software.csharpextensions", "notblank00.hexeditor", "wayou.vscode-todo-highlight", "usernamehw.errorlens", @@ -11,6 +10,7 @@ "yo1dog.cursor-align", "wmaurer.change-case", "softwareape.numbermonger", - "maziac.hex-hover-converter" + "maziac.hex-hover-converter", + "ms-dotnettools.csdevkit" ] } \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 7273ef8db..fa7063130 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -10,8 +10,7 @@ "${workspaceFolder}/Arrowgene.Ddon.Cli/Arrowgene.Ddon.Cli.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" + ] }, { "label": "publish", @@ -22,8 +21,7 @@ "${workspaceFolder}/Arrowgene.Ddon.Cli/Arrowgene.Ddon.Cli.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" + ] }, { "label": "watch", @@ -35,8 +33,7 @@ "${workspaceFolder}/Arrowgene.Ddon.Cli/Arrowgene.Ddon.Cli.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" + ] }, { "label": "packet", @@ -49,8 +46,7 @@ "packet", "${input:pathToYaml}", "${input:camelliaKey}" - ], - "problemMatcher": "$msCompile" + ] } ], "inputs": [ diff --git a/Arrowgene.Ddon.Cli/Command/PacketCommand.cs b/Arrowgene.Ddon.Cli/Command/PacketCommand.cs index 0943cde00..73226fa03 100644 --- a/Arrowgene.Ddon.Cli/Command/PacketCommand.cs +++ b/Arrowgene.Ddon.Cli/Command/PacketCommand.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using System.Linq; using Arrowgene.Ddon.Server; using Arrowgene.Ddon.Server.Network; using Arrowgene.Ddon.Shared.Network; @@ -85,6 +86,8 @@ public CommandResultType Run(CommandParameter parameter) annotated.Append($" Pcap(No:{pcapPacket.Packet} Ts:{pcapPacket.TimeStamp})"); annotated.Append(Environment.NewLine); annotated.Append(readPacket.PrintData()); + annotated.Append(string.Join(", ", readPacket.Data.Select(dataByte => String.Format("0x{0:X}", dataByte)))); + annotated.Append(Environment.NewLine); annotated.Append(Environment.NewLine); } } diff --git a/Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql b/Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql index d0f120691..83e489fe4 100644 --- a/Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql +++ b/Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql @@ -293,11 +293,12 @@ CREATE TABLE IF NOT EXISTS `ddon_equip_item` CREATE TABLE IF NOT EXISTS `ddon_equip_job_item` ( - `character_common_id` INTEGER NOT NULL, - `job` TINYINT NOT NULL, - `job_item_id` INT NOT NULL, - `equip_slot_no` TINYINT NOT NULL, - PRIMARY KEY (`character_common_id`, `job`, `equip_slot_no`), + `item_uid` TEXT NOT NULL, + `character_common_id` INTEGER NOT NULL, + `job` TINYINT NOT NULL, + `equip_slot` SMALLINT NOT NULL, + PRIMARY KEY (`character_common_id`, `job`, `equip_slot`), + CONSTRAINT `fk_equip_job_item_item_uid` FOREIGN KEY (`item_uid`) REFERENCES `ddon_item` (`uid`) ON DELETE CASCADE, CONSTRAINT `fk_equip_job_item_character_common_id` FOREIGN KEY (`character_common_id`) REFERENCES `ddon_character_common` (`character_common_id`) ON DELETE CASCADE ); @@ -312,15 +313,34 @@ CREATE TABLE IF NOT EXISTS `ddon_normal_skill_param` CONSTRAINT `fk_normal_skill_param_character_common_id` FOREIGN KEY (`character_common_id`) REFERENCES `ddon_character_common` (`character_common_id`) ON DELETE CASCADE ); +CREATE TABLE IF NOT EXISTS `ddon_learned_custom_skill` +( + `character_common_id` INTEGER NOT NULL, + `job` TINYINT NOT NULL, + `skill_id` INT NOT NULL, + `skill_lv` TINYINT NOT NULL, + PRIMARY KEY (`character_common_id`, `job`, `skill_id`), + CONSTRAINT `fk_learned_custom_skill_character_common_id` FOREIGN KEY (`character_common_id`) REFERENCES `ddon_character_common` (`character_common_id`) ON DELETE CASCADE +); + CREATE TABLE IF NOT EXISTS `ddon_equipped_custom_skill` ( `character_common_id` INTEGER NOT NULL, `job` TINYINT NOT NULL, `slot_no` TINYINT NOT NULL, `skill_id` INT NOT NULL, - `skill_lv` TINYINT NOT NULL, PRIMARY KEY (`character_common_id`, `job`, `slot_no`), - CONSTRAINT `fk_set_acquirement_param_character_common_id` FOREIGN KEY (`character_common_id`) REFERENCES `ddon_character_common` (`character_common_id`) ON DELETE CASCADE + CONSTRAINT `fk_equipped_custom_skill_character_common_id` FOREIGN KEY (`character_common_id`, `job`, `skill_id`) REFERENCES `ddon_learned_custom_skill` (`character_common_id`, `job`, `skill_id`) ON DELETE CASCADE +); + +CREATE TABLE IF NOT EXISTS `ddon_learned_ability` +( + `character_common_id` INTEGER NOT NULL, + `job` TINYINT NOT NULL, + `ability_id` INT NOT NULL, + `ability_lv` TINYINT NOT NULL, + PRIMARY KEY (`character_common_id`, `job`, `ability_id`), + CONSTRAINT `fk_learned_ability_character_common_id` FOREIGN KEY (`character_common_id`) REFERENCES `ddon_character_common` (`character_common_id`) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS `ddon_equipped_ability` @@ -330,9 +350,8 @@ CREATE TABLE IF NOT EXISTS `ddon_equipped_ability` `job` TINYINT NOT NULL, `slot_no` TINYINT NOT NULL, `ability_id` INT NOT NULL, - `ability_lv` TINYINT NOT NULL, PRIMARY KEY (`character_common_id`, `equipped_to_job`, `slot_no`), - CONSTRAINT `fk_set_acquirement_param_character_common_id` FOREIGN KEY (`character_common_id`) REFERENCES `ddon_character_common` (`character_common_id`) ON DELETE CASCADE + CONSTRAINT `fk_equipped_ability_character_common_id` FOREIGN KEY (`character_common_id`, `job`, `ability_id`) REFERENCES `ddon_learned_ability` (`character_common_id`, `job`, `ability_id`) ON DELETE CASCADE ); CREATE TABLE IF NOT EXISTS `ddon_shortcut` diff --git a/Arrowgene.Ddon.Database/IDatabase.cs b/Arrowgene.Ddon.Database/IDatabase.cs index 43611c61d..8f6f15a90 100644 --- a/Arrowgene.Ddon.Database/IDatabase.cs +++ b/Arrowgene.Ddon.Database/IDatabase.cs @@ -43,6 +43,7 @@ public interface IDatabase Pawn SelectPawn(uint pawnId); List SelectPawnsByCharacterId(uint characterId); bool DeletePawn(uint pawnId); + bool UpdatePawnBaseInfo(Pawn pawn); // CharacterJobData bool ReplaceCharacterJobData(uint commonId, CDataCharacterJobData replacedCharacterJobData); @@ -70,20 +71,30 @@ public interface IDatabase // Equip bool InsertEquipItem(uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId); + bool ReplaceEquipItem(uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId); bool UpdateEquipItem(uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId); bool DeleteEquipItem(uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId); + // Job Items + bool InsertEquipJobItem(string itemUId, uint commonId, JobId job, ushort slotNo); + bool ReplaceEquipJobItem(string itemUId, uint commonId, JobId job, ushort slotNo); + bool DeleteEquipJobItem(uint commonId, JobId job, ushort slotNo); + // CustomSkills - bool InsertEquippedCustomSkill(uint characterId, CustomSkill skill); - bool ReplaceEquippedCustomSkill(uint characterId, CustomSkill skill); - bool UpdateEquippedCustomSkill(uint characterId, JobId oldJob, byte oldSlotNo, CustomSkill skill); - bool DeleteEquippedCustomSkill(uint characterId, JobId job, byte slotNo); + bool InsertLearnedCustomSkill(uint commonId, CustomSkill skill); + bool UpdateLearnedCustomSkill(uint commonId, CustomSkill updatedSkill); + bool InsertEquippedCustomSkill(uint commonId, byte slotNo, CustomSkill skill); + bool ReplaceEquippedCustomSkill(uint commonId, byte slotNo, CustomSkill skill); + bool UpdateEquippedCustomSkill(uint commonId, JobId oldJob, byte oldSlotNo, byte slotNo, CustomSkill skill); + bool DeleteEquippedCustomSkill(uint commonId, JobId job, byte slotNo); // Abilities - bool InsertEquippedAbility(uint commonId, Ability skill); - bool ReplaceEquippedAbility(uint commonId, Ability skill); + bool InsertLearnedAbility(uint commonId, Ability ability); + bool UpdateLearnedAbility(uint commonId, Ability ability); + bool InsertEquippedAbility(uint commonId, JobId equipptedToJob, byte slotNo, Ability ability); + bool ReplaceEquippedAbility(uint commonId, JobId equipptedToJob, byte slotNo, Ability ability); bool ReplaceEquippedAbilities(uint commonId, JobId equippedToJob, List abilities); - bool UpdateEquippedAbility(uint commonId, JobId oldEquippedToJob, byte oldSlotNo, Ability skill); + bool UpdateEquippedAbility(uint commonId, JobId oldEquippedToJob, byte oldSlotNo, JobId equipptedToJob, byte slotNo, Ability ability); bool DeleteEquippedAbility(uint commonId, JobId equippedToJob, byte slotNo); bool DeleteEquippedAbilities(uint commonId, JobId equippedToJob); diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacter.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacter.cs index 2366d61d7..1f1099179 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacter.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacter.cs @@ -307,7 +307,7 @@ private void CreateItems(TCon conn, Character character) } // Create equipment items - foreach (KeyValuePair>> jobEquipment in character.Equipment.getAllEquipment()) + foreach (KeyValuePair>> jobEquipment in character.Equipment.GetAllEquipment()) { JobId job = jobEquipment.Key; foreach (KeyValuePair> equipment in jobEquipment.Value) diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacterCommon.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacterCommon.cs index 95e836ac5..411d5f6d8 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacterCommon.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbCharacterCommon.cs @@ -132,26 +132,32 @@ private void QueryCharacterCommonData(TCon conn, CharacterCommon common) if(reader2.Read()) { Item item = ReadItem(reader2); - common.Equipment.setEquipItem(item, job, equipType, equipSlot); + common.Equipment.SetEquipItem(item, job, equipType, equipSlot); } }); } }); // Job Items - ExecuteReader(conn, SqlSelectEquipJobItemByCharacter, + ExecuteReader(conn, SqlSelectEquipJobItemsByCharacter, command => { AddParameter(command, "@character_common_id", common.CommonId); }, reader => { while (reader.Read()) { + string UId = GetString(reader, "item_uid"); JobId job = (JobId) GetByte(reader, "job"); - CDataEquipJobItem equipJobItem = ReadEquipJobItem(reader); - if(!common.CharacterEquipJobItemListDictionary.ContainsKey(job)) - { - common.CharacterEquipJobItemListDictionary.Add(job, new List()); - } - common.CharacterEquipJobItemListDictionary[job].Add(equipJobItem); + byte equipSlot = GetByte(reader, "equip_slot"); + ExecuteReader(conn, SqlSelectItem, + command2 => { AddParameter(command2, "@uid", UId); }, + reader2 => + { + if(reader2.Read()) + { + Item item = ReadItem(reader2); + common.Equipment.SetJobItem(item, job, equipSlot); + } + }); } }); @@ -162,29 +168,58 @@ private void QueryCharacterCommonData(TCon conn, CharacterCommon common) { while (reader.Read()) { - common.NormalSkills.Add(ReadNormalSkillParam(reader)); + common.LearnedNormalSkills.Add(ReadNormalSkillParam(reader)); } }); // Custom Skills + ExecuteReader(conn, SqlSelectLearnedCustomSkills, + command => { AddParameter(command, "@character_common_id", common.CommonId); }, + reader => + { + while (reader.Read()) + { + common.LearnedCustomSkills.Add(ReadLearnedCustomSkill(reader)); + } + }); ExecuteReader(conn, SqlSelectEquippedCustomSkills, command => { AddParameter(command, "@character_common_id", common.CommonId); }, reader => { while (reader.Read()) { - common.CustomSkills.Add(ReadCustomSkill(reader)); + uint skillId = GetUInt32(reader, "skill_id"); + JobId job = (JobId) GetByte(reader, "job"); + CustomSkill skill = common.LearnedCustomSkills.Where(x => x.Job == job && x.SkillId == skillId).Single(); + + byte slotNo = GetByte(reader, "slot_no"); + common.EquippedCustomSkillsDictionary[job][slotNo-1] = skill; } }); // Abilities + ExecuteReader(conn, SqlSelectLearnedAbilities, + command => { AddParameter(command, "@character_common_id", common.CommonId); }, + reader => + { + while (reader.Read()) + { + common.LearnedAbilities.Add(ReadLearnedAbility(reader)); + } + }); ExecuteReader(conn, SqlSelectEquippedAbilities, command => { AddParameter(command, "@character_common_id", common.CommonId); }, reader => { while (reader.Read()) { - common.Abilities.Add(ReadAbility(reader)); + uint abilityId = GetUInt32(reader, "ability_id"); + JobId job = (JobId) GetByte(reader, "job"); + JobId equippedToJob = (JobId) GetByte(reader, "equipped_to_job"); + Ability aug = common.LearnedAbilities.Where(x => x.Job == job && x.AbilityId == abilityId).Single(); + + byte slotNo = GetByte(reader, "slot_no"); + common.EquippedAbilitiesDictionary[equippedToJob][slotNo-1] = aug; } }); } @@ -199,40 +234,62 @@ private void StoreCharacterCommonData(TCon conn, CharacterCommon common) }); } - foreach(KeyValuePair> characterEquipJobItemListByJob in common.CharacterEquipJobItemListDictionary) + foreach(CDataNormalSkillParam normalSkillParam in common.LearnedNormalSkills) { - foreach(CDataEquipJobItem equipJobItem in characterEquipJobItemListByJob.Value) + ExecuteNonQuery(conn, SqlReplaceNormalSkillParam, command => { - ExecuteNonQuery(conn, SqlReplaceEquipJobItem, command => - { - AddParameter(command, common.CommonId, characterEquipJobItemListByJob.Key, equipJobItem); - }); - } + AddParameter(command, common.CommonId, normalSkillParam); + }); } - foreach(CDataNormalSkillParam normalSkillParam in common.NormalSkills) + foreach(CustomSkill learnedSkills in common.LearnedCustomSkills) { - ExecuteNonQuery(conn, SqlReplaceNormalSkillParam, command => + ExecuteNonQuery(conn, SqlInsertLearnedCustomSkill, command => { - AddParameter(command, common.CommonId, normalSkillParam); + AddParameter(command, common.CommonId, learnedSkills); }); } - foreach(CustomSkill skill in common.CustomSkills) + foreach(KeyValuePair> jobAndSkills in common.EquippedCustomSkillsDictionary) { - ExecuteNonQuery(conn, SqlReplaceEquippedCustomSkill, command => + for(int i=0; i + { + AddParameter(command, common.CommonId, slotNo, skill); + }); + } + } } - foreach(Ability ability in common.Abilities) + foreach(Ability ability in common.LearnedAbilities) { - ExecuteNonQuery(conn, SqlReplaceEquippedAbility, command => + ExecuteNonQuery(conn, SqlInsertLearnedAbility, command => { AddParameter(command, common.CommonId, ability); }); } + + foreach(KeyValuePair> jobAndAugs in common.EquippedAbilitiesDictionary) + { + JobId equippedToJob = jobAndAugs.Key; + for(int i=0; i + { + AddParameter(command, common.CommonId, equippedToJob, slotNo, ability); + }); + } + } + } } private void ReadAllCharacterCommonData(DbDataReader reader, CharacterCommon common) diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipItem.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipItem.cs index fc887d61b..05c64b910 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipItem.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipItem.cs @@ -32,6 +32,19 @@ public bool InsertEquipItem(uint commonId, JobId job, EquipType equipType, byte return this.InsertEquipItem(null, commonId, job, equipType, equipSlot, itemUId); } + public bool ReplaceEquipItem(TCon conn, uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId) + { + return ExecuteNonQuery(conn, SqlReplaceEquipItem, command => + { + AddParameter(command, commonId, job, equipType, equipSlot, itemUId); + }) == 1; + } + + public bool ReplaceEquipItem(uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId) + { + return this.ReplaceEquipItem(null, commonId, job, equipType, equipSlot, itemUId); + } + public bool UpdateEquipItem(uint commonId, JobId job, EquipType equipType, byte equipSlot, string itemUId) { return ExecuteNonQuery(SqlUpdateEquipItem, command => diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipJobItem.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipJobItem.cs index 429218777..a090cf1a7 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipJobItem.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquipJobItem.cs @@ -1,5 +1,4 @@ using System.Data.Common; -using Arrowgene.Ddon.Shared.Entity.Structure; using Arrowgene.Ddon.Shared.Model; namespace Arrowgene.Ddon.Database.Sql.Core @@ -10,30 +9,56 @@ public abstract partial class DdonSqlDb : SqlDb { private static readonly string[] CDataEquipJobItemFields = new string[] { - "character_common_id", "job", "job_item_id", "equip_slot_no" + "item_uid", "character_common_id", "job", "equip_slot" }; private readonly string SqlInsertEquipJobItem = $"INSERT INTO `ddon_equip_job_item` ({BuildQueryField(CDataEquipJobItemFields)}) VALUES ({BuildQueryInsert(CDataEquipJobItemFields)});"; private readonly string SqlReplaceEquipJobItem = $"INSERT OR REPLACE INTO `ddon_equip_job_item` ({BuildQueryField(CDataEquipJobItemFields)}) VALUES ({BuildQueryInsert(CDataEquipJobItemFields)});"; - private static readonly string SqlUpdateEquipJobItem = $"UPDATE `ddon_equip_job_item` SET {BuildQueryUpdate(CDataEquipJobItemFields)} WHERE `character_common_id` = @character_common_id AND `job` = @job AND `equip_slot_no`=@equip_slot_no;"; - private static readonly string SqlSelectEquipJobItem = $"SELECT {BuildQueryField(CDataEquipJobItemFields)} FROM `ddon_equip_job_item` WHERE `character_common_id` = @character_common_id AND `job` = @job;"; - private static readonly string SqlSelectEquipJobItemByCharacter = $"SELECT {BuildQueryField(CDataEquipJobItemFields)} FROM `ddon_equip_job_item` WHERE `character_common_id` = @character_common_id;"; - private const string SqlDeleteEquipJobItem = "DELETE FROM `ddon_equip_job_item` WHERE `character_common_id`=@character_common_id AND `job`=@job AND `equip_slot_no`=@equip_slot_no;"; + private static readonly string SqlUpdateEquipJobItem = $"UPDATE `ddon_equip_job_item` SET {BuildQueryUpdate(CDataEquipJobItemFields)} WHERE `character_common_id` = @character_common_id AND `job` = @job AND `equip_slot`=@equip_slot;"; + private static readonly string SqlSelectEquipJobItems = $"SELECT {BuildQueryField(CDataEquipJobItemFields)} FROM `ddon_equip_job_item` WHERE `character_common_id` = @character_common_id AND `job` = @job;"; + private static readonly string SqlSelectEquipJobItemsByCharacter = $"SELECT {BuildQueryField(CDataEquipJobItemFields)} FROM `ddon_equip_job_item` WHERE `character_common_id` = @character_common_id;"; + private const string SqlDeleteEquipJobItem = "DELETE FROM `ddon_equip_job_item` WHERE `character_common_id`=@character_common_id AND `job`=@job AND `equip_slot`=@equip_slot;"; - private CDataEquipJobItem ReadEquipJobItem(DbDataReader reader) + public bool InsertEquipJobItem(TCon conn, string itemUId, uint commonId, JobId job, ushort slotNo) { - CDataEquipJobItem equipJobItem = new CDataEquipJobItem(); - equipJobItem.JobItemId = GetUInt32(reader, "job_item_id"); - equipJobItem.EquipSlotNo = GetByte(reader, "equip_slot_no"); - return equipJobItem; + return ExecuteNonQuery(conn, SqlInsertEquipJobItem, command => + { + AddParameter(command, "item_uid", itemUId); + AddParameter(command, "character_common_id", commonId); + AddParameter(command, "job", (byte) job); + AddParameter(command, "equip_slot", slotNo); + }) == 1; } - private void AddParameter(TCom command, uint commonId, JobId job, CDataEquipJobItem equipJobItem) + public bool InsertEquipJobItem(string itemUId, uint commonId, JobId job, ushort slotNo) { - AddParameter(command, "character_common_id", commonId); - AddParameter(command, "job", (byte) job); - AddParameter(command, "job_item_id", equipJobItem.JobItemId); - AddParameter(command, "equip_slot_no", equipJobItem.EquipSlotNo); + return InsertEquipJobItem(null, itemUId, commonId, job, slotNo); + } + + public bool ReplaceEquipJobItem(TCon conn, string itemUId, uint commonId, JobId job, ushort slotNo) + { + return ExecuteNonQuery(conn, SqlReplaceEquipJobItem, command => + { + AddParameter(command, "item_uid", itemUId); + AddParameter(command, "character_common_id", commonId); + AddParameter(command, "job", (byte) job); + AddParameter(command, "equip_slot", slotNo); + }) == 1; + } + + public bool ReplaceEquipJobItem(string itemUId, uint commonId, JobId job, ushort slotNo) + { + return ReplaceEquipJobItem(null, itemUId, commonId, job, slotNo); + } + + public bool DeleteEquipJobItem(uint commonId, JobId job, ushort slotNo) + { + return ExecuteNonQuery(SqlDeleteEquipJobItem, command => + { + AddParameter(command, "character_common_id", commonId); + AddParameter(command, "job", (byte) job); + AddParameter(command, "equip_slot", slotNo); + }) == 1; } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedAbility.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedAbility.cs index 192ef2060..74849e564 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedAbility.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedAbility.cs @@ -10,7 +10,7 @@ public abstract partial class DdonSqlDb : SqlDb { private static readonly string[] EquippedAbilityFields = new string[] { - "character_common_id", "equipped_to_job", "job", "slot_no", "ability_id", "ability_lv" + "character_common_id", "equipped_to_job", "job", "slot_no", "ability_id" }; private readonly string SqlInsertEquippedAbility = $"INSERT INTO `ddon_equipped_ability` ({BuildQueryField(EquippedAbilityFields)}) VALUES ({BuildQueryInsert(EquippedAbilityFields)});"; @@ -20,19 +20,19 @@ public abstract partial class DdonSqlDb : SqlDb private const string SqlDeleteEquippedAbility = "DELETE FROM `ddon_equipped_ability` WHERE `character_common_id`=@character_common_id AND `equipped_to_job`=@equipped_to_job AND `slot_no`=@slot_no;"; private const string SqlDeleteEquippedAbilities = "DELETE FROM `ddon_equipped_ability` WHERE `character_common_id`=@character_common_id AND `equipped_to_job`=@equipped_to_job;"; - public bool InsertEquippedAbility(uint commonId, Ability ability) + public bool InsertEquippedAbility(uint commonId, JobId equippedToJob, byte slotNo, Ability ability) { return ExecuteNonQuery(SqlInsertEquippedAbility, command => { - AddParameter(command, commonId, ability); + AddParameter(command, commonId, equippedToJob, slotNo, ability); }) == 1; } - public bool ReplaceEquippedAbility(uint commonId, Ability ability) + public bool ReplaceEquippedAbility(uint commonId, JobId equippedToJob, byte slotNo, Ability ability) { ExecuteNonQuery(SqlReplaceEquippedAbility, command => { - AddParameter(command, commonId, ability); + AddParameter(command, commonId, equippedToJob, slotNo, ability); }); return true; } @@ -49,21 +49,23 @@ public bool ReplaceEquippedAbilities(uint commonId, JobId equippedToJob, List { - AddParameter(command, commonId, ability); + AddParameter(command, commonId, equippedToJob, slotNo, ability); }); } }); } - public bool UpdateEquippedAbility(uint commonId, JobId oldEquippedToJob, byte oldSlotNo, Ability updatedability) + public bool UpdateEquippedAbility(uint commonId, JobId oldEquippedToJob, byte oldSlotNo, JobId equippedToJob, byte slotNo, Ability updatedability) { return ExecuteNonQuery(SqlDeleteEquippedAbility, command => { - AddParameter(command, commonId, updatedability); + AddParameter(command, commonId, equippedToJob, slotNo, updatedability); AddParameter(command, "@old_character_common_id", commonId); AddParameter(command, "@old_equipped_to_job", (byte) oldEquippedToJob); AddParameter(command, "@old_slot_no", oldSlotNo); @@ -89,23 +91,12 @@ public bool DeleteEquippedAbilities(uint commonId, JobId equippedToJob) }) == 1; } - private Ability ReadAbility(DbDataReader reader) - { - Ability ability = new Ability(); - ability.EquippedToJob = (JobId) GetByte(reader, "equipped_to_job"); - ability.Job = (JobId) GetByte(reader, "job"); - ability.SlotNo = GetByte(reader, "slot_no"); - ability.AbilityId = GetUInt32(reader, "ability_id"); - ability.AbilityLv = GetByte(reader, "ability_lv"); - return ability; - } - - private void AddParameter(TCom command, uint commonId, Ability ability) + private void AddParameter(TCom command, uint commonId, JobId equippedToJob, byte slotNo, Ability ability) { AddParameter(command, "character_common_id", commonId); - AddParameter(command, "equipped_to_job", (byte) ability.EquippedToJob); + AddParameter(command, "equipped_to_job", (byte) equippedToJob); AddParameter(command, "job", (byte) ability.Job); - AddParameter(command, "slot_no", ability.SlotNo); + AddParameter(command, "slot_no", slotNo); AddParameter(command, "ability_id", ability.AbilityId); AddParameter(command, "ability_lv", ability.AbilityLv); } diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedCustomSkill.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedCustomSkill.cs index e11a6f983..1fdbe3e00 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedCustomSkill.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbEquippedCustomSkill.cs @@ -9,7 +9,7 @@ public abstract partial class DdonSqlDb : SqlDb { private static readonly string[] EquippedCustomSkillFields = new string[] { - "character_common_id", "job", "slot_no", "skill_id", "skill_lv" + "character_common_id", "job", "slot_no", "skill_id" }; private readonly string SqlInsertEquippedCustomSkill = $"INSERT INTO `ddon_equipped_custom_skill` ({BuildQueryField(EquippedCustomSkillFields)}) VALUES ({BuildQueryInsert(EquippedCustomSkillFields)});"; @@ -18,24 +18,24 @@ public abstract partial class DdonSqlDb : SqlDb private static readonly string SqlSelectEquippedCustomSkills = $"SELECT {BuildQueryField(EquippedCustomSkillFields)} FROM `ddon_equipped_custom_skill` WHERE `character_common_id`=@character_common_id;"; private const string SqlDeleteEquippedCustomSkill = "DELETE FROM `ddon_equipped_custom_skill` WHERE `character_common_id`=@character_common_id AND `job`=@job AND `slot_no`=@slot_no;"; - public bool InsertEquippedCustomSkill(uint commonId, CustomSkill skill) + public bool InsertEquippedCustomSkill(uint commonId, byte slotNo, CustomSkill skill) { return ExecuteNonQuery(SqlInsertEquippedCustomSkill, command => { - AddParameter(command, commonId, skill); + AddParameter(command, commonId, slotNo, skill); }) == 1; } - public bool ReplaceEquippedCustomSkill(uint commonId, CustomSkill skill) + public bool ReplaceEquippedCustomSkill(uint commonId, byte slotNo, CustomSkill skill) { ExecuteNonQuery(SqlReplaceEquippedCustomSkill, command => { - AddParameter(command, commonId, skill); + AddParameter(command, commonId, slotNo, skill); }); return true; } - public bool UpdateEquippedCustomSkill(uint commonId, JobId oldJob, byte oldSlotNo, CustomSkill updatedSkill) + public bool UpdateEquippedCustomSkill(uint commonId, JobId oldJob, byte oldSlotNo, byte slotNo, CustomSkill updatedSkill) { return ExecuteNonQuery(SqlDeleteEquippedCustomSkill, command => { @@ -56,23 +56,12 @@ public bool DeleteEquippedCustomSkill(uint commonId, JobId job, byte slotNo) }) == 1; } - private CustomSkill ReadCustomSkill(DbDataReader reader) - { - CustomSkill skill = new CustomSkill(); - skill.Job = (JobId) GetByte(reader, "job"); - skill.SlotNo = GetByte(reader, "slot_no"); - skill.SkillId = GetUInt32(reader, "skill_id"); - skill.SkillLv = GetByte(reader, "skill_lv"); - return skill; - } - - private void AddParameter(TCom command, uint commonId, CustomSkill skill) + private void AddParameter(TCom command, uint commonId, byte slotNo, CustomSkill skill) { AddParameter(command, "character_common_id", commonId); AddParameter(command, "job", (byte) skill.Job); - AddParameter(command, "slot_no", skill.SlotNo); + AddParameter(command, "slot_no", slotNo); AddParameter(command, "skill_id", skill.SkillId); - AddParameter(command, "skill_lv", skill.SkillLv); } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbLearnedAbility.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbLearnedAbility.cs new file mode 100644 index 000000000..2a0c06e11 --- /dev/null +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbLearnedAbility.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using System.Data.Common; +using Arrowgene.Ddon.Shared.Model; + +namespace Arrowgene.Ddon.Database.Sql.Core +{ + public abstract partial class DdonSqlDb : SqlDb + where TCon : DbConnection + where TCom : DbCommand + { + + private static readonly string[] LearnedAbilityFields = new string[] + { + "character_common_id", "job", "ability_id", "ability_lv" + }; + + private readonly string SqlInsertLearnedAbility = $"INSERT INTO `ddon_learned_ability` ({BuildQueryField(LearnedAbilityFields)}) VALUES ({BuildQueryInsert(LearnedAbilityFields)});"; + private readonly string SqlUpdateLearnedAbility = $"UPDATE `ddon_learned_ability` SET {BuildQueryUpdate(LearnedAbilityFields)} WHERE `character_common_id`=@character_common_id AND `job`=@job AND `ability_id`=@ability_id;"; + private static readonly string SqlSelectLearnedAbilities = $"SELECT {BuildQueryField(LearnedAbilityFields)} FROM `ddon_learned_ability` WHERE `character_common_id`=@character_common_id;"; + + public bool InsertLearnedAbility(uint commonId, Ability ability) + { + ExecuteNonQuery(SqlInsertLearnedAbility, command => + { + AddParameter(command, commonId, ability); + }); + return true; + } + + public bool UpdateLearnedAbility(uint commonId, Ability ability) + { + ExecuteNonQuery(SqlUpdateLearnedAbility, command => + { + AddParameter(command, commonId, ability); + }); + return true; + } + + private Ability ReadLearnedAbility(DbDataReader reader) + { + Ability ability = new Ability(); + ability.Job = (JobId) GetByte(reader, "job"); + ability.AbilityId = GetUInt32(reader, "ability_id"); + ability.AbilityLv = GetByte(reader, "ability_lv"); + return ability; + } + + private void AddParameter(TCom command, uint commonId, Ability ability) + { + AddParameter(command, "character_common_id", commonId); + AddParameter(command, "job", (byte) ability.Job); + AddParameter(command, "ability_id", ability.AbilityId); + AddParameter(command, "ability_lv", ability.AbilityLv); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbLearnedCustomSkill.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbLearnedCustomSkill.cs new file mode 100644 index 000000000..6b86fed91 --- /dev/null +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbLearnedCustomSkill.cs @@ -0,0 +1,54 @@ +using System.Data.Common; +using Arrowgene.Ddon.Shared.Model; + +namespace Arrowgene.Ddon.Database.Sql.Core +{ + public abstract partial class DdonSqlDb : SqlDb + where TCon : DbConnection + where TCom : DbCommand + { + private static readonly string[] LearnedCustomSkillFields = new string[] + { + "character_common_id", "job", "skill_id", "skill_lv" + }; + + private readonly string SqlInsertLearnedCustomSkill = $"INSERT INTO `ddon_learned_custom_skill` ({BuildQueryField(LearnedCustomSkillFields)}) VALUES ({BuildQueryInsert(LearnedCustomSkillFields)});"; + private readonly string SqlUpdateLearnedCustomSkill = $"UPDATE `ddon_learned_custom_skill` SET {BuildQueryUpdate(LearnedCustomSkillFields)} WHERE `character_common_id`=@character_common_id AND `job`=@job AND `skill_id`=@skill_id;"; + private static readonly string SqlSelectLearnedCustomSkills = $"SELECT {BuildQueryField(LearnedCustomSkillFields)} FROM `ddon_learned_custom_skill` WHERE `character_common_id`=@character_common_id;"; + + public bool InsertLearnedCustomSkill(uint commonId, CustomSkill skill) + { + ExecuteNonQuery(SqlInsertLearnedCustomSkill, command => + { + AddParameter(command, commonId, skill); + }); + return true; + } + + public bool UpdateLearnedCustomSkill(uint commonId, CustomSkill updatedSkill) + { + ExecuteNonQuery(SqlUpdateLearnedCustomSkill, command => + { + AddParameter(command, commonId, updatedSkill); + }); + return true; + } + + private CustomSkill ReadLearnedCustomSkill(DbDataReader reader) + { + CustomSkill skill = new CustomSkill(); + skill.Job = (JobId) GetByte(reader, "job"); + skill.SkillId = GetUInt32(reader, "skill_id"); + skill.SkillLv = GetByte(reader, "skill_lv"); + return skill; + } + + private void AddParameter(TCom command, uint commonId, CustomSkill skill) + { + AddParameter(command, "character_common_id", commonId); + AddParameter(command, "job", (byte) skill.Job); + AddParameter(command, "skill_id", skill.SkillId); + AddParameter(command, "skill_lv", skill.SkillLv); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbPawn.cs b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbPawn.cs index f122677f6..9f60f434b 100644 --- a/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbPawn.cs +++ b/Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbPawn.cs @@ -117,6 +117,21 @@ public bool DeletePawn(uint pawnId) return rowsAffected > NoRowsAffected; } + public bool UpdatePawnBaseInfo(Pawn pawn) + { + return UpdatePawnBaseInfo(null, pawn); + } + + public bool UpdatePawnBaseInfo(TCon conn, Pawn pawn) + { + int characterUpdateRowsAffected = ExecuteNonQuery(conn, SqlUpdatePawn, command => + { + AddParameter(command, pawn); + }); + + return characterUpdateRowsAffected > NoRowsAffected; + } + private void QueryPawnData(TCon conn, Pawn pawn) { QueryCharacterCommonData(conn, pawn); @@ -166,7 +181,7 @@ private void StorePawnData(TCon conn, Pawn pawn) private void CreateItems(TCon conn, Pawn pawn) { // Create equipment items - foreach (KeyValuePair>> jobEquipment in pawn.Equipment.getAllEquipment()) + foreach (KeyValuePair>> jobEquipment in pawn.Equipment.GetAllEquipment()) { JobId job = jobEquipment.Key; foreach (KeyValuePair> equipment in jobEquipment.Value) diff --git a/Arrowgene.Ddon.GameServer/Characters/EquipManager.cs b/Arrowgene.Ddon.GameServer/Characters/EquipManager.cs index 5416fad65..e01636542 100644 --- a/Arrowgene.Ddon.GameServer/Characters/EquipManager.cs +++ b/Arrowgene.Ddon.GameServer/Characters/EquipManager.cs @@ -1,7 +1,7 @@ +#nullable enable using System; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; using Arrowgene.Ddon.Server.Network; using Arrowgene.Ddon.Shared.Entity.PacketStructure; using Arrowgene.Ddon.Shared.Entity.Structure; @@ -11,13 +11,68 @@ namespace Arrowgene.Ddon.GameServer.Characters { public class EquipManager { - public void HandleChangeEquipList(DdonGameServer server, GameClient client, CharacterCommon characterToEquipTo, List changeCharacterEquipList, ushort updateType, StorageType storageType, Action sendResponse) + public void EquipJobItem(DdonGameServer server, GameClient client, CharacterCommon characterToEquipTo, List changeEquipJobItems) { - // This'll contain all actions to be run after processing all CDataCharacterEquipInfo in the request packet - List deferredActions = new List(); + foreach (CDataChangeEquipJobItem changeEquipJobItem in changeEquipJobItems) + { + if(changeEquipJobItem.EquipJobItemUId.Length == 0) + { + // UNEQUIP + // Remove from equipment + characterToEquipTo.Equipment.SetJobItem(null, characterToEquipTo.Job, changeEquipJobItem.EquipSlotNo); + server.Database.DeleteEquipJobItem(characterToEquipTo.CommonId, characterToEquipTo.Job, changeEquipJobItem.EquipSlotNo); + } + else + { + // EQUIP + Item item = server.Database.SelectItem(changeEquipJobItem.EquipJobItemUId); + characterToEquipTo.Equipment.SetJobItem(item, characterToEquipTo.Job, changeEquipJobItem.EquipSlotNo); + server.Database.ReplaceEquipJobItem(item.UId, characterToEquipTo.CommonId, characterToEquipTo.Job, changeEquipJobItem.EquipSlotNo); + } + } + + // Send packets informing of the update + List equippedJobItems = characterToEquipTo.Equipment.getJobItemsAsCDataEquipJobItem(characterToEquipTo.Job); + if(characterToEquipTo is Character character) + { + client.Send(new S2CEquipChangeCharacterEquipJobItemRes() + { + EquipJobItemList = equippedJobItems + }); + + client.Party.SendToAll(new S2CEquipChangeCharacterEquipJobItemNtc() + { + CharacterId = character.CharacterId, + EquipJobItemList = equippedJobItems + }); + } + else if (characterToEquipTo is Pawn pawn) + { + client.Send(new S2CEquipChangePawnEquipJobItemRes() + { + PawnId = pawn.PawnId, + EquipJobItemList = equippedJobItems + }); + + client.Party.SendToAll(new S2CEquipChangePawnEquipJobItemNtc() + { + CharacterId = client.Character.CharacterId, + PawnId = pawn.PawnId, + EquipJobItemList = equippedJobItems + }); + } + else + { + throw new Exception("Unknown character type"); + } + } - S2CItemUpdateCharacterItemNtc updateCharacterIemNtc = new S2CItemUpdateCharacterItemNtc(); - updateCharacterIemNtc.UpdateType = updateType; + public void HandleChangeEquipList(DdonGameServer server, GameClient client, CharacterCommon characterToEquipTo, List changeCharacterEquipList, ushort updateType, StorageType storageType, Action sendResponse) + { + S2CItemUpdateCharacterItemNtc updateCharacterItemNtc = new() + { + UpdateType = updateType + }; foreach (CDataCharacterEquipInfo changeCharacterEquipInfo in changeCharacterEquipList) { @@ -26,15 +81,15 @@ public void HandleChangeEquipList(DdonGameServer server, GameClient client, Char byte equipSlot = changeCharacterEquipInfo.EquipCategory; uint characterId, pawnId; - if(characterToEquipTo is Character) + if(characterToEquipTo is Character character1) { - characterId = ((Character) characterToEquipTo).CharacterId; + characterId = character1.CharacterId; pawnId = 0; } - else if(characterToEquipTo is Pawn) + else if(characterToEquipTo is Pawn pawn) { - characterId = ((Pawn) characterToEquipTo).CharacterId; - pawnId = ((Pawn) characterToEquipTo).PawnId; + characterId = pawn.CharacterId; + pawnId = pawn.PawnId; } else { @@ -43,22 +98,22 @@ public void HandleChangeEquipList(DdonGameServer server, GameClient client, Char if(itemUId.Length == 0) { - this.UnequipItem(server, client, characterToEquipTo, updateCharacterIemNtc, equipType, equipSlot, storageType, characterId, pawnId); + this.UnequipItem(server, client, characterToEquipTo, updateCharacterItemNtc, equipType, equipSlot, storageType, characterId, pawnId); } else { - this.EquipItem(server, client, characterToEquipTo, updateCharacterIemNtc, equipType, equipSlot, storageType, itemUId, characterId, pawnId); + this.EquipItem(server, client, characterToEquipTo, updateCharacterItemNtc, equipType, equipSlot, storageType, itemUId, characterId, pawnId); } } sendResponse.Invoke(); // Notify other players - if(characterToEquipTo is Character) + if(characterToEquipTo is Character character) { S2CEquipChangeCharacterEquipNtc changeCharacterEquipNtc = new S2CEquipChangeCharacterEquipNtc() { - CharacterId = ((Character) characterToEquipTo).CharacterId, + CharacterId = character.CharacterId, EquipItemList = characterToEquipTo.Equipment.getEquipmentAsCDataEquipItemInfo(characterToEquipTo.Job, EquipType.Performance), VisualEquipItemList = characterToEquipTo.Equipment.getEquipmentAsCDataEquipItemInfo(characterToEquipTo.Job, EquipType.Visual) // TODO: Unk0 @@ -69,12 +124,12 @@ public void HandleChangeEquipList(DdonGameServer server, GameClient client, Char otherClient.Send(changeCharacterEquipNtc); } } - else if(characterToEquipTo is Pawn) + else if(characterToEquipTo is Pawn pawn) { S2CEquipChangePawnEquipNtc changePawnEquipNtc = new S2CEquipChangePawnEquipNtc() { - CharacterId = ((Pawn) characterToEquipTo).CharacterId, - PawnId = ((Pawn) characterToEquipTo).PawnId, + CharacterId = pawn.CharacterId, + PawnId = pawn.PawnId, EquipItemList = characterToEquipTo.Equipment.getEquipmentAsCDataEquipItemInfo(characterToEquipTo.Job, EquipType.Performance), VisualEquipItemList = characterToEquipTo.Equipment.getEquipmentAsCDataEquipItemInfo(characterToEquipTo.Job, EquipType.Visual) // TODO: Unk0 @@ -86,15 +141,15 @@ public void HandleChangeEquipList(DdonGameServer server, GameClient client, Char } } - client.Send(updateCharacterIemNtc); + client.Send(updateCharacterItemNtc); } private void UnequipItem(DdonGameServer server, GameClient client, CharacterCommon characterToEquipTo, S2CItemUpdateCharacterItemNtc updateCharacterItemNtc, EquipType equipType, byte equipSlot, StorageType storageType, uint characterId, uint pawnId) { // Find in equipment the item to unequip - Item item = characterToEquipTo.Equipment.getEquipItem(characterToEquipTo.Job, equipType, equipSlot); + Item item = characterToEquipTo.Equipment.GetEquipItem(characterToEquipTo.Job, equipType, equipSlot) ?? throw new Exception("No item found in this slot"); - characterToEquipTo.Equipment.setEquipItem(null, characterToEquipTo.Job, equipType, equipSlot); + characterToEquipTo.Equipment.SetEquipItem(null, characterToEquipTo.Job, equipType, equipSlot); server.Database.DeleteEquipItem(characterToEquipTo.CommonId, characterToEquipTo.Job, equipType, equipSlot, item.UId); ushort dstSlotNo = client.Character.Storage.addStorageItem(item, 1, storageType); @@ -142,69 +197,112 @@ private void UnequipItem(DdonGameServer server, GameClient client, CharacterComm }); } - private void EquipItem(DdonGameServer server, GameClient client, CharacterCommon characterToEquipTo, S2CItemUpdateCharacterItemNtc updateCharacterItemNtc, EquipType equipType, byte equipSlot, StorageType srcStorageType, string itemUId, uint characterId, uint pawnId) + private void EquipItem(DdonGameServer server, GameClient client, CharacterCommon characterToEquipTo, S2CItemUpdateCharacterItemNtc updateCharacterItemNtc, EquipType equipType, byte equipSlot, StorageType storageType, string itemUId, uint characterId, uint pawnId) { // Find in the bag the item to equip - var tuple = client.Character.Storage.getStorage(srcStorageType).Items - .Select((item, index) => new {item = item, slot = (ushort) (index+1)}) + var tuple = client.Character.Storage.getStorage(storageType).Items + .Select((item, index) => new { item, slot = (ushort) (index+1)}) .Where(tuple => tuple.item?.Item1.UId == itemUId) .First(); - Item item = tuple.item.Item1; - uint itemNum = tuple.item.Item2; - ushort srcSlotNo = tuple.slot; + Item itemToEquip = tuple.item!.Item1; + uint itemToEquipNum = tuple.item.Item2; + ushort storageSlotNo = tuple.slot; + + Item? previouslyEquippedItem = characterToEquipTo.Equipment.GetEquipItem(characterToEquipTo.Job, equipType, equipSlot); + + characterToEquipTo.Equipment.SetEquipItem(itemToEquip, characterToEquipTo.Job, equipType, equipSlot); + server.Database.ReplaceEquipItem(characterToEquipTo.CommonId, characterToEquipTo.Job, equipType, equipSlot, itemToEquip.UId); - Item itemInSlot = characterToEquipTo.Equipment.getEquipItem(characterToEquipTo.Job, (EquipType) equipType, equipSlot); - if(itemInSlot != null) + if(previouslyEquippedItem != null) { - // When equipping over an already equipped slot, unequip item first - this.UnequipItem(server, client, characterToEquipTo, updateCharacterItemNtc, equipType, equipSlot, srcStorageType, characterId, pawnId); + // When equipping over an already equipped slot, move item in that slot to storage + client.Character.Storage.setStorageItem(previouslyEquippedItem, 1, storageType, storageSlotNo); + server.Database.ReplaceStorageItem(client.Character.CharacterId, storageType, storageSlotNo, previouslyEquippedItem.UId, 1); + updateCharacterItemNtc.UpdateItemList.Add(new CDataItemUpdateResult() { + UpdateItemNum = 0, + ItemList = new CDataItemList() { + ItemUId = previouslyEquippedItem.UId, + ItemId = previouslyEquippedItem.ItemId, + ItemNum = 0, + Unk3 = previouslyEquippedItem.Unk3, + StorageType = StorageType.Unk14, + SlotNo = 1, + Color = previouslyEquippedItem.Color, + PlusValue = previouslyEquippedItem.PlusValue, + Bind = true, + EquipPoint = 0, + EquipCharacterID = characterId, + EquipPawnID = pawnId, + WeaponCrestDataList = previouslyEquippedItem.WeaponCrestDataList, + ArmorCrestDataList = previouslyEquippedItem.ArmorCrestDataList, + EquipElementParamList = previouslyEquippedItem.EquipElementParamList + } + }); + updateCharacterItemNtc.UpdateItemList.Add(new CDataItemUpdateResult() { + UpdateItemNum = 1, + ItemList = new CDataItemList() { + ItemUId = previouslyEquippedItem.UId, + ItemId = previouslyEquippedItem.ItemId, + ItemNum = 1, + Unk3 = previouslyEquippedItem.Unk3, + StorageType = storageType, + SlotNo = storageSlotNo, + Color = previouslyEquippedItem.Color, + PlusValue = previouslyEquippedItem.PlusValue, + Bind = true, + EquipPoint = 0, + EquipCharacterID = 0, + EquipPawnID = 0, + WeaponCrestDataList = previouslyEquippedItem.WeaponCrestDataList, + ArmorCrestDataList = previouslyEquippedItem.ArmorCrestDataList, + EquipElementParamList = previouslyEquippedItem.EquipElementParamList + } + }); + } + else + { + client.Character.Storage.setStorageItem(null, 0, storageType, storageSlotNo); + server.Database.DeleteStorageItem(client.Character.CharacterId, storageType, storageSlotNo); } - - characterToEquipTo.Equipment.setEquipItem(item, characterToEquipTo.Job, (EquipType) equipType, equipSlot); - server.Database.InsertEquipItem(characterToEquipTo.CommonId, characterToEquipTo.Job, equipType, equipSlot, item.UId); - - // Find slot from which the item will be taken - client.Character.Storage.setStorageItem(null, 0, srcStorageType, tuple.slot); - server.Database.DeleteStorageItem(client.Character.CharacterId, srcStorageType, tuple.slot); updateCharacterItemNtc.UpdateItemList.Add(new CDataItemUpdateResult() { UpdateItemNum = 0, // TODO: ? ItemList = new CDataItemList() { - ItemUId = item.UId, - ItemId = item.ItemId, + ItemUId = itemToEquip.UId, + ItemId = itemToEquip.ItemId, ItemNum = 0, - Unk3 = item.Unk3, - StorageType = srcStorageType, - SlotNo = srcSlotNo, - Color = item.Color, - PlusValue = item.PlusValue, + Unk3 = itemToEquip.Unk3, + StorageType = storageType, + SlotNo = storageSlotNo, + Color = itemToEquip.Color, + PlusValue = itemToEquip.PlusValue, Bind = true, EquipPoint = 0, EquipCharacterID = characterId, EquipPawnID = pawnId, - WeaponCrestDataList = item.WeaponCrestDataList, - ArmorCrestDataList = item.ArmorCrestDataList, - EquipElementParamList = item.EquipElementParamList + WeaponCrestDataList = itemToEquip.WeaponCrestDataList, + ArmorCrestDataList = itemToEquip.ArmorCrestDataList, + EquipElementParamList = itemToEquip.EquipElementParamList } }); updateCharacterItemNtc.UpdateItemList.Add(new CDataItemUpdateResult() { UpdateItemNum = 1, ItemList = new CDataItemList() { - ItemUId = item.UId, - ItemId = item.ItemId, + ItemUId = itemToEquip.UId, + ItemId = itemToEquip.ItemId, ItemNum = 1, - Unk3 = item.Unk3, + Unk3 = itemToEquip.Unk3, StorageType = StorageType.Unk14, SlotNo = 1, - Color = item.Color, - PlusValue = item.PlusValue, + Color = itemToEquip.Color, + PlusValue = itemToEquip.PlusValue, Bind = true, EquipPoint = 0, EquipCharacterID = characterId, EquipPawnID = pawnId, - WeaponCrestDataList = item.WeaponCrestDataList, - ArmorCrestDataList = item.ArmorCrestDataList, - EquipElementParamList = item.EquipElementParamList + WeaponCrestDataList = itemToEquip.WeaponCrestDataList, + ArmorCrestDataList = itemToEquip.ArmorCrestDataList, + EquipElementParamList = itemToEquip.EquipElementParamList } }); } diff --git a/Arrowgene.Ddon.GameServer/Characters/ExpManager.cs b/Arrowgene.Ddon.GameServer/Characters/ExpManager.cs index e9ad4ff41..d29d0d6ba 100644 --- a/Arrowgene.Ddon.GameServer/Characters/ExpManager.cs +++ b/Arrowgene.Ddon.GameServer/Characters/ExpManager.cs @@ -1,24 +1,32 @@ -using System.Linq; +#nullable enable +using System; using System.Collections.Generic; using Arrowgene.Ddon.Database; using Arrowgene.Ddon.Shared.Entity.PacketStructure; using Arrowgene.Ddon.Shared.Entity.Structure; using Arrowgene.Ddon.Shared.Model; -using System; +using Arrowgene.Ddon.Server; +using Arrowgene.Logging; namespace Arrowgene.Ddon.GameServer.Characters { - struct JobLevelUp + struct BaseStats { public ushort Lv; public ushort Atk; + public double AtkRate; public ushort Def; + public double DefRate; public ushort MAtk; + public double MAtkRate; public ushort MDef; + public double MDefRate; } public class ExpManager { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(ExpManager)); + private static readonly byte LV_CAP = 120; // E.g. EXP_UNTIL_NEXT_LV[3] = 800, meaning as Lv 3 you need 800 exp to level to Lv 4 @@ -144,1771 +152,181 @@ public class ExpManager /* Lv 118 */ 5000000, /* Lv 119 */ 5000000, }; + + // E.g. LEVEL_UP_JOB_POINTS_EARNED[3] = 300, meaning you earn 300 JP when you reach Lv 3 + public static readonly uint[] LEVEL_UP_JOB_POINTS_EARNED = new uint[] {0,200,200,300,300,400,400,500,600,700,700,800,1000,1200,1400,1600,1800,2000,2300,2600,2900,3300,3500,3800,3800,4000,4000,4500,4500,5000,5000,5500,5800,5800,6500,6500,6800,6800,8000,8000,9000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,10000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; - private static readonly Dictionary LEVEL_UP_TABLE = new Dictionary() + // Growth sources: https://wiki.famitsu.com/dd-online/%E3%82%B8%E3%83%A7%E3%83%96/%E3%83%95%E3%82%A1%E3%82%A4%E3%82%BF%E3%83%BC + private static readonly Dictionary BASE_STATS_TABLE = new Dictionary() { { + // Fighter growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 120(base lv1) +1.2 / Magi Atk 20(base lv1) +2 / Magi Def 83(base lv1) +0.8 / Blow 25(base lv1) +0 JobId.Fighter, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0, - }, - new JobLevelUp() { - Lv = 9, - Atk = 40, - Def = 30, - MAtk = 20, - MDef = 20, - }, - new JobLevelUp() { - Lv = 19, - Atk = 80, - Def = 70, - MAtk = 40, - MDef = 30, - }, - new JobLevelUp() { - Lv = 29, - Atk = 120, - Def = 110, - MAtk = 60, - MDef = 40, - }, - new JobLevelUp() { - Lv = 39, - Atk = 160, - Def = 150, - MAtk = 80, - MDef = 50, - }, - new JobLevelUp() { - Lv = 49, - Atk = 200, - Def = 190, - MAtk = 100, - MDef = 60, - }, - new JobLevelUp() { - Lv = 59, - Atk = 240, - Def = 230, - MAtk = 120, - MDef = 70, - }, - new JobLevelUp() { - Lv = 69, - Atk = 280, - Def = 270, - MAtk = 140, - MDef = 80, - }, - new JobLevelUp() { - Lv = 79, - Atk = 320, - Def = 310, - MAtk = 160, - MDef = 90, - }, - new JobLevelUp() { - Lv = 89, - Atk = 360, - Def = 350, - MAtk = 180, - MDef = 100, - }, - new JobLevelUp() { - Lv = 99, - Atk = 400, - Def = 390, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 109, - Atk = 410, - Def = 420, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 119, - Atk = 420, - Def = 450, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 129, - Atk = 430, - Def = 480, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 139, - Atk = 440, - Def = 510, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 149, - Atk = 450, - Def = 540, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 159, - Atk = 460, - Def = 570, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 169, - Atk = 470, - Def = 600, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 179, - Atk = 480, - Def = 630, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 189, - Atk = 490, - Def = 660, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 199, - Atk = 500, - Def = 690, - MAtk = 200, - MDef = 110, - }, - new JobLevelUp() { - Lv = 999, - Atk = 500, - Def = 690, - MAtk = 200, - MDef = 110, - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 120, + DefRate = 1.2, + MAtk = 20, + MAtkRate = 2, + MDef = 83, + MDefRate = 0.8 } }, { + // Seeker growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 83(base lv1) +0.8 / Magi Atk 20(base lv1) +2 / Magi Def 83(base lv1) +0.8 / Blow 10(base lv1) +0 JobId.Seeker, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 30, - Def = 30, - MAtk = 30, - MDef = 20 - }, - new JobLevelUp() { - Lv = 19, - Atk = 60, - Def = 60, - MAtk = 60, - MDef = 40 - }, - new JobLevelUp() { - Lv = 29, - Atk = 90, - Def = 90, - MAtk = 90, - MDef = 60 - }, - new JobLevelUp() { - Lv = 39, - Atk = 120, - Def = 120, - MAtk = 120, - MDef = 80 - }, - new JobLevelUp() { - Lv = 49, - Atk = 150, - Def = 150, - MAtk = 150, - MDef = 100 - }, - new JobLevelUp() { - Lv = 59, - Atk = 180, - Def = 180, - MAtk = 180, - MDef = 120 - }, - new JobLevelUp() { - Lv = 69, - Atk = 210, - Def = 210, - MAtk = 210, - MDef = 140 - }, - new JobLevelUp() { - Lv = 79, - Atk = 240, - Def = 240, - MAtk = 240, - MDef = 160 - }, - new JobLevelUp() { - Lv = 89, - Atk = 270, - Def = 270, - MAtk = 270, - MDef = 180 - }, - new JobLevelUp() { - Lv = 99, - Atk = 300, - Def = 300, - MAtk = 300, - MDef = 200 - }, - new JobLevelUp() { - Lv = 109, - Atk = 310, - Def = 310, - MAtk = 310, - MDef = 310 - }, - new JobLevelUp() { - Lv = 119, - Atk = 320, - Def = 320, - MAtk = 320, - MDef = 320 - }, - new JobLevelUp() { - Lv = 129, - Atk = 330, - Def = 330, - MAtk = 330, - MDef = 330 - }, - new JobLevelUp() { - Lv = 139, - Atk = 340, - Def = 340, - MAtk = 340, - MDef = 340 - }, - new JobLevelUp() { - Lv = 149, - Atk = 350, - Def = 350, - MAtk = 350, - MDef = 350 - }, - new JobLevelUp() { - Lv = 159, - Atk = 360, - Def = 360, - MAtk = 360, - MDef = 360 - }, - new JobLevelUp() { - Lv = 169, - Atk = 370, - Def = 370, - MAtk = 370, - MDef = 370 - }, - new JobLevelUp() { - Lv = 179, - Atk = 380, - Def = 380, - MAtk = 380, - MDef = 380 - }, - new JobLevelUp() { - Lv = 189, - Atk = 390, - Def = 390, - MAtk = 390, - MDef = 390 - }, - new JobLevelUp() { - Lv = 199, - Atk = 400, - Def = 400, - MAtk = 400, - MDef = 400 - }, - new JobLevelUp() { - Lv = 999, - Atk = 400, - Def = 400, - MAtk = 400, - MDef = 400 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 83, + DefRate = 0.8, + MAtk = 20, + MAtkRate = 2, + MDef = 83, + MDefRate = 0.8 } }, { + // Hunter growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 83(base lv1) +0.8 / Magi Atk 20(base lv1) +2 / Magi Def 83(base lv1) +0.8 / Blow 25(base lv1) +0 JobId.Hunter, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 30, - Def = 30, - MAtk = 30, - MDef = 20 - }, - new JobLevelUp() { - Lv = 19, - Atk = 70, - Def = 50, - MAtk = 60, - MDef = 40 - }, - new JobLevelUp() { - Lv = 29, - Atk = 110, - Def = 70, - MAtk = 90, - MDef = 60 - }, - new JobLevelUp() { - Lv = 39, - Atk = 150, - Def = 90, - MAtk = 120, - MDef = 80 - }, - new JobLevelUp() { - Lv = 49, - Atk = 190, - Def = 110, - MAtk = 150, - MDef = 100 - }, - new JobLevelUp() { - Lv = 59, - Atk = 230, - Def = 130, - MAtk = 180, - MDef = 120 - }, - new JobLevelUp() { - Lv = 69, - Atk = 270, - Def = 150, - MAtk = 210, - MDef = 140 - }, - new JobLevelUp() { - Lv = 79, - Atk = 310, - Def = 170, - MAtk = 240, - MDef = 160 - }, - new JobLevelUp() { - Lv = 89, - Atk = 350, - Def = 190, - MAtk = 270, - MDef = 180 - }, - new JobLevelUp() { - Lv = 99, - Atk = 390, - Def = 210, - MAtk = 300, - MDef = 200 - }, - new JobLevelUp() { - Lv = 109, - Atk = 410, - Def = 220, - MAtk = 300, - MDef = 210 - }, - new JobLevelUp() { - Lv = 119, - Atk = 430, - Def = 230, - MAtk = 300, - MDef = 220 - }, - new JobLevelUp() { - Lv = 129, - Atk = 450, - Def = 240, - MAtk = 300, - MDef = 230 - }, - new JobLevelUp() { - Lv = 139, - Atk = 470, - Def = 250, - MAtk = 300, - MDef = 240 - }, - new JobLevelUp() { - Lv = 149, - Atk = 490, - Def = 260, - MAtk = 300, - MDef = 250 - }, - new JobLevelUp() { - Lv = 159, - Atk = 510, - Def = 270, - MAtk = 300, - MDef = 260 - }, - new JobLevelUp() { - Lv = 169, - Atk = 530, - Def = 280, - MAtk = 300, - MDef = 270 - }, - new JobLevelUp() { - Lv = 179, - Atk = 550, - Def = 290, - MAtk = 300, - MDef = 280 - }, - new JobLevelUp() { - Lv = 189, - Atk = 570, - Def = 300, - MAtk = 300, - MDef = 290 - }, - new JobLevelUp() { - Lv = 199, - Atk = 590, - Def = 310, - MAtk = 300, - MDef = 300 - }, - new JobLevelUp() { - Lv = 999, - Atk = 590, - Def = 310, - MAtk = 300, - MDef = 300 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 83, + DefRate = 0.8, + MAtk = 20, + MAtkRate = 2, + MDef = 83, + MDefRate = 0.8 } }, { + // Priest growth per lv: Phys Atk 20(base lv1) +2 / Phys Def 58(base lv1) +0.4 / Magi Atk 30(base lv1) +3 / Magi Def 100(base lv1) +1 / Blow 18(base lv1) +0 JobId.Priest, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 30, - MAtk = 40, - MDef = 30 - }, - new JobLevelUp() { - Lv = 19, - Atk = 40, - Def = 40, - MAtk = 80, - MDef = 70 - }, - new JobLevelUp() { - Lv = 29, - Atk = 60, - Def = 50, - MAtk = 120, - MDef = 110 - }, - new JobLevelUp() { - Lv = 39, - Atk = 80, - Def = 60, - MAtk = 160, - MDef = 150 - }, - new JobLevelUp() { - Lv = 49, - Atk = 100, - Def = 70, - MAtk = 200, - MDef = 190 - }, - new JobLevelUp() { - Lv = 59, - Atk = 120, - Def = 80, - MAtk = 240, - MDef = 230 - }, - new JobLevelUp() { - Lv = 69, - Atk = 140, - Def = 90, - MAtk = 280, - MDef = 270 - }, - new JobLevelUp() { - Lv = 79, - Atk = 160, - Def = 100, - MAtk = 320, - MDef = 310 - }, - new JobLevelUp() { - Lv = 89, - Atk = 180, - Def = 110, - MAtk = 360, - MDef = 350 - }, - new JobLevelUp() { - Lv = 99, - Atk = 200, - Def = 120, - MAtk = 400, - MDef = 390 - }, - new JobLevelUp() { - Lv = 109, - Atk = 200, - Def = 120, - MAtk = 420, - MDef = 410 - }, - new JobLevelUp() { - Lv = 119, - Atk = 200, - Def = 120, - MAtk = 440, - MDef = 430 - }, - new JobLevelUp() { - Lv = 129, - Atk = 200, - Def = 120, - MAtk = 460, - MDef = 450 - }, - new JobLevelUp() { - Lv = 139, - Atk = 200, - Def = 120, - MAtk = 480, - MDef = 470 - }, - new JobLevelUp() { - Lv = 149, - Atk = 200, - Def = 120, - MAtk = 500, - MDef = 490 - }, - new JobLevelUp() { - Lv = 159, - Atk = 200, - Def = 120, - MAtk = 520, - MDef = 510 - }, - new JobLevelUp() { - Lv = 169, - Atk = 200, - Def = 120, - MAtk = 540, - MDef = 530 - }, - new JobLevelUp() { - Lv = 179, - Atk = 200, - Def = 120, - MAtk = 560, - MDef = 550 - }, - new JobLevelUp() { - Lv = 189, - Atk = 200, - Def = 120, - MAtk = 580, - MDef = 570 - }, - new JobLevelUp() { - Lv = 199, - Atk = 200, - Def = 120, - MAtk = 600, - MDef = 590 - }, - new JobLevelUp() { - Lv = 999, - Atk = 200, - Def = 120, - MAtk = 600, - MDef = 590 - } + new BaseStats() { + Lv = 1, + Atk = 20, + AtkRate = 2, + Def = 58, + DefRate = 0.4, + MAtk = 30, + MAtkRate = 3, + MDef = 100, + MDefRate = 1 } }, { + // ShieldSage growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 120(base lv1) +1.2 / Magi Atk 30(base lv1) +3 / Magi Def 120(base lv1) +1.2 / Blow 30(base lv1) +0 JobId.ShieldSage, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 30, - MAtk = 20, - MDef = 40 - }, - new JobLevelUp() { - Lv = 19, - Atk = 30, - Def = 60, - MAtk = 40, - MDef = 90 - }, - new JobLevelUp() { - Lv = 29, - Atk = 40, - Def = 90, - MAtk = 60, - MDef = 140 - }, - new JobLevelUp() { - Lv = 39, - Atk = 50, - Def = 120, - MAtk = 80, - MDef = 190 - }, - new JobLevelUp() { - Lv = 49, - Atk = 60, - Def = 150, - MAtk = 100, - MDef = 240 - }, - new JobLevelUp() { - Lv = 59, - Atk = 70, - Def = 180, - MAtk = 120, - MDef = 290 - }, - new JobLevelUp() { - Lv = 69, - Atk = 80, - Def = 210, - MAtk = 140, - MDef = 340 - }, - new JobLevelUp() { - Lv = 79, - Atk = 90, - Def = 240, - MAtk = 160, - MDef = 390 - }, - new JobLevelUp() { - Lv = 89, - Atk = 100, - Def = 270, - MAtk = 180, - MDef = 440 - }, - new JobLevelUp() { - Lv = 99, - Atk = 110, - Def = 300, - MAtk = 200, - MDef = 490 - }, - new JobLevelUp() { - Lv = 109, - Atk = 110, - Def = 310, - MAtk = 210, - MDef = 510 - }, - new JobLevelUp() { - Lv = 119, - Atk = 110, - Def = 320, - MAtk = 220, - MDef = 530 - }, - new JobLevelUp() { - Lv = 129, - Atk = 110, - Def = 330, - MAtk = 230, - MDef = 550 - }, - new JobLevelUp() { - Lv = 139, - Atk = 110, - Def = 340, - MAtk = 240, - MDef = 570 - }, - new JobLevelUp() { - Lv = 149, - Atk = 110, - Def = 350, - MAtk = 250, - MDef = 590 - }, - new JobLevelUp() { - Lv = 159, - Atk = 110, - Def = 360, - MAtk = 260, - MDef = 610 - }, - new JobLevelUp() { - Lv = 169, - Atk = 110, - Def = 370, - MAtk = 270, - MDef = 630 - }, - new JobLevelUp() { - Lv = 179, - Atk = 110, - Def = 380, - MAtk = 280, - MDef = 650 - }, - new JobLevelUp() { - Lv = 189, - Atk = 110, - Def = 390, - MAtk = 290, - MDef = 670 - }, - new JobLevelUp() { - Lv = 199, - Atk = 110, - Def = 400, - MAtk = 300, - MDef = 690 - }, - new JobLevelUp() { - Lv = 999, - Atk = 110, - Def = 400, - MAtk = 300, - MDef = 690 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 120, + DefRate = 1.2, + MAtk = 30, + MAtkRate = 3, + MDef = 120, + MDefRate = 1.2 } }, { + // Sorcerer growth per lv: Phys Atk 20(base lv1) +2 / Phys Def 58(base lv1) +0.4 / Magi Atk 30(base lv1) +3 / Magi Def 100(base lv1) +1 / Blow 30(base lv1) +0 JobId.Sorcerer, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 30, - MAtk = 40, - MDef = 30 - }, - new JobLevelUp() { - Lv = 19, - Atk = 40, - Def = 40, - MAtk = 90, - MDef = 80 - }, - new JobLevelUp() { - Lv = 29, - Atk = 60, - Def = 50, - MAtk = 140, - MDef = 130 - }, - new JobLevelUp() { - Lv = 39, - Atk = 80, - Def = 60, - MAtk = 190, - MDef = 180 - }, - new JobLevelUp() { - Lv = 49, - Atk = 100, - Def = 70, - MAtk = 240, - MDef = 230 - }, - new JobLevelUp() { - Lv = 59, - Atk = 120, - Def = 80, - MAtk = 290, - MDef = 280 - }, - new JobLevelUp() { - Lv = 69, - Atk = 140, - Def = 90, - MAtk = 340, - MDef = 330 - }, - new JobLevelUp() { - Lv = 79, - Atk = 160, - Def = 100, - MAtk = 390, - MDef = 380 - }, - new JobLevelUp() { - Lv = 89, - Atk = 180, - Def = 110, - MAtk = 440, - MDef = 430 - }, - new JobLevelUp() { - Lv = 99, - Atk = 200, - Def = 120, - MAtk = 490, - MDef = 480 - }, - new JobLevelUp() { - Lv = 109, - Atk = 200, - Def = 120, - MAtk = 520, - MDef = 490 - }, - new JobLevelUp() { - Lv = 119, - Atk = 200, - Def = 120, - MAtk = 550, - MDef = 500 - }, - new JobLevelUp() { - Lv = 129, - Atk = 200, - Def = 120, - MAtk = 580, - MDef = 510 - }, - new JobLevelUp() { - Lv = 139, - Atk = 200, - Def = 120, - MAtk = 610, - MDef = 520 - }, - new JobLevelUp() { - Lv = 149, - Atk = 200, - Def = 120, - MAtk = 640, - MDef = 530 - }, - new JobLevelUp() { - Lv = 159, - Atk = 200, - Def = 120, - MAtk = 670, - MDef = 540 - }, - new JobLevelUp() { - Lv = 169, - Atk = 200, - Def = 120, - MAtk = 700, - MDef = 550 - }, - new JobLevelUp() { - Lv = 179, - Atk = 200, - Def = 120, - MAtk = 730, - MDef = 560 - }, - new JobLevelUp() { - Lv = 189, - Atk = 200, - Def = 120, - MAtk = 760, - MDef = 570 - }, - new JobLevelUp() { - Lv = 199, - Atk = 200, - Def = 120, - MAtk = 790, - MDef = 580 - }, - new JobLevelUp() { - Lv = 999, - Atk = 200, - Def = 120, - MAtk = 790, - MDef = 580 - } + new BaseStats() { + Lv = 1, + Atk = 20, + AtkRate = 2, + Def = 58, + DefRate = 0.4, + MAtk = 30, + MAtkRate = 3, + MDef = 100, + MDefRate = 1 } }, { + // Warrior growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 120(base lv1) +1.2 / Magi Atk 20(base lv1) +2 / Magi Def 83(base lv1) +0.8 / Blow 35(base lv1) +0 JobId.Warrior, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 40, - Def = 30, - MAtk = 20, - MDef = 20 - }, - new JobLevelUp() { - Lv = 19, - Atk = 90, - Def = 60, - MAtk = 40, - MDef = 30 - }, - new JobLevelUp() { - Lv = 29, - Atk = 140, - Def = 90, - MAtk = 60, - MDef = 40 - }, - new JobLevelUp() { - Lv = 39, - Atk = 190, - Def = 120, - MAtk = 80, - MDef = 50 - }, - new JobLevelUp() { - Lv = 49, - Atk = 240, - Def = 150, - MAtk = 100, - MDef = 60 - }, - new JobLevelUp() { - Lv = 59, - Atk = 290, - Def = 180, - MAtk = 120, - MDef = 70 - }, - new JobLevelUp() { - Lv = 69, - Atk = 340, - Def = 210, - MAtk = 140, - MDef = 80 - }, - new JobLevelUp() { - Lv = 79, - Atk = 390, - Def = 240, - MAtk = 160, - MDef = 90 - }, - new JobLevelUp() { - Lv = 89, - Atk = 440, - Def = 270, - MAtk = 180, - MDef = 100 - }, - new JobLevelUp() { - Lv = 99, - Atk = 490, - Def = 300, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 109, - Atk = 510, - Def = 320, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 119, - Atk = 530, - Def = 340, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 129, - Atk = 550, - Def = 360, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 139, - Atk = 570, - Def = 380, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 149, - Atk = 590, - Def = 400, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 159, - Atk = 610, - Def = 420, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 169, - Atk = 630, - Def = 440, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 179, - Atk = 650, - Def = 460, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 189, - Atk = 670, - Def = 480, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 199, - Atk = 690, - Def = 500, - MAtk = 200, - MDef = 110 - }, - new JobLevelUp() { - Lv = 999, - Atk = 690, - Def = 500, - MAtk = 200, - MDef = 110 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 120, + DefRate = 1.2, + MAtk = 20, + MAtkRate = 2, + MDef = 83, + MDefRate = 0.8 } }, { + // ElementArcher growth per lv: Phys Atk 20(base lv1) +2 / Phys Def 58(base lv1) +0.4 / Magi Atk 30(base lv1) +3 / Magi Def 100(base lv1) +1 / Blow 18(base lv1) +0 JobId.ElementArcher, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 30, - MAtk = 40, - MDef = 30 - }, - new JobLevelUp() { - Lv = 19, - Atk = 40, - Def = 60, - MAtk = 70, - MDef = 70 - }, - new JobLevelUp() { - Lv = 29, - Atk = 60, - Def = 90, - MAtk = 100, - MDef = 110 - }, - new JobLevelUp() { - Lv = 39, - Atk = 80, - Def = 120, - MAtk = 130, - MDef = 150 - }, - new JobLevelUp() { - Lv = 49, - Atk = 100, - Def = 150, - MAtk = 160, - MDef = 190 - }, - new JobLevelUp() { - Lv = 59, - Atk = 120, - Def = 180, - MAtk = 190, - MDef = 230 - }, - new JobLevelUp() { - Lv = 69, - Atk = 140, - Def = 210, - MAtk = 220, - MDef = 270 - }, - new JobLevelUp() { - Lv = 79, - Atk = 160, - Def = 240, - MAtk = 250, - MDef = 310 - }, - new JobLevelUp() { - Lv = 89, - Atk = 180, - Def = 270, - MAtk = 280, - MDef = 350 - }, - new JobLevelUp() { - Lv = 99, - Atk = 200, - Def = 300, - MAtk = 310, - MDef = 390 - }, - new JobLevelUp() { - Lv = 109, - Atk = 210, - Def = 300, - MAtk = 320, - MDef = 410 - }, - new JobLevelUp() { - Lv = 119, - Atk = 220, - Def = 300, - MAtk = 330, - MDef = 430 - }, - new JobLevelUp() { - Lv = 129, - Atk = 230, - Def = 300, - MAtk = 340, - MDef = 450 - }, - new JobLevelUp() { - Lv = 139, - Atk = 240, - Def = 300, - MAtk = 350, - MDef = 470 - }, - new JobLevelUp() { - Lv = 149, - Atk = 250, - Def = 300, - MAtk = 360, - MDef = 490 - }, - new JobLevelUp() { - Lv = 159, - Atk = 260, - Def = 300, - MAtk = 370, - MDef = 510 - }, - new JobLevelUp() { - Lv = 169, - Atk = 270, - Def = 300, - MAtk = 380, - MDef = 530 - }, - new JobLevelUp() { - Lv = 179, - Atk = 280, - Def = 300, - MAtk = 390, - MDef = 550 - }, - new JobLevelUp() { - Lv = 189, - Atk = 290, - Def = 300, - MAtk = 400, - MDef = 570 - }, - new JobLevelUp() { - Lv = 199, - Atk = 300, - Def = 300, - MAtk = 410, - MDef = 590 - }, - new JobLevelUp() { - Lv = 999, - Atk = 300, - Def = 300, - MAtk = 410, - MDef = 590 - } + new BaseStats() { + Lv = 1, + Atk = 20, + AtkRate = 2, + Def = 58, + DefRate = 0.4, + MAtk = 30, + MAtkRate = 3, + MDef = 100, + MDefRate = 1 } }, { + // Growth sources: https://dogmaonlineyyy.wiki.fc2.com/wiki/%E3%82%A2%E3%83%AB%E3%82%B1%E3%83%9F%E3%82%B9%E3%83%88 + // Growth not actually there, it's just following the above logic and patterns + // Alchemist growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 100(base lv1) +1 / Magi Atk 20(base lv1) +2 / Magi Def 100(base lv1) +1 / Blow 25(base lv1) +0 JobId.Alchemist, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 40, - MAtk = 20, - MDef = 30 - }, - new JobLevelUp() { - Lv = 19, - Atk = 40, - Def = 90, - MAtk = 30, - MDef = 60 - }, - new JobLevelUp() { - Lv = 29, - Atk = 60, - Def = 140, - MAtk = 40, - MDef = 90 - }, - new JobLevelUp() { - Lv = 39, - Atk = 80, - Def = 190, - MAtk = 50, - MDef = 120 - }, - new JobLevelUp() { - Lv = 49, - Atk = 100, - Def = 240, - MAtk = 60, - MDef = 150 - }, - new JobLevelUp() { - Lv = 59, - Atk = 120, - Def = 290, - MAtk = 70, - MDef = 180 - }, - new JobLevelUp() { - Lv = 69, - Atk = 140, - Def = 340, - MAtk = 80, - MDef = 210 - }, - new JobLevelUp() { - Lv = 79, - Atk = 160, - Def = 390, - MAtk = 90, - MDef = 240 - }, - new JobLevelUp() { - Lv = 89, - Atk = 180, - Def = 440, - MAtk = 100, - MDef = 270 - }, - new JobLevelUp() { - Lv = 99, - Atk = 200, - Def = 490, - MAtk = 110, - MDef = 300 - }, - new JobLevelUp() { - Lv = 109, - Atk = 210, - Def = 510, - MAtk = 120, - MDef = 300 - }, - new JobLevelUp() { - Lv = 119, - Atk = 220, - Def = 530, - MAtk = 130, - MDef = 300 - }, - new JobLevelUp() { - Lv = 129, - Atk = 230, - Def = 550, - MAtk = 140, - MDef = 300 - }, - new JobLevelUp() { - Lv = 139, - Atk = 240, - Def = 570, - MAtk = 150, - MDef = 300 - }, - new JobLevelUp() { - Lv = 149, - Atk = 250, - Def = 590, - MAtk = 160, - MDef = 300 - }, - new JobLevelUp() { - Lv = 159, - Atk = 260, - Def = 610, - MAtk = 170, - MDef = 300 - }, - new JobLevelUp() { - Lv = 169, - Atk = 270, - Def = 630, - MAtk = 180, - MDef = 300 - }, - new JobLevelUp() { - Lv = 179, - Atk = 280, - Def = 650, - MAtk = 190, - MDef = 300 - }, - new JobLevelUp() { - Lv = 189, - Atk = 290, - Def = 670, - MAtk = 200, - MDef = 300 - }, - new JobLevelUp() { - Lv = 199, - Atk = 300, - Def = 690, - MAtk = 210, - MDef = 300 - }, - new JobLevelUp() { - Lv = 999, - Atk = 300, - Def = 690, - MAtk = 210, - MDef = 300 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 100, + DefRate = 1, + MAtk = 20, + MAtkRate = 2, + MDef = 100, + MDefRate = 1 } }, - // SL and HS have placeholder level up values. - // TODO: Find out where the correct stats for these two last classes are stored. - // They're apparently missing from the files in base.arc obj/pl/pl000000/param/jobleveluptbl files - // It may be that Season 3 onwards they stopped updating this file { + // Confirmed statuses and added proper growth rate + // SpiritLancer growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 83(base lv1) +0.8 / Magi Atk 30(base lv1) +3 / Magi Def 83(base lv1) +0.8 / Blow 25(base lv1) +0 JobId.SpiritLancer, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 30, - MAtk = 40, - MDef = 30 - }, - new JobLevelUp() { - Lv = 19, - Atk = 40, - Def = 60, - MAtk = 70, - MDef = 70 - }, - new JobLevelUp() { - Lv = 29, - Atk = 60, - Def = 90, - MAtk = 100, - MDef = 110 - }, - new JobLevelUp() { - Lv = 39, - Atk = 80, - Def = 120, - MAtk = 130, - MDef = 150 - }, - new JobLevelUp() { - Lv = 49, - Atk = 100, - Def = 150, - MAtk = 160, - MDef = 190 - }, - new JobLevelUp() { - Lv = 59, - Atk = 120, - Def = 180, - MAtk = 190, - MDef = 230 - }, - new JobLevelUp() { - Lv = 69, - Atk = 140, - Def = 210, - MAtk = 220, - MDef = 270 - }, - new JobLevelUp() { - Lv = 79, - Atk = 160, - Def = 240, - MAtk = 250, - MDef = 310 - }, - new JobLevelUp() { - Lv = 89, - Atk = 180, - Def = 270, - MAtk = 280, - MDef = 350 - }, - new JobLevelUp() { - Lv = 99, - Atk = 200, - Def = 300, - MAtk = 310, - MDef = 390 - }, - new JobLevelUp() { - Lv = 109, - Atk = 210, - Def = 300, - MAtk = 320, - MDef = 410 - }, - new JobLevelUp() { - Lv = 119, - Atk = 220, - Def = 300, - MAtk = 330, - MDef = 430 - }, - new JobLevelUp() { - Lv = 129, - Atk = 230, - Def = 300, - MAtk = 340, - MDef = 450 - }, - new JobLevelUp() { - Lv = 139, - Atk = 240, - Def = 300, - MAtk = 350, - MDef = 470 - }, - new JobLevelUp() { - Lv = 149, - Atk = 250, - Def = 300, - MAtk = 360, - MDef = 490 - }, - new JobLevelUp() { - Lv = 159, - Atk = 260, - Def = 300, - MAtk = 370, - MDef = 510 - }, - new JobLevelUp() { - Lv = 169, - Atk = 270, - Def = 300, - MAtk = 380, - MDef = 530 - }, - new JobLevelUp() { - Lv = 179, - Atk = 280, - Def = 300, - MAtk = 390, - MDef = 550 - }, - new JobLevelUp() { - Lv = 189, - Atk = 290, - Def = 300, - MAtk = 400, - MDef = 570 - }, - new JobLevelUp() { - Lv = 199, - Atk = 300, - Def = 300, - MAtk = 410, - MDef = 590 - }, - new JobLevelUp() { - Lv = 999, - Atk = 300, - Def = 300, - MAtk = 410, - MDef = 590 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 83, + DefRate = 0.8, + MAtk = 30, + MAtkRate = 3, + MDef = 83, + MDefRate = 0.8 } }, { + // Many videos has its initial values different but growth rate are the same. + // This is the source of the proper values and growth rate: https://youtu.be/Ov_t6CBeugE?t=291 + // HighScepter growth per lv: Phys Atk 30(base lv1) +3 / Phys Def 83(base lv1) +0.8 / Magi Atk 30(base lv1) +3 / Magi Def 83(base lv1) +0.8 / Blow 25(base lv1) +0 JobId.HighScepter, - new JobLevelUp[] - { - new JobLevelUp() { - Lv = 0, - Atk = 0, - Def = 0, - MAtk = 0, - MDef = 0 - }, - new JobLevelUp() { - Lv = 9, - Atk = 20, - Def = 40, - MAtk = 20, - MDef = 30 - }, - new JobLevelUp() { - Lv = 19, - Atk = 40, - Def = 90, - MAtk = 30, - MDef = 60 - }, - new JobLevelUp() { - Lv = 29, - Atk = 60, - Def = 140, - MAtk = 40, - MDef = 90 - }, - new JobLevelUp() { - Lv = 39, - Atk = 80, - Def = 190, - MAtk = 50, - MDef = 120 - }, - new JobLevelUp() { - Lv = 49, - Atk = 100, - Def = 240, - MAtk = 60, - MDef = 150 - }, - new JobLevelUp() { - Lv = 59, - Atk = 120, - Def = 290, - MAtk = 70, - MDef = 180 - }, - new JobLevelUp() { - Lv = 69, - Atk = 140, - Def = 340, - MAtk = 80, - MDef = 210 - }, - new JobLevelUp() { - Lv = 79, - Atk = 160, - Def = 390, - MAtk = 90, - MDef = 240 - }, - new JobLevelUp() { - Lv = 89, - Atk = 180, - Def = 440, - MAtk = 100, - MDef = 270 - }, - new JobLevelUp() { - Lv = 99, - Atk = 200, - Def = 490, - MAtk = 110, - MDef = 300 - }, - new JobLevelUp() { - Lv = 109, - Atk = 210, - Def = 510, - MAtk = 120, - MDef = 300 - }, - new JobLevelUp() { - Lv = 119, - Atk = 220, - Def = 530, - MAtk = 130, - MDef = 300 - }, - new JobLevelUp() { - Lv = 129, - Atk = 230, - Def = 550, - MAtk = 140, - MDef = 300 - }, - new JobLevelUp() { - Lv = 139, - Atk = 240, - Def = 570, - MAtk = 150, - MDef = 300 - }, - new JobLevelUp() { - Lv = 149, - Atk = 250, - Def = 590, - MAtk = 160, - MDef = 300 - }, - new JobLevelUp() { - Lv = 159, - Atk = 260, - Def = 610, - MAtk = 170, - MDef = 300 - }, - new JobLevelUp() { - Lv = 169, - Atk = 270, - Def = 630, - MAtk = 180, - MDef = 300 - }, - new JobLevelUp() { - Lv = 179, - Atk = 280, - Def = 650, - MAtk = 190, - MDef = 300 - }, - new JobLevelUp() { - Lv = 189, - Atk = 290, - Def = 670, - MAtk = 200, - MDef = 300 - }, - new JobLevelUp() { - Lv = 199, - Atk = 300, - Def = 690, - MAtk = 210, - MDef = 300 - }, - new JobLevelUp() { - Lv = 999, - Atk = 300, - Def = 690, - MAtk = 210, - MDef = 300 - } + new BaseStats() { + Lv = 1, + Atk = 30, + AtkRate = 3, + Def = 83, + DefRate = 0.8, + MAtk = 30, + MAtkRate = 3, + MDef = 83, + MDefRate = 0.8 } }, }; @@ -1922,11 +340,11 @@ public ExpManager(IDatabase database, GameClientLookup gameClientLookup) protected readonly IDatabase _database; protected readonly GameClientLookup _gameClientLookup; - + public void AddExp(GameClient client, CharacterCommon characterToAddExpTo, uint gainedExp, uint extraBonusExp) { - CDataCharacterJobData activeCharacterJobData = characterToAddExpTo.ActiveCharacterJobData; - if (activeCharacterJobData.Lv < ExpManager.LV_CAP) + CDataCharacterJobData? activeCharacterJobData = characterToAddExpTo.ActiveCharacterJobData; + if (activeCharacterJobData != null && activeCharacterJobData.Lv < ExpManager.LV_CAP) { // ------ // EXP UP @@ -1960,24 +378,24 @@ public void AddExp(GameClient client, CharacterCommon characterToAddExpTo, uint // LEVEL UP uint currentLevel = activeCharacterJobData.Lv; uint targetLevel = currentLevel; - uint addJobPoint = 0; // TODO: Figure out + uint addJobPoint = 0; - while (targetLevel < LV_CAP && activeCharacterJobData.Exp >= this.TotalExpToLevelUpTo(targetLevel + 1)) + while (targetLevel < LV_CAP && activeCharacterJobData.Exp >= ExpManager.TotalExpToLevelUpTo(targetLevel + 1)) { targetLevel++; + addJobPoint+=LEVEL_UP_JOB_POINTS_EARNED[targetLevel]; } - if (currentLevel != targetLevel) + if (currentLevel != targetLevel || addJobPoint != 0) { activeCharacterJobData.Lv = targetLevel; activeCharacterJobData.JobPoint += addJobPoint; - // Using Math.Max to prevent lvl up from lowering your stats if you happen to have higher ones - JobLevelUp jobLevelUp = GetJobLevelUp(activeCharacterJobData.Job, activeCharacterJobData.Lv); - activeCharacterJobData.Atk = Math.Max(activeCharacterJobData.Atk, jobLevelUp.Atk); - activeCharacterJobData.Def = Math.Max(activeCharacterJobData.Def, jobLevelUp.Def); - activeCharacterJobData.MAtk = Math.Max(activeCharacterJobData.MAtk, jobLevelUp.MAtk); - activeCharacterJobData.MDef = Math.Max(activeCharacterJobData.MDef, jobLevelUp.MDef); - // TODO: Figure out the values for all other job data fields + + BaseStats baseStats = BASE_STATS_TABLE[activeCharacterJobData.Job]; + activeCharacterJobData.Atk = (ushort)(baseStats.Atk + (activeCharacterJobData.Lv - 1) * baseStats.AtkRate); + activeCharacterJobData.Def = (ushort)(baseStats.Def + (activeCharacterJobData.Lv - 1) * baseStats.DefRate); + activeCharacterJobData.MAtk = (ushort)(baseStats.MAtk + (activeCharacterJobData.Lv - 1) * baseStats.MAtkRate); + activeCharacterJobData.MDef = (ushort)(baseStats.MDef + (activeCharacterJobData.Lv - 1) * baseStats.MDefRate); if(characterToAddExpTo is Character) { @@ -2020,13 +438,13 @@ public void AddExp(GameClient client, CharacterCommon characterToAddExpTo, uint client.Party.SendToAllExcept(lvlMemberNtc, client); } } - + // PERSIST CHANGES IN DB this._database.UpdateCharacterJobData(characterToAddExpTo.CommonId, activeCharacterJobData); } } - private uint TotalExpToLevelUpTo(uint level) + public static uint TotalExpToLevelUpTo(uint level) { uint totalExp = 0; for (int i = 1; i < level; i++) @@ -2035,13 +453,5 @@ private uint TotalExpToLevelUpTo(uint level) } return totalExp; } - - private JobLevelUp GetJobLevelUp(JobId jobId, uint level) - { - JobLevelUp[] levelUps = LEVEL_UP_TABLE[jobId]; - return levelUps.Where(x => x.Lv < level) - .OrderByDescending(x => x.Lv) - .First(); - } } -} \ No newline at end of file +} diff --git a/Arrowgene.Ddon.GameServer/Characters/ItemManager.cs b/Arrowgene.Ddon.GameServer/Characters/ItemManager.cs index 1fe6c2ed6..aa9bad827 100644 --- a/Arrowgene.Ddon.GameServer/Characters/ItemManager.cs +++ b/Arrowgene.Ddon.GameServer/Characters/ItemManager.cs @@ -26,10 +26,10 @@ public CDataItemUpdateResult AddItem(DdonServer server, Character ch } - public CDataItemUpdateResult AddItem(IDatabase database, Character character, StorageType destinationStorageType, uint itemId, uint num, uint stackLimit = UInt32.MaxValue) + private CDataItemUpdateResult AddItem(IDatabase database, Character character, StorageType destinationStorageType, uint itemId, uint num, uint stackLimit = UInt32.MaxValue) { var tuple = character.Storage.getStorage(destinationStorageType).Items - .Select((item, index) => new {item = item, slot = (ushort) (index+1)}) + .Select((item, index) => new {item, slot = (ushort) (index+1)}) .Where(tuple => tuple.item?.Item1.ItemId == itemId) .FirstOrDefault(); diff --git a/Arrowgene.Ddon.GameServer/Characters/JobManager.cs b/Arrowgene.Ddon.GameServer/Characters/JobManager.cs index e2a71a7dd..3a5fc2639 100644 --- a/Arrowgene.Ddon.GameServer/Characters/JobManager.cs +++ b/Arrowgene.Ddon.GameServer/Characters/JobManager.cs @@ -2,8 +2,8 @@ using System.Collections.Generic; using System.Linq; using Arrowgene.Ddon.Database; +using Arrowgene.Ddon.GameServer.Handler; using Arrowgene.Ddon.Server; -using Arrowgene.Ddon.Shared.Entity; using Arrowgene.Ddon.Shared.Entity.PacketStructure; using Arrowgene.Ddon.Shared.Entity.Structure; using Arrowgene.Ddon.Shared.Model; @@ -40,18 +40,18 @@ public void SetJob(DdonServer server, GameClient client, CharacterCo .Union(common.Equipment.getEquipmentAsCDataCharacterEquipInfo(common.Job, EquipType.Visual)) .ToList(); - List skills = common.CustomSkills - .Where(x => x.Job == jobId) - .Select(x => x.AsCDataSetAcquirementParam()) + List skills = common.EquippedCustomSkillsDictionary[jobId] + .Select((x, idx) => x?.AsCDataSetAcquirementParam((byte)(idx+1))) + .Where(x => x != null) .ToList(); - List abilities = common.Abilities - .Where(x => x.EquippedToJob == jobId) - .Select(x => x.AsCDataSetAcquirementParam()) + List abilities = common.EquippedAbilitiesDictionary[jobId] + .Select((x, idx) => x?.AsCDataSetAcquirementParam((byte)(idx+1))) + .Where(x => x != null) .ToList(); - List normalSkills = common.NormalSkills + List normalSkills = common.LearnedNormalSkills .Select(x => new CDataLearnNormalSkillParam(x)) .ToList(); - List jobItems = common.CharacterEquipJobItemListDictionary[common.Job]; + List jobItems = common.Equipment.getJobItemsAsCDataEquipJobItem(common.Job); S2CItemUpdateCharacterItemNtc updateCharacterItemNtc = new S2CItemUpdateCharacterItemNtc(); // TODO: Move previous job equipment to storage box, and move new job equipment from storage box @@ -136,32 +136,122 @@ public void SetJob(DdonServer server, GameClient client, CharacterCo } } - public CustomSkill SetSkill(IDatabase database, GameClient client, CharacterCommon character, JobId job, byte slotNo, uint skillId, byte skillLv) + public void UnlockSkill(IDatabase database, GameClient client, CharacterCommon character, JobId job, uint skillId, byte skillLv) { - // TODO: Check in DB if the skill is unlocked and it's leveled up to what the packet says - - CustomSkill skillSlot = character.CustomSkills - .Where(skill => skill.Job == job && skill.SlotNo == slotNo) - .FirstOrDefault(); - - if(skillSlot == null) + // Check if there is a learned skill of the same ID (This unlock is a level upgrade) + CustomSkill lowerLevelSkill = character.LearnedCustomSkills.Where(skill => skill != null && skill.Job == job && skill.SkillId == skillId).SingleOrDefault(); + + if(lowerLevelSkill == null) { - skillSlot = new CustomSkill() + // Add new skill + CustomSkill newSkill = new CustomSkill() { Job = job, - SlotNo = slotNo, SkillId = skillId, SkillLv = skillLv }; - character.CustomSkills.Add(skillSlot); + character.LearnedCustomSkills.Add(newSkill); + database.InsertLearnedCustomSkill(character.CommonId, newSkill); } else { - skillSlot.SkillId = skillId; - skillSlot.SkillLv = skillLv; + // Upgrade existing skills + lowerLevelSkill.SkillLv = skillLv; + database.UpdateLearnedCustomSkill(character.CommonId, lowerLevelSkill); + } + + // EX Skills + if(skillLv == 9) + { + // EX T Skill + uint exSkillTId = skillId+100; + CDataSkillParam? exSkillT = SkillGetAcquirableSkillListHandler.AllSkills.Where(skill => skill.Job == job && skill.SkillNo == exSkillTId).SingleOrDefault(); + if(exSkillT != null) + { + // Add new skill + CustomSkill newExSkillT = new CustomSkill() + { + Job = job, + SkillId = exSkillTId, + SkillLv = 1 + }; + character.LearnedCustomSkills.Add(newExSkillT); + database.InsertLearnedCustomSkill(character.CommonId, newExSkillT); + } + } + else if(skillLv == 10) + { + // EX P Skill + uint exSkillPId = skillId+200; + CDataSkillParam? exSkillP = SkillGetAcquirableSkillListHandler.AllSkills.Where(skill => skill.Job == job && skill.SkillNo == exSkillPId).SingleOrDefault(); + if(exSkillP != null) + { + // Add new skill + CustomSkill newExSkillP = new CustomSkill() + { + Job = job, + SkillId = exSkillPId, + SkillLv = 1 + }; + character.LearnedCustomSkills.Add(newExSkillP); + database.InsertLearnedCustomSkill(character.CommonId, newExSkillP); + } + } + + uint jpCost = SkillGetAcquirableSkillListHandler.AllSkills + .Where(skill => skill.Job == job && skill.SkillNo == skillId) + .SelectMany(skill => skill.Params) + .Where(skillParams => skillParams.Lv == skillLv) + .Select(skillParams => skillParams.RequireJobPoint) + .Single(); + + // TODO: Check that this doesn't end up negative + CDataCharacterJobData learnedSkillCharacterJobData = character.CharacterJobDataList.Where(jobData => jobData.Job == job).Single(); + learnedSkillCharacterJobData.JobPoint -= jpCost; + database.UpdateCharacterJobData(character.CommonId, learnedSkillCharacterJobData); + + if(character is Character) + { + client.Send(new S2CSkillLearnSkillRes() + { + Job = job, + NewJobPoint = learnedSkillCharacterJobData.JobPoint, + SkillId = skillId, + SkillLv = skillLv + }); + } + else if(character is Pawn) + { + client.Send(new S2CSkillLearnPawnSkillRes() + { + PawnId = ((Pawn) character).PawnId, + Job = job, + NewJobPoint = learnedSkillCharacterJobData.JobPoint, + SkillId = skillId, + SkillLv = skillLv + }); + } + } + + public CustomSkill SetSkill(IDatabase database, GameClient client, CharacterCommon character, JobId job, byte slotNo, uint skillId, byte skillLv) + { + // Remove skill from other slots in the same palette + int paletteMask = slotNo & 0x10; + for (int i = 0; i < character.EquippedCustomSkillsDictionary[job].Count; i++) + { + byte removedSkillSlotNo = (byte)(i+1); + CustomSkill removedSkill = character.EquippedCustomSkillsDictionary[job][i]; + if (removedSkill != null && removedSkill.Job == job && removedSkill.SkillId == skillId && (removedSkillSlotNo&0x10) == paletteMask) + { + character.EquippedCustomSkillsDictionary[job][i] = null; + database.DeleteEquippedCustomSkill(character.CommonId, job, removedSkillSlotNo); + } } - database.ReplaceEquippedCustomSkill(character.CommonId, skillSlot); + // Add skill to the requested slot + CustomSkill skill = character.LearnedCustomSkills.Where(skill => skill.Job == job && skill.SkillId == skillId).Single(); + character.EquippedCustomSkillsDictionary[job][slotNo-1] = skill; + database.ReplaceEquippedCustomSkill(character.CommonId, slotNo, skill); // Inform party members of the change if(job == character.Job) @@ -171,12 +261,7 @@ public CustomSkill SetSkill(IDatabase database, GameClient client, CharacterComm client.Party.SendToAll(new S2CSkillCustomSkillSetNtc() { CharacterId = ((Character) character).CharacterId, - ContextAcquirementData = new CDataContextAcquirementData() - { - SlotNo = skillSlot.SlotNo, - AcquirementNo = skillSlot.SkillId, - AcquirementLv = skillSlot.SkillLv - } + ContextAcquirementData = skill.AsCDataContextAcquirementData(slotNo) }); } else if(character is Pawn) @@ -184,35 +269,46 @@ public CustomSkill SetSkill(IDatabase database, GameClient client, CharacterComm client.Party.SendToAll(new S2CSkillPawnCustomSkillSetNtc() { PawnId = ((Pawn) character).PawnId, - ContextAcquirementData = new CDataContextAcquirementData() - { - SlotNo = skillSlot.SlotNo, - AcquirementNo = skillSlot.SkillId, - AcquirementLv = skillSlot.SkillLv - } + ContextAcquirementData = skill.AsCDataContextAcquirementData(slotNo) }); } } - return skillSlot; + return skill; } - public IEnumerable ChangeExSkill(IDatabase database, GameClient client, CharacterCommon character, JobId job, uint skillId) + public IEnumerable ChangeExSkill(IDatabase database, GameClient client, CharacterCommon character, JobId job, uint skillId) { - IEnumerable modifiedSkillSlots = character.CustomSkills - .Where(skill => skill.Job == job && GetBaseSkillId(skill.SkillId) == GetBaseSkillId(skillId)); - foreach (CustomSkill skillSlot in modifiedSkillSlots) + CustomSkill exSkill = character.LearnedCustomSkills + .Where(skill => skill.Job == job && skill.SkillId == skillId) + .Single(); + + CustomSkill affectedSkill = character.LearnedCustomSkills + .Where(skill => skill.Job == job && skill.SkillId == GetBaseSkillId(skillId)) + .Single(); + + List affectedSlots = new List(); + for(int i=0; i skill.Job == job && skill.SlotNo == slotNo); + character.EquippedCustomSkillsDictionary[job][slotNo-1] = null; // TODO: Error handling database.DeleteEquippedCustomSkill(character.CommonId, job, slotNo); @@ -221,30 +317,76 @@ public void RemoveSkill(IDatabase database, CharacterCommon character, JobId job // From what I tested it doesn't seem to be necessary } - public Ability SetAbility(IDatabase database, GameClient client, CharacterCommon character, JobId abilityJob, byte slotNo, uint abilityId, byte abilityLv) + public void UnlockAbility(IDatabase database, GameClient client, CharacterCommon character, JobId job, uint abilityId, byte abilityLv) { - // TODO: Check in DB if the skill is unlocked and it's leveled up to what the packet says - - Ability abilitySlot = character.Abilities - .Where(ability => ability.EquippedToJob == character.Job && ability.SlotNo == slotNo) - .FirstOrDefault(); - - if(abilitySlot == null) + // Check if there is a learned ability of the same ID (This unlock is a level upgrade) + Ability lowerLevelAbility = character.LearnedAbilities.Where(aug => aug != null && aug.Job == job && aug.AbilityId == abilityId).SingleOrDefault(); + + if(lowerLevelAbility == null) { - abilitySlot = new Ability() + // New ability + Ability newAbility = new Ability() { - EquippedToJob = character.Job, - Job = abilityJob, - SlotNo = slotNo, + Job = job, + AbilityId = abilityId, + AbilityLv = abilityLv }; - character.Abilities.Add(abilitySlot); + character.LearnedAbilities.Add(newAbility); + database.InsertLearnedAbility(character.CommonId, newAbility); } - - abilitySlot.Job = abilityJob; - abilitySlot.AbilityId = abilityId; - abilitySlot.AbilityLv = abilityLv; + else + { + // Level upgrade + lowerLevelAbility.AbilityLv = abilityLv; + database.UpdateLearnedAbility(character.CommonId, lowerLevelAbility); + } + + uint jpCost = SkillGetAcquirableAbilityListHandler.AllAbilities + .Where(aug => aug.Job == job && aug.AbilityNo == abilityId) + .SelectMany(aug => aug.Params) + .Where(augParams => augParams.Lv == abilityLv) + .Select(augParams => augParams.RequireJobPoint) + .Single(); - database.ReplaceEquippedAbility(character.CommonId, abilitySlot); + // TODO: Check that this doesn't end up negative + CDataCharacterJobData learnedAbilityCharacterJobData = job == 0 + ? character.ActiveCharacterJobData // Secret Augments -> Use current job's JP TODO: Verify if this is the correct behaviour + : character.CharacterJobDataList.Where(jobData => jobData.Job == job).Single(); // Job Augments -> Use that job's JP + learnedAbilityCharacterJobData.JobPoint -= jpCost; + database.UpdateCharacterJobData(character.CommonId, learnedAbilityCharacterJobData); + + if(character is Character) + { + client.Send(new S2CSkillLearnAbilityRes() + { + Job = job, + NewJobPoint = learnedAbilityCharacterJobData.JobPoint, + AbilityId = abilityId, + AbilityLv = abilityLv + }); + } + else if(character is Pawn) + { + client.Send(new S2CSkillLearnPawnAbilityRes() + { + PawnId = ((Pawn) character).PawnId, + Job = job, + NewJobPoint = learnedAbilityCharacterJobData.JobPoint, + AbilityId = abilityId, + AbilityLv = abilityLv + }); + } + } + + public Ability SetAbility(IDatabase database, GameClient client, CharacterCommon character, JobId abilityJob, byte slotNo, uint abilityId, byte abilityLv) + { + Ability ability = character.LearnedAbilities + .Where(aug => aug.Job == abilityJob && aug.AbilityId == abilityId && aug.AbilityLv == abilityLv) + .Single(); + + character.EquippedAbilitiesDictionary[character.Job][slotNo-1] = ability; + + database.ReplaceEquippedAbility(character.CommonId, character.Job, slotNo, ability); // Inform party members of the change if(character is Character) @@ -252,12 +394,7 @@ public Ability SetAbility(IDatabase database, GameClient client, CharacterCommon client.Party.SendToAll(new S2CSkillAbilitySetNtc() { CharacterId = ((Character) character).CharacterId, - ContextAcquirementData = new CDataContextAcquirementData() - { - SlotNo = abilitySlot.SlotNo, - AcquirementNo = abilitySlot.AbilityId, - AcquirementLv = abilitySlot.AbilityLv - } + ContextAcquirementData = ability.AsCDataContextAcquirementData(slotNo) }); } else if(character is Pawn) @@ -265,58 +402,49 @@ public Ability SetAbility(IDatabase database, GameClient client, CharacterCommon client.Party.SendToAll(new S2CSkillPawnAbilitySetNtc() { PawnId = ((Pawn) character).PawnId, - ContextAcquirementData = new CDataContextAcquirementData() - { - SlotNo = abilitySlot.SlotNo, - AcquirementNo = abilitySlot.AbilityId, - AcquirementLv = abilitySlot.AbilityLv - } + ContextAcquirementData = ability.AsCDataContextAcquirementData(slotNo) }); } - return abilitySlot; + return ability; } public void RemoveAbility(IDatabase database, CharacterCommon character, byte slotNo) { // TODO: Performance - List newAbilities = new List(); - lock(character.Abilities) + List equippedAbilities = character.EquippedAbilitiesDictionary[character.Job]; + lock(equippedAbilities) { byte removedAbilitySlotNo = Byte.MaxValue; - for(int i=0; i removedAbilitySlotNo) + if(equippedAbilitySlotNo > removedAbilitySlotNo) { - ability.SlotNo--; + equippedAbilitySlotNo--; } - newAbilities.Add(ability); } } } - database.ReplaceEquippedAbilities(character.CommonId, character.Job, newAbilities); + database.ReplaceEquippedAbilities(character.CommonId, character.Job, equippedAbilities); // Same as skills, i haven't found an Ability off NTC. It may not be required } - - private uint GetBaseSkillId(uint skillId) - { - return skillId % 100; - } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Chat/Command/Commands/JobCommand.cs b/Arrowgene.Ddon.GameServer/Chat/Command/Commands/JobCommand.cs index 30f4b1904..43308fe07 100644 --- a/Arrowgene.Ddon.GameServer/Chat/Command/Commands/JobCommand.cs +++ b/Arrowgene.Ddon.GameServer/Chat/Command/Commands/JobCommand.cs @@ -72,33 +72,7 @@ public override void Execute(string[] command, GameClient client, ChatMessage me } else { - client.Character.Job = (JobId) job; - - _server.Database.UpdateCharacterCommonBaseInfo(client.Character); - - S2CJobChangeJobNtc notice = new S2CJobChangeJobNtc(); - notice.CharacterId = client.Character.CharacterId; - notice.CharacterJobData = client.Character.ActiveCharacterJobData; - notice.EquipItemInfo = client.Character.Equipment.getEquipmentAsCDataEquipItemInfo(client.Character.Job, EquipType.Performance) - .Union(client.Character.Equipment.getEquipmentAsCDataEquipItemInfo(client.Character.Job, EquipType.Visual)) - .ToList(); - notice.SetAcquirementParamList = client.Character.CustomSkills - .Where(x => x.Job == job) - .Select(x => x.AsCDataSetAcquirementParam()) - .ToList(); - notice.SetAbilityParamList = client.Character.Abilities - .Where(x => x.EquippedToJob == job) - .Select(x => x.AsCDataSetAcquirementParam()) - .ToList(); - notice.LearnNormalSkillParamList = client.Character.NormalSkills - .Select(x => new CDataLearnNormalSkillParam(x)) - .ToList(); - notice.EquipJobItemList = client.Character.CharacterEquipJobItemListDictionary[client.Character.Job]; - - foreach(GameClient otherClient in _server.ClientLookup.GetAll()) - { - otherClient.Send(notice); - } + _server.JobManager.SetJob(_server, client, client.Character, (JobId) job); } } } diff --git a/Arrowgene.Ddon.GameServer/Chat/Command/Commands/MotherlodeCommand.cs b/Arrowgene.Ddon.GameServer/Chat/Command/Commands/MotherlodeCommand.cs index 7d6186c62..51abe4183 100644 --- a/Arrowgene.Ddon.GameServer/Chat/Command/Commands/MotherlodeCommand.cs +++ b/Arrowgene.Ddon.GameServer/Chat/Command/Commands/MotherlodeCommand.cs @@ -19,7 +19,7 @@ public class MotherlodeCommand : ChatCommand }; private static readonly uint DefaultAmount = 10000; - private static readonly WalletType[] DefaultWalletTypes = new WalletType[] { + private static readonly HashSet DefaultWalletTypes = new HashSet { WalletType.Gold, WalletType.RiftPoints }; @@ -51,19 +51,19 @@ public override void Execute(string[] command, GameClient client, ChatMessage me } } - WalletType[] walletTypes = DefaultWalletTypes; + HashSet walletTypes = DefaultWalletTypes; if (command.Length >= 2) { - walletTypes = new WalletType[command.Length-1]; - for (int i = 1; i < command.Length; i++) + walletTypes = new HashSet(); + foreach (string arg in command.Skip(1)) { - if (WalletTypeNames.TryGetValue(command[i], out WalletType parsedWalletType)) + if (WalletTypeNames.TryGetValue(arg, out WalletType parsedWalletType)) { - walletTypes[i-1] = parsedWalletType; + walletTypes.Add(parsedWalletType); } else { - responses.Add(ChatResponse.CommandError(client, $"Invalid wallet type \"{command[i]}\". It must be one of the following: {string.Join(", ", WalletTypeNames.Keys)}")); + responses.Add(ChatResponse.CommandError(client, $"Invalid wallet type \"{arg}\". It must be one of the following: {string.Join(", ", WalletTypeNames.Keys)}")); return; } } diff --git a/Arrowgene.Ddon.GameServer/DdonGameServer.cs b/Arrowgene.Ddon.GameServer/DdonGameServer.cs index d01f6e3d9..860fe1632 100644 --- a/Arrowgene.Ddon.GameServer/DdonGameServer.cs +++ b/Arrowgene.Ddon.GameServer/DdonGameServer.cs @@ -182,6 +182,11 @@ private void LoadPacketHandler() AddHandler(new CharacterPawnGoldenReviveHandler(this)); AddHandler(new CharacterPawnPointReviveHandler(this)); AddHandler(new CharacterSetOnlineStatusHandler(this)); + AddHandler(new CharacterEditGetShopPriceHandler(this)); + AddHandler(new CharacterEditUpdateCharacterEditParamHandler(this)); + AddHandler(new CharacterEditUpdateCharacterEditParamExHandler(this)); + AddHandler(new CharacterEditUpdatePawnEditParamHandler(this)); + AddHandler(new CharacterEditUpdatePawnEditParamExHandler(this)); AddHandler(new ClanClanBaseGetInfoHandler(this)); AddHandler(new ClanClanConciergeGetListHandler(this)); @@ -210,8 +215,10 @@ private void LoadPacketHandler() AddHandler(new DailyMissionListGetHandler(this)); AddHandler(new EquipChangeCharacterEquipHandler(this)); + AddHandler(new EquipChangeCharacterEquipJobItemHandler(this)); AddHandler(new EquipChangeCharacterStorageEquipHandler(this)); AddHandler(new EquipChangePawnEquipHandler(this)); + AddHandler(new EquipChangePawnEquipJobItemHandler(this)); AddHandler(new EquipChangePawnStorageEquipHandler(this)); AddHandler(new EquipGetCharacterEquipListHandler(this)); AddHandler(new EquipUpdateHideCharacterHeadArmorHandler(this)); @@ -226,6 +233,8 @@ private void LoadPacketHandler() AddHandler(new Gp_28_2_1_Handler(this)); AddHandler(new GpGetUpdateAppCourseBonusFlagHandler(this)); AddHandler(new GpGetValidChatComGroupHandler(this)); + AddHandler(new GpGpEditGetVoiceListHandler(this)); + AddHandler(new GpGetGpHandler(this)); AddHandler(new GroupChatGroupChatGetMemberListHandler(this)); @@ -255,6 +264,7 @@ private void LoadPacketHandler() AddHandler(new ItemSortGetItemSortDataBinHandler(this)); AddHandler(new ItemSortSetItemSortDataBinHandler(this)); AddHandler(new ItemUseBagItemHandler(this)); + AddHandler(new ItemUseJobItemsHandler(this)); AddHandler(new JobChangeJobHandler(this)); AddHandler(new JobChangePawnJobHandler(this)); @@ -334,9 +344,16 @@ private void LoadPacketHandler() AddHandler(new QuestGetSetQuestListHandler(this)); AddHandler(new QuestGetTutorialQuestListHandler(this)); AddHandler(new QuestGetWorldManageQuestListHandler(this)); + AddHandler(new QuestGetEndContentsGroup(this)); + AddHandler(new QuestGetCycleContentsNewsList(this)); AddHandler(new QuestQuestProgressHandler(this)); AddHandler(new QuestSendLeaderQuestOrderConditionInfoHandler(this)); AddHandler(new QuestSendLeaderWaitOrderQuestListHandler(this)); + + AddHandler(new EntryBoardEntryBoardList(this)); + AddHandler(new EntryBoardEntryBoardItemCreate(this)); + AddHandler(new EntryBoardEntryBoardItemForceStart(this)); + AddHandler(new EntryBoardEntryBoardItemInfoMyself(this)); AddHandler(new ServerGameTimeGetBaseinfoHandler(this)); AddHandler(new ServerGetGameSettingHandler(this)); @@ -360,6 +377,12 @@ private void LoadPacketHandler() AddHandler(new SkillGetPresetAbilityListHandler(this)); AddHandler(new SkillGetSetAbilityListHandler(this)); AddHandler(new SkillGetSetSkillListHandler(this)); + AddHandler(new SkillLearnAbilityHandler(this)); + AddHandler(new SkillLearnNormalSkillHandler(this)); + AddHandler(new SkillLearnPawnAbilityHandler(this)); + AddHandler(new SkillLearnPawnNormalSkillHandler(this)); + AddHandler(new SkillLearnPawnSkillHandler(this)); + AddHandler(new SkillLearnSkillHandler(this)); AddHandler(new SkillSetAbilityHandler(this)); AddHandler(new SkillSetOffAbilityHandler(this)); AddHandler(new SkillSetOffPawnAbilityHandler(this)); @@ -377,6 +400,8 @@ private void LoadPacketHandler() AddHandler(new StageGetStageListHandler(this)); AddHandler(new StampBonusCheckHandler(this)); + AddHandler(new StampBonusGetListHandler(this)); + AddHandler(new StampBonusReceiveDailyHandler(this)); AddHandler(new WarpAreaWarpHandler(this)); AddHandler(new WarpGetFavoriteWarpPointListHandler(this)); diff --git a/Arrowgene.Ddon.GameServer/Dump/GameFullDump.cs b/Arrowgene.Ddon.GameServer/Dump/GameFullDump.cs index 5cf7aa371..22e303b46 100644 --- a/Arrowgene.Ddon.GameServer/Dump/GameFullDump.cs +++ b/Arrowgene.Ddon.GameServer/Dump/GameFullDump.cs @@ -18713,5 +18713,97 @@ public static class GameFull }; public static Packet Dump_648 = new Packet(new PacketId(14, 9, 2, "Dump_648"), data_Dump_648); + + public static byte[] data_Dump_700 = new byte[] /* 45.0.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x4D ,0x00 ,0x00 ,0x00 ,0x08 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x01 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x14 ,0x00 ,0x02 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x03 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x28 ,0x00 ,0x04 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x05 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x06 ,0x03 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x00 ,0x00 ,0x07 ,0x00 ,0x07 ,0x02 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x08 ,0x02 ,0x00 ,0xFC ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x1E ,0x00 ,0x0F ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x1E ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x3C ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x3C ,0x00 ,0x5A ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x5A ,0x00 ,0x78 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x5A ,0x00 ,0x96 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x5A ,0x00 ,0xB4 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x78 ,0x00 ,0xD2 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x78 ,0x00 ,0xF0 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x78 ,0x01 ,0x0E ,0x02 ,0x00 ,0x32 ,0x00 + + }; + + public static Packet Dump_700 = new Packet(new PacketId(45, 0, 2, "Dump_700"), data_Dump_700); + + public static byte[] data_Dump_701 = new byte[] /* 45.3.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0xAE ,0x0C ,0x26 ,0x27 ,0xA6 ,0xA6 ,0xCB ,0xD6 ,0x82 ,0x17 ,0x81 ,0x2F ,0x57 ,0x55 ,0xF1 + }; + + public static Packet Dump_701 = new Packet(new PacketId(45, 3, 2, "Dump_701"), data_Dump_701); + + public static byte[] data_Dump_702 = new byte[] /* 41.8.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x02 ,0x01 ,0x00 ,0x00 ,0x00 ,0x02 ,0x05 ,0x00 ,0x00 ,0x00 ,0x05 ,0x04 ,0x00 ,0x00 ,0x00 ,0xC8 ,0x02 ,0x00 ,0x00 ,0x00 ,0x01 ,0x05 ,0x00 ,0x00 ,0x00 ,0x14 ,0x01 ,0x01 + }; + + public static Packet Dump_702 = new Packet(new PacketId(41, 8, 2, "Dump_702"), data_Dump_702); + + public static byte[] data_Dump_703 = new byte[] /* 28.22.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x16 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x02 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x05 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x06 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x07 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x08 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x09 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0F ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x02 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x05 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x06 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x07 ,0x01 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x08 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x09 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x10 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x01 ,0x00 ,0x24 ,0x00 ,0x00 ,0x00 ,0x19 ,0x00 ,0x00 ,0x00 + }; + + public static Packet Dump_703 = new Packet(new PacketId(28, 22, 2, "Dump_703"), data_Dump_703); + + public static byte[] data_Dump_704 = new byte[] /* 28.0.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x47 ,0x00 ,0x00 ,0x00 ,0x00 ,0x5E ,0x0B ,0x62 ,0x6F ,0x00 ,0x00 ,0x00 ,0x00 ,0x5D ,0xE6 ,0xCC ,0x87 ,0x00 ,0x32 ,0x00 ,0x00 ,0x00 ,0x19 ,0x1C ,0xD2 ,0x01 ,0x01 ,0x00 + }; + + public static Packet Dump_704 = new Packet(new PacketId(28, 0, 2, "Dump_704"), data_Dump_704); + + public static byte[] data_Dump_705 = new byte[] /* 41.3.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x04 ,0x00 ,0x00 ,0x06 ,0xF5 ,0xFF ,0xFF ,0xFF ,0x38 ,0x00 ,0x00 ,0x00 ,0x00 + }; + + public static Packet Dump_705 = new Packet(new PacketId(41, 3, 2, "Dump_705"), data_Dump_705); + + public static byte[] data_Dump_706 = new byte[] /* 41.2.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x04 ,0x00 ,0x00 ,0x06 ,0xF5 ,0xFF ,0xFF ,0xFF ,0x38 ,0x00 ,0x00 ,0x00 ,0x00 + }; + + public static Packet Dump_706 = new Packet(new PacketId(41, 2, 2, "Dump_706"), data_Dump_706); + + public static byte[] data_Dump_707 = new byte[] /* 11.10.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x04 ,0xD1 ,0x04 ,0x03 ,0x01 ,0x0B ,0x08 ,0x00 ,0x00 ,0x00 ,0x64 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x02 ,0xCE ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x7F ,0xE7 ,0x98 ,0xF0 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x00 ,0x01 ,0x0F ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x64 ,0x01 ,0x00 ,0x00 ,0x01 ,0x5D ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x64 ,0x01 ,0x00 ,0x00 ,0x01 ,0x74 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x64 ,0x01 ,0x00 ,0x00 ,0x01 ,0x91 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x64 ,0x00 ,0x00 ,0x00 ,0x01 ,0x92 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x64 ,0x00 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x21 ,0xE0 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x0C ,0x26 ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x00 ,0x21 ,0xE1 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x0C ,0x26 ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x00 ,0x21 ,0xE2 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x0C ,0x26 ,0x00 ,0x00 ,0x00 ,0x0A ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x01 ,0x01 ,0x01 ,0x03 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x60 ,0x98 ,0x00 ,0x02 ,0x0C ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + }; + + public static Packet Dump_707 = new Packet(new PacketId(11, 10, 2, "Dump_707"), data_Dump_707); + + public static byte[] data_Dump_708 = new byte[] /* 11.15.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x80 ,0x00 ,0x00 ,0x00 ,0x16 ,0x02 ,0x34 ,0xDA ,0x40 ,0x01 ,0x00 + }; + + public static Packet Dump_708 = new Packet(new PacketId(11, 15, 2, "Dump_708"), data_Dump_708); + + public static byte[] data_Dump_709 = new byte[] /* 34.0.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x04 ,0xD1 ,0x04 ,0x00 ,0x01 ,0x00 ,0x04 ,0x00 ,0x00 ,0x0E ,0x10 ,0x00 ,0x78 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x8E ,0x6A ,0xF7 ,0xC8 + }; + + public static Packet Dump_709 = new Packet(new PacketId(34, 0, 2, "Dump_709"), data_Dump_709); + + public static byte[] data_Dump_710 = new byte[] /* 34.2.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x04 ,0xD1 ,0x04 ,0x01 ,0xDC ,0x4D ,0x3B ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0B ,0x01 ,0x02 ,0x03 ,0x04 ,0x05 ,0x06 ,0x07 ,0x08 ,0x09 ,0x0A ,0x0B ,0x00 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0B ,0x01 ,0x02 ,0x03 ,0x04 ,0x05 ,0x06 ,0x07 ,0x08 ,0x09 ,0x0A ,0x0B ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0B ,0x01 ,0x02 ,0x03 ,0x04 ,0x05 ,0x06 ,0x07 ,0x08 ,0x09 ,0x0A ,0x0B ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0B ,0x01 ,0x02 ,0x03 ,0x04 ,0x05 ,0x06 ,0x07 ,0x08 ,0x09 ,0x0A ,0x0B ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x21 ,0x55 ,0x9B ,0x00 ,0x06 ,0x4B ,0x65 ,0x6E ,0x64 ,0x72 ,0x61 ,0x00 ,0x04 ,0x53 ,0x68 ,0x61 ,0x77 ,0x00 ,0x03 ,0x42 ,0x53 ,0x50 ,0x00 ,0x05 ,0x0D ,0x09 ,0x64 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x04 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x0E ,0x10 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x8C ,0x47 ,0xD5 ,0xBF ,0x38 ,0x5E ,0x4D ,0x0E ,0x58 ,0xB4 ,0xF2 ,0xB2 ,0x71 ,0xB1 + }; + + public static Packet Dump_710 = new Packet(new PacketId(34, 2, 2, "Dump_710"), data_Dump_710); + + public static byte[] data_Dump_711 = new byte[] /* 34.7.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + }; + + public static Packet Dump_711 = new Packet(new PacketId(34, 7, 2, "Dump_711"), data_Dump_711); + + public static byte[] data_Dump_712 = new byte[] /* 34.9.2 */ + { + 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + }; + + public static Packet Dump_712 = new Packet(new PacketId(34, 9, 2, "Dump_712"), data_Dump_712); } } diff --git a/Arrowgene.Ddon.GameServer/GameStructure.cs b/Arrowgene.Ddon.GameServer/GameStructure.cs index 15777708f..59ada10a5 100644 --- a/Arrowgene.Ddon.GameServer/GameStructure.cs +++ b/Arrowgene.Ddon.GameServer/GameStructure.cs @@ -128,7 +128,7 @@ public static void CDataPawnInfo(CDataPawnInfo cDataPawnInfo, Pawn pawn) Equips = pawn.Equipment.getEquipmentAsCDataEquipItemInfo(pawn.Job, EquipType.Visual) } }; - cDataPawnInfo.CharacterEquipJobItemList = pawn.CharacterEquipJobItemListDictionary[pawn.Job]; + cDataPawnInfo.CharacterEquipJobItemList = pawn.Equipment.getJobItemsAsCDataEquipJobItem(pawn.Job); cDataPawnInfo.JewelrySlotNum = pawn.JewelrySlotNum; // TODO: Pawn CharacterItemSlotInfoList, CraftData cDataPawnInfo.CharacterItemSlotInfoList = new List(); @@ -158,9 +158,15 @@ public static void CDataPawnInfo(CDataPawnInfo cDataPawnInfo, Pawn pawn) cDataPawnInfo.CraftCount = 10; cDataPawnInfo.MaxAdventureCount = 5; cDataPawnInfo.MaxCraftCount = 10; - cDataPawnInfo.ContextNormalSkillList = pawn.NormalSkills.Select(normalSkill => new CDataContextNormalSkillData(normalSkill)).ToList(); - cDataPawnInfo.ContextSkillList = pawn.CustomSkills.Select(skill => skill.AsCDataContextAcquirementData()).ToList(); - cDataPawnInfo.ContextAbilityList = pawn.Abilities.Select(ability => ability.AsCDataContextAcquirementData()).ToList(); + cDataPawnInfo.ContextNormalSkillList = pawn.LearnedNormalSkills.Select(normalSkill => new CDataContextNormalSkillData(normalSkill)).ToList(); + cDataPawnInfo.ContextSkillList = pawn.EquippedCustomSkillsDictionary[pawn.Job] + .Select((skill, index) => skill?.AsCDataContextAcquirementData((byte)(index+1))) + .Where(skill => skill != null) + .ToList(); + cDataPawnInfo.ContextAbilityList = pawn.EquippedAbilitiesDictionary[pawn.Job] + .Select((ability, index) => ability?.AsCDataContextAcquirementData((byte)(index+1))) + .Where(ability => ability != null) + .ToList(); // TODO: AbilityCostMax, ExtendParam cDataPawnInfo.AbilityCostMax = 15; cDataPawnInfo.ExtendParam = new CDataOrbGainExtendParam() { @@ -226,17 +232,19 @@ public static void CDataContextBase_common(CDataContextBase contextBase, Charact contextBase.HideEquipLantern = character.HideEquipLantern; contextBase.ContextEquipPerformanceList = character.Equipment.getEquipmentAsCDataContextEquipData(character.Job, EquipType.Performance); contextBase.ContextEquipVisualList = character.Equipment.getEquipmentAsCDataContextEquipData(character.Job, EquipType.Visual); - contextBase.ContextEquipJobItemList = character.CharacterEquipJobItemListDictionary[character.Job] + contextBase.ContextEquipJobItemList = character.Equipment.getJobItemsAsCDataEquipJobItem(character.Job) .Select(x => new CDataContextEquipJobItemData(x)).ToList(); - contextBase.ContextNormalSkillList = character.NormalSkills + contextBase.ContextNormalSkillList = character.LearnedNormalSkills .Where(x => x.Job == character.Job) .Select(x => new CDataContextNormalSkillData(x)).ToList(); - contextBase.ContextSkillList = character.CustomSkills - .Where(x => x.Job == character.Job) - .Select(x => x.AsCDataContextAcquirementData()).ToList(); - contextBase.ContextAbilityList = character.Abilities - .Where(x => x.Job == character.Job) - .Select(x => x.AsCDataContextAcquirementData()).ToList(); + contextBase.ContextSkillList = character.EquippedCustomSkillsDictionary[character.Job] + .Select((x, index) => x?.AsCDataContextAcquirementData((byte)(index+1))) + .Where(x => x != null) + .ToList(); + contextBase.ContextAbilityList = character.EquippedAbilitiesDictionary[character.Job] + .Select((x, index) => x?.AsCDataContextAcquirementData((byte)(index+1))) + .Where(x => x != null) + .ToList(); contextBase.Unk0List = new List(); // TODO: Figure this one out } diff --git a/Arrowgene.Ddon.GameServer/Handler/CharacterEditGetShopPriceHandler.cs b/Arrowgene.Ddon.GameServer/Handler/CharacterEditGetShopPriceHandler.cs new file mode 100644 index 000000000..8ed2daa61 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/CharacterEditGetShopPriceHandler.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class CharacterEditGetShopPriceHandler : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(CharacterEditGetShopPriceHandler)); + + + public CharacterEditGetShopPriceHandler(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_CHARACTER_EDIT_GET_SHOP_PRICE_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_702); + } + } +} diff --git a/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdateCharacterEditParamExHandler.cs b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdateCharacterEditParamExHandler.cs new file mode 100644 index 000000000..7803590df --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdateCharacterEditParamExHandler.cs @@ -0,0 +1,35 @@ +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 CharacterEditUpdateCharacterEditParamExHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(CharacterEditUpdateCharacterEditParamExHandler)); + + public CharacterEditUpdateCharacterEditParamExHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + // TODO: Substract GG + client.Character.EditInfo = packet.Structure.EditInfo; + Server.Database.UpdateEditInfo(client.Character); + client.Character.FirstName = packet.Structure.FirstName; + Server.Database.UpdateCharacterBaseInfo(client.Character); + client.Send(new S2CCharacterEditUpdateCharacterEditParamExRes()); + foreach(Client other in Server.ClientLookup.GetAll()) { + other.Send(new S2CCharacterEditUpdateEditParamExNtc() { + CharacterId = client.Character.CharacterId, + PawnId = 0, + EditInfo = client.Character.EditInfo, + Name = client.Character.FirstName + }); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdateCharacterEditParamHandler.cs b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdateCharacterEditParamHandler.cs new file mode 100644 index 000000000..f6d6354c8 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdateCharacterEditParamHandler.cs @@ -0,0 +1,32 @@ +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 CharacterEditUpdateCharacterEditParamHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(CharacterEditUpdateCharacterEditParamHandler)); + + public CharacterEditUpdateCharacterEditParamHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + // TODO: Substract GG/Tickets + client.Character.EditInfo = packet.Structure.EditInfo; + Server.Database.UpdateEditInfo(client.Character); + client.Send(new S2CCharacterEditUpdateCharacterEditParamRes()); + foreach(Client other in Server.ClientLookup.GetAll()) { + other.Send(new S2CCharacterEditUpdateEditParamNtc() { + CharacterId = client.Character.CharacterId, + PawnId = 0, + EditInfo = client.Character.EditInfo + }); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdatePawnEditParamExHandler.cs b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdatePawnEditParamExHandler.cs new file mode 100644 index 000000000..6557877ca --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdatePawnEditParamExHandler.cs @@ -0,0 +1,39 @@ +using System.Linq; +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; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class CharacterEditUpdatePawnEditParamExHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(CharacterEditUpdatePawnEditParamExHandler)); + + public CharacterEditUpdatePawnEditParamExHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + // TODO: Substract GG + Pawn pawn = client.Character.PawnBySlotNo(packet.Structure.SlotNo); + pawn.EditInfo = packet.Structure.EditInfo; + Server.Database.UpdateEditInfo(pawn); + pawn.Name = packet.Structure.Name; + Server.Database.UpdatePawnBaseInfo(pawn); + client.Send(new S2CCharacterEditUpdatePawnEditParamExRes()); + foreach(Client other in Server.ClientLookup.GetAll()) { + other.Send(new S2CCharacterEditUpdateEditParamExNtc() { + CharacterId = pawn.CharacterId, + PawnId = pawn.PawnId, + EditInfo = pawn.EditInfo, + Name = pawn.Name + }); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdatePawnEditParamHandler.cs b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdatePawnEditParamHandler.cs new file mode 100644 index 000000000..3fc0e2ea7 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/CharacterEditUpdatePawnEditParamHandler.cs @@ -0,0 +1,34 @@ +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class CharacterEditUpdatePawnEditParamHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(CharacterEditUpdatePawnEditParamHandler)); + + public CharacterEditUpdatePawnEditParamHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + // TODO: Substract GG/Tickets + Pawn pawn = client.Character.PawnBySlotNo(packet.Structure.SlotNo); + pawn.EditInfo = packet.Structure.EditInfo; + Server.Database.UpdateEditInfo(pawn); + client.Send(new S2CCharacterEditUpdatePawnEditParamRes()); + foreach(Client other in Server.ClientLookup.GetAll()) { + other.Send(new S2CCharacterEditUpdateEditParamNtc() { + CharacterId = pawn.CharacterId, + PawnId = pawn.PawnId, + EditInfo = pawn.EditInfo + }); + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/ConnectionLoginHandler.cs b/Arrowgene.Ddon.GameServer/Handler/ConnectionLoginHandler.cs index e311add4d..d6089820c 100644 --- a/Arrowgene.Ddon.GameServer/Handler/ConnectionLoginHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/ConnectionLoginHandler.cs @@ -109,7 +109,7 @@ public override void Handle(GameClient client, StructurePacket + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EntryBoardEntryBoardItemCreate)); + + + public EntryBoardEntryBoardItemCreate(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_ENTRY_BOARD_ENTRY_BOARD_ITEM_CREATE_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_710); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardItemForceStart.cs b/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardItemForceStart.cs new file mode 100644 index 000000000..26e555315 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardItemForceStart.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EntryBoardEntryBoardItemForceStart : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EntryBoardEntryBoardItemForceStart)); + + + public EntryBoardEntryBoardItemForceStart(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_ENTRY_BOARD_ENTRY_BOARD_ITEM_FORCE_START_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_711); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardItemInfoMyself.cs b/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardItemInfoMyself.cs new file mode 100644 index 000000000..e7c87369e --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardItemInfoMyself.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EntryBoardEntryBoardItemInfoMyself : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EntryBoardEntryBoardItemInfoMyself)); + + + public EntryBoardEntryBoardItemInfoMyself(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_ENTRY_BOARD_ENTRY_BOARD_ITEM_INFO_MYSELF_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_712); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardList.cs b/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardList.cs new file mode 100644 index 000000000..ffe095bdd --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EntryBoardEntryBoardList.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EntryBoardEntryBoardList : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EntryBoardEntryBoardList)); + + + public EntryBoardEntryBoardList(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_ENTRY_BOARD_ENTRY_BOARD_LIST_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_709); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipChangeCharacterEquipJobItemHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipChangeCharacterEquipJobItemHandler.cs new file mode 100644 index 000000000..80af4f74d --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EquipChangeCharacterEquipJobItemHandler.cs @@ -0,0 +1,31 @@ +#nullable enable +using System.Linq; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; +using Arrowgene.Ddon.Shared.Model; +using System; +using System.Collections.Generic; +using Arrowgene.Ddon.GameServer.Characters; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EquipChangeCharacterEquipJobItemHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EquipChangeCharacterEquipJobItemHandler)); + + private readonly EquipManager _equipManager; + + public EquipChangeCharacterEquipJobItemHandler(DdonGameServer server) : base(server) + { + _equipManager = server.EquipManager; + } + + public override void Handle(GameClient client, StructurePacket packet) + { + _equipManager.EquipJobItem(Server, client, client.Character, packet.Structure.ChangeEquipJobItemList); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipHandler.cs index 04c4af76d..737ef9300 100644 --- a/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipHandler.cs @@ -1,9 +1,7 @@ using System.Linq; using Arrowgene.Ddon.GameServer.Characters; 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; diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipJobItemHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipJobItemHandler.cs new file mode 100644 index 000000000..e5d171a46 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/EquipChangePawnEquipJobItemHandler.cs @@ -0,0 +1,28 @@ +using System.Linq; +using Arrowgene.Ddon.GameServer.Characters; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class EquipChangePawnEquipJobItemHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(EquipChangePawnEquipJobItemHandler)); + + private readonly EquipManager _equipManager; + + public EquipChangePawnEquipJobItemHandler(DdonGameServer server) : base(server) + { + _equipManager = server.EquipManager; + } + + public override void Handle(GameClient client, StructurePacket packet) + { + Pawn pawn = client.Character.Pawns.Where(pawn => pawn.PawnId == packet.Structure.PawnId).Single(); + _equipManager.EquipJobItem(Server, client, pawn, packet.Structure.ChangeEquipJobItemList); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/EquipGetCharacterEquipListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/EquipGetCharacterEquipListHandler.cs index 9b8ad264c..8a4f9bd8d 100644 --- a/Arrowgene.Ddon.GameServer/Handler/EquipGetCharacterEquipListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/EquipGetCharacterEquipListHandler.cs @@ -27,7 +27,7 @@ public override void Handle(GameClient client, StructurePacket + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(GpGetGpHandler)); + + + public GpGetGpHandler(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_GP_GET_GP_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_704); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/GpGpEditGetVoiceListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/GpGpEditGetVoiceListHandler.cs new file mode 100644 index 000000000..ae1b24020 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/GpGpEditGetVoiceListHandler.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class GpGpEditGetVoiceListHandler : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(GpGpEditGetVoiceListHandler)); + + + public GpGpEditGetVoiceListHandler(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_GP_GP_EDIT_GET_VOICE_LIST_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_703); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/Gp_28_2_1_Handler.cs b/Arrowgene.Ddon.GameServer/Handler/Gp_28_2_1_Handler.cs index ae8802b89..6ef679cb9 100644 --- a/Arrowgene.Ddon.GameServer/Handler/Gp_28_2_1_Handler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/Gp_28_2_1_Handler.cs @@ -20,7 +20,8 @@ public Gp_28_2_1_Handler(DdonGameServer server) : base(server) public override void Handle(GameClient client, IPacket packet) { //client.Send(InGameDump.Dump_46); - client.Send(SelectedDump.Dump_46_A); + //client.Send(SelectedDump.Dump_46_A); + client.Send(new Packet(PacketId.S2C_GP_28_2_2_RES, new byte[12])); } } } diff --git a/Arrowgene.Ddon.GameServer/Handler/InstanceGetGatheringItemListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/InstanceGetGatheringItemListHandler.cs index 6a195c3cb..147914713 100644 --- a/Arrowgene.Ddon.GameServer/Handler/InstanceGetGatheringItemListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/InstanceGetGatheringItemListHandler.cs @@ -5,6 +5,7 @@ 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; @@ -14,23 +15,25 @@ public class InstanceGetGatheringItemListHandler : StructurePacketHandler(typeof(InstanceGetGatheringItemListHandler)); - private readonly GatheringItemManager _gatheringItemManager; + private readonly GatheringItemManager gatheringItemManager; public InstanceGetGatheringItemListHandler(DdonGameServer server) : base(server) { - this._gatheringItemManager = server.GatheringItemManager; + this.gatheringItemManager = server.GatheringItemManager; } public override void Handle(GameClient client, StructurePacket req) { + List gatheringItems = client.InstanceGatheringItemManager.GetAssets(req.Structure.LayoutId, req.Structure.PosId); + S2CInstanceGetGatheringItemListRes res = new S2CInstanceGetGatheringItemListRes(); res.LayoutId = req.Structure.LayoutId; res.PosId = req.Structure.PosId; - res.GatheringItemUId = "PROBANDO"; // TODO: Find in item bag the used gathering item - res.IsGatheringItemBreak = false; // TODO: Random, and update broken item by sending S2CItemUpdateCharacterItemNtc + res.GatheringItemUId = "PROBANDO"; // TODO: Find out somehow what gathering item was used and send it back + res.IsGatheringItemBreak = false; // TODO: False by default. True if lockpick?, or random if other gathering item. Update broken item by sending S2CItemUpdateCharacterItemNtc res.Unk0 = false; res.Unk1 = new List(); - res.ItemList = client.InstanceGatheringItemManager.GetAssets(req.Structure.LayoutId, req.Structure.PosId) + res.ItemList = gatheringItems .Select((asset, index) => new CDataGatheringItemElement() { SlotNo = (uint) index, diff --git a/Arrowgene.Ddon.GameServer/Handler/ItemConsumeStorageItemHandler.cs b/Arrowgene.Ddon.GameServer/Handler/ItemConsumeStorageItemHandler.cs index b1aaf7ccd..cef9e99db 100644 --- a/Arrowgene.Ddon.GameServer/Handler/ItemConsumeStorageItemHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/ItemConsumeStorageItemHandler.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using Arrowgene.Ddon.Server; using Arrowgene.Ddon.Shared.Entity.PacketStructure; using Arrowgene.Ddon.Shared.Entity.Structure; diff --git a/Arrowgene.Ddon.GameServer/Handler/ItemSellItemHandler.cs b/Arrowgene.Ddon.GameServer/Handler/ItemSellItemHandler.cs index ed4cf9d70..9cff1e056 100644 --- a/Arrowgene.Ddon.GameServer/Handler/ItemSellItemHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/ItemSellItemHandler.cs @@ -22,6 +22,8 @@ public override void Handle(GameClient client, StructurePacket wp.Type == WalletType.Gold).First(); - characterWalletPoint.Value += amountToAdd; // TODO: Cap to maximum for that wallet - Database.UpdateWalletPoint(client.Character.CharacterId, characterWalletPoint); - - CDataUpdateWalletPoint walletUpdate = new CDataUpdateWalletPoint(); - walletUpdate.Type = WalletType.Gold; - walletUpdate.AddPoint = (int) amountToAdd; - walletUpdate.Value = characterWalletPoint.Value; - ntc.UpdateWalletList.Add(walletUpdate); + totalAmountToAdd += amountToAdd; if(newItemNum == 0) { @@ -79,8 +72,19 @@ public override void Handle(GameClient client, StructurePacket wp.Type == WalletType.Gold).First(); + characterWalletPoint.Value += totalAmountToAdd; // TODO: Cap to maximum for that wallet + Database.UpdateWalletPoint(client.Character.CharacterId, characterWalletPoint); + + CDataUpdateWalletPoint walletUpdate = new CDataUpdateWalletPoint(); + walletUpdate.Type = WalletType.Gold; + walletUpdate.AddPoint = (int) totalAmountToAdd; + walletUpdate.Value = characterWalletPoint.Value; + ntc.UpdateWalletList.Add(walletUpdate); + + client.Send(ntc); } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/ItemUseJobItemsHandler.cs b/Arrowgene.Ddon.GameServer/Handler/ItemUseJobItemsHandler.cs new file mode 100644 index 000000000..248b4bf3e --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/ItemUseJobItemsHandler.cs @@ -0,0 +1,66 @@ +#nullable enable +using Arrowgene.Ddon.Server; +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; +using System; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class ItemUseJobItemsHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(ItemUseJobItemsHandler)); + + public ItemUseJobItemsHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + S2CItemUpdateCharacterItemNtc ntc = new(); + ntc.UpdateType = 0x121; + + foreach (CDataItemUIdList itemUIdListElement in packet.Structure.ItemUIdList) + { + (ushort slotNo, Item item, uint itemNum) = client.Character.Storage.getStorage(StorageType.ItemBagJob).findItemByUId(itemUIdListElement.UId)!; + itemNum-=itemUIdListElement.Num; + + CDataItemUpdateResult itemUpdateResult = new(); + itemUpdateResult.ItemList.ItemUId = item.UId; + itemUpdateResult.ItemList.ItemId = item.ItemId; + itemUpdateResult.ItemList.ItemNum = itemNum; + itemUpdateResult.ItemList.Unk3 = item.Unk3; + itemUpdateResult.ItemList.StorageType = StorageType.ItemBagJob; + itemUpdateResult.ItemList.SlotNo = slotNo; + itemUpdateResult.ItemList.Color = item.Color; // ? + itemUpdateResult.ItemList.PlusValue = item.PlusValue; // ? + itemUpdateResult.ItemList.Bind = false; + itemUpdateResult.ItemList.EquipPoint = 0; + itemUpdateResult.ItemList.EquipCharacterID = 0; + itemUpdateResult.ItemList.EquipPawnID = 0; + itemUpdateResult.ItemList.WeaponCrestDataList = item.WeaponCrestDataList; + itemUpdateResult.ItemList.ArmorCrestDataList = item.ArmorCrestDataList; + itemUpdateResult.ItemList.EquipElementParamList = item.EquipElementParamList; + itemUpdateResult.UpdateItemNum = (int)-itemUIdListElement.Num; + ntc.UpdateItemList.Add(itemUpdateResult); + + if(itemNum == 0) + { + // Delete item when ItemNum reaches 0 to free up the slot + client.Character.Storage.setStorageItem(null, 0, StorageType.ItemBagJob, slotNo); + Server.Database.DeleteStorageItem(client.Character.CharacterId, StorageType.ItemBagJob, slotNo); + } + else + { + client.Character.Storage.setStorageItem(item, itemNum, StorageType.ItemBagJob, slotNo); + Server.Database.ReplaceStorageItem(client.Character.CharacterId, StorageType.ItemBagJob, slotNo, item.UId, itemNum); + } + } + + client.Send(ntc); + client.Send(new S2CItemUseJobItemsRes()); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/PawnGetMypawnDataHandler.cs b/Arrowgene.Ddon.GameServer/Handler/PawnGetMypawnDataHandler.cs index cd6446cc8..a93170022 100644 --- a/Arrowgene.Ddon.GameServer/Handler/PawnGetMypawnDataHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/PawnGetMypawnDataHandler.cs @@ -18,7 +18,7 @@ public PawnGetMypawnDataHandler(DdonGameServer server) : base(server) public override void Handle(GameClient client, StructurePacket req) { - Pawn pawn = client.Character.Pawns[req.Structure.SlotNo-1]; + Pawn pawn = client.Character.PawnBySlotNo(req.Structure.SlotNo); var res = new S2CPawnGetMypawnDataRes(); res.PawnId = pawn.PawnId; GameStructure.CDataPawnInfo(res.PawnInfo, pawn); diff --git a/Arrowgene.Ddon.GameServer/Handler/ProfileGetCharacterProfileHandler.cs b/Arrowgene.Ddon.GameServer/Handler/ProfileGetCharacterProfileHandler.cs index 90a4a9a0a..b7a84014a 100644 --- a/Arrowgene.Ddon.GameServer/Handler/ProfileGetCharacterProfileHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/ProfileGetCharacterProfileHandler.cs @@ -47,7 +47,7 @@ public override void Handle(GameClient client, StructurePacket + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(QuestGetCycleContentsNewsList)); + + + public QuestGetCycleContentsNewsList(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_QUEST_GET_CYCLE_CONTENTS_NEWS_LIST_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_708); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/QuestGetEndContentsGroup.cs b/Arrowgene.Ddon.GameServer/Handler/QuestGetEndContentsGroup.cs new file mode 100644 index 000000000..be44c5adb --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/QuestGetEndContentsGroup.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class QuestGetEndContentsGroup : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(QuestGetEndContentsGroup)); + + + public QuestGetEndContentsGroup(DdonGameServer server) : base(server) + { + } + + public override PacketId Id => PacketId.C2S_QUEST_GET_END_CONTENTS_GROUP_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + client.Send(GameFull.Dump_707); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillChangeExSkillHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillChangeExSkillHandler.cs index 0c0f9b07a..bd711fb50 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillChangeExSkillHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillChangeExSkillHandler.cs @@ -34,14 +34,14 @@ public override void Handle(GameClient client, StructurePacket pawn.PawnId == packet.Structure.PawnId).Single(); } - IEnumerable skillSlots = jobManager.ChangeExSkill(Server.Database, client, character, packet.Structure.Job, packet.Structure.SkillId); + IEnumerable skillSlots = jobManager.ChangeExSkill(Server.Database, client, character, packet.Structure.Job, packet.Structure.SkillId); client.Send(new S2CSkillChangeExSkillRes() { Job = packet.Structure.Job, SkillId = packet.Structure.SkillId, SkillLv = 1, // Must be 1 otherwise they do 0 damage PawnId = packet.Structure.PawnId, - SlotsToUpdate = skillSlots.Select(skill => new CDataCommonU8(skill.SlotNo)).ToList() + SlotsToUpdate = skillSlots.Select(slotNo => new CDataCommonU8(slotNo)).ToList() }); } } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableAbilityListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableAbilityListHandler.cs index 3c74e0cdf..9513607d7 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableAbilityListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableAbilityListHandler.cs @@ -15,506 +15,21682 @@ public class SkillGetAcquirableAbilityListHandler : StructurePacketHandler(typeof(SkillGetAcquirableAbilityListHandler)); public static readonly List AllAbilities = new List() { - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x4}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xF}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x5}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x1}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x9}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x10}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x6}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x19}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x17}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x18}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x16}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xA}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x2}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xC}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x11}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x13}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x8}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x3}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xD}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x15}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xB}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x7}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xE}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x14}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x128}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x129}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12B}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12A}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12C}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12D}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12E}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12F}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x131}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x130}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x132}, - new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x133}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6F}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x74}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6D}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x65}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7B}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7C}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6A}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x66}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7D}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x78}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x79}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x75}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x68}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x70}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x77}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7A}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x69}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x67}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x71}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6E}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x73}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x76}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6B}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6C}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x72}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x158}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x159}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15C}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15A}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15B}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15D}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15E}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15F}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x162}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x160}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x161}, - new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x163}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1B}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x22}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2A}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1A}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1E}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x24}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x21}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x32}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x30}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x31}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2F}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1F}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1D}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x23}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x27}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2D}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x29}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x20}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2B}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1C}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2E}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x26}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x25}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x28}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2C}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x134}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x135}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x137}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x136}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x138}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x139}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13A}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13B}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13D}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13C}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13E}, - new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13F}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3E}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x43}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x39}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x34}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3F}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x44}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3A}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x40}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x45}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x4B}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x49}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x4A}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x48}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x33}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3D}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x41}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x42}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x37}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x38}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x46}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x47}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x35}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3C}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x36}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3B}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x140}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x141}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x143}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x142}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x144}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x145}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x146}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x147}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x149}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x148}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x14A}, - new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x14B}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x52}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x55}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4F}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x51}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x59}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5D}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x63}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x54}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x57}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x56}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x58}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4D}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x50}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5F}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x60}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x61}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5C}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4C}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x53}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5A}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5E}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x62}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5B}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4E}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x64}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14C}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14D}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x150}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14E}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14F}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x151}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x152}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x153}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x156}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x154}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x155}, - new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x157}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x7E}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8E}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x89}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x81}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x82}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x83}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x84}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x92}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x94}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x91}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x93}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x7F}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x80}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x86}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8A}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8F}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x95}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x85}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x88}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8C}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x90}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8D}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x87}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8B}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x96}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x164}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x165}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16B}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x166}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x168}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x169}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x167}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16A}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16E}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16C}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16D}, - new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16F}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB5}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBF}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB4}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC0}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB1}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB8}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBC}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB2}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB9}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC8}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBD}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC1}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC7}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB0}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB6}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB7}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBB}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBA}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC3}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC4}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC5}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBE}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB3}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC2}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC6}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17C}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17D}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x180}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17E}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17F}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x181}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x182}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x183}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x186}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x184}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x185}, - new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x187}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9F}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA6}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9A}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA7}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA8}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA0}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA1}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA9}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAD}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAF}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA5}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAC}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAE}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9C}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAA}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAB}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x97}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x99}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA3}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9D}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA4}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x98}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA2}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9B}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9E}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x170}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x171}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x173}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x172}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x174}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x175}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x176}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x177}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x179}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x178}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x17A}, - new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x17B}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCD}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCE}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD6}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDA}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCB}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD0}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDB}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCC}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD3}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDE}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCF}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD8}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDF}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCA}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD1}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD4}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD2}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD9}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDC}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xC9}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD5}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xE0}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD7}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDD}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xE1}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x188}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x189}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18C}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18A}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18B}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18D}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18E}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18F}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x192}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x190}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x191}, - new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x193}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x195}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19F}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A2}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x196}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x194}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19B}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A1}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19D}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x198}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A0}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x199}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19E}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19A}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B1}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A6}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A7}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A8}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AB}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19C}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A9}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AA}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x197}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A4}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A5}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AC}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AD}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AE}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B0}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B2}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AF}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B7}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B3}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B4}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B6}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A3}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B5}, - new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B8}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D3}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D9}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DE}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D5}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D4}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E3}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E5}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D8}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DF}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D2}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E4}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E6}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D6}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D7}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E2}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E0}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E9}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E1}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E8}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1EA}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DD}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DB}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E7}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DA}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F3}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F4}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F6}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F5}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F1}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F8}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1ED}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1EE}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1EF}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F0}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F2}, - new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F7}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE7}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE8}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEC}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE4}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEB}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xED}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF0}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF1}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF4}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF5}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE5}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE6}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE9}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF2}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF3}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE2}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE3}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEE}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEF}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEA}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF6}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF7}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF8}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF9}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFA}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFB}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFC}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFD}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFE}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFF}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x100}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x0101}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x0102}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x0103}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x0104}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x15}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x16}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x0107}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x18}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x19}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1A}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1B}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1D}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1E}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1F}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x110}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x111}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x112}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x113}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x114}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x115}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x116}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x117}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x118}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x119}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11A}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11B}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11C}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11D}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11E}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11F}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x120}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x121}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x122}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x123}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x124}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x125}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x126}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x127}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1B9}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BA}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BB}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BC}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BD}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BE}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BF}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C0}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C1}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C2}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C3}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C4}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C5}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C6}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C7}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C8}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C9}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CA}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CB}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CC}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CD}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CE}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CF}, - new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1D0}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x10, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x19, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x17, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x18, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x16, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x11, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x13, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x15, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0xE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x14, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x128, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x129, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x12F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x131, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x130, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x132, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Fighter, AbilityNo=0x133, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x74, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x65, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x66, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x78, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x79, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x75, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x68, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x70, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x77, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x7A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x69, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x67, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x71, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x73, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x76, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x6C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x72, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x158, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x159, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x15F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x162, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x160, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x161, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Seeker, AbilityNo=0x163, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x22, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x24, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x21, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x32, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x30, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x31, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x23, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x27, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x29, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x20, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x1C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x26, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x25, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x28, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x2C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x134, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x135, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x137, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x136, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x138, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x139, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Hunter, AbilityNo=0x13F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x43, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x39, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x34, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x44, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x40, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x45, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x4B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x49, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x4A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x48, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x33, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x41, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x42, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x37, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x38, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x46, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x47, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x35, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x36, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x3B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x140, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x141, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x143, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x142, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x144, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x145, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x146, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x147, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x149, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x148, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x14A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Priest, AbilityNo=0x14B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x52, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x55, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x51, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x59, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x63, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x54, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x57, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x56, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x58, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x50, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x60, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x61, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x53, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x62, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x5B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x4E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x64, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x150, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x14F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x151, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x152, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x153, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x156, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x154, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x155, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ShieldSage, AbilityNo=0x157, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x7E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x89, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x81, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x82, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x83, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x84, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x92, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x94, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x91, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x93, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x7F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x80, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x86, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x95, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x85, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x88, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x90, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x87, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x8B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x96, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x164, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x165, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x166, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x168, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x169, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x167, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Sorcerer, AbilityNo=0x16F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xBE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xB3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0xC6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x180, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x17F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x181, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x182, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x183, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x186, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x184, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x185, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Warrior, AbilityNo=0x187, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xAB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x97, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x99, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x98, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0xA2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x9E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x170, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x171, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x173, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x172, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x174, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x175, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x176, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x177, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x179, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x178, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x17A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.ElementArcher, AbilityNo=0x17B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xCA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 33, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 35, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 38, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xC9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xE0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xD7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xDD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0xE1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x188, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x189, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x18F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x192, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x190, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x191, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.Alchemist, AbilityNo=0x193, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x195, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x196, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x194, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x198, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x199, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x19C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x197, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1AF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1A3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.SpiritLancer, AbilityNo=0x1B8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 65, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 70, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 77, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 18, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 9, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 13, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 17, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 23, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 35, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 40, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1D7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 38, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 43, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 45, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 51, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1EA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 48, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 51, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1E7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1DA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 53, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 56, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 57, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 45, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 50, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 55, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 62, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1ED, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1EE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 50, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 55, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 67, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1EF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=JobId.HighScepter, AbilityNo=0x1F7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 55, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 60, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 65, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 72, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xED, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF1, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF4, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE2, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xE3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xEA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 5000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xF9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0xFF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x100, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x101, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x102, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x103, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x104, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x105, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x106, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x107, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x108, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x109, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x10A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x10B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x10C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x10D, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x10E, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x10F, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x110, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x111, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x112, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x113, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x114, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x115, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x116, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x117, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x118, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x119, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11A, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11B, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11C, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 400, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 2000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11D, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 300, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11E, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 300, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x11F, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 300, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x120, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 300, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x121, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 100, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x122, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 100, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x123, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x124, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x125, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x126, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x127, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1B9, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BD, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BE, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1BF, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C0, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C1, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C2, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C3, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C4, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C5, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 6000, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C6, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C7, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C8, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1C9, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CA, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CB, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CC, Params = new List() + { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 2, + RequireJobLevel = 5, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 3, + RequireJobLevel = 10, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataAbilityLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 4500, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CD, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CE, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1CF, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataAbilityParam() {Type=1, Job=0, AbilityNo=0x1D0, Params = new List() { + new CDataAbilityLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + } + }} }; public SkillGetAcquirableAbilityListHandler(DdonGameServer server) : base(server) diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableSkillListHandler.cs index b4d017900..1486426e6 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetAcquirableSkillListHandler.cs @@ -16,239 +16,11184 @@ public class SkillGetAcquirableSkillListHandler : StructurePacketHandler AllSkills = new List() { // Fighter - new CDataSkillParam() {SkillNo = 1, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 104, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 204, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 102, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 202, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 108, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 208, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 103, Job = JobId.Fighter}, - new CDataSkillParam() {SkillNo = 203, Job = JobId.Fighter}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 104, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 204, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 102, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 202, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 108, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 208, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 103, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 203, Job = JobId.Fighter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Seeker - new CDataSkillParam() {SkillNo = 1, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 112, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 212, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 113, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 213, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 107, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 207, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 102, Job = JobId.Seeker}, - new CDataSkillParam() {SkillNo = 202, Job = JobId.Seeker}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 112, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 212, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 113, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 213, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 107, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 207, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 102, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 202, Job = JobId.Seeker, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Hunter - new CDataSkillParam() {SkillNo = 1, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 101, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 201, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 106, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 206, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 108, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 208, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 110, Job = JobId.Hunter}, - new CDataSkillParam() {SkillNo = 210, Job = JobId.Hunter}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 101, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 201, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 106, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 206, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 108, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 208, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 110, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 210, Job = JobId.Hunter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Priest - new CDataSkillParam() {SkillNo = 1, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 113, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 213, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 105, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 205, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 104, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 204, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 102, Job = JobId.Priest}, - new CDataSkillParam() {SkillNo = 202, Job = JobId.Priest}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 113, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 213, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 105, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 205, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 104, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 204, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 102, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 202, Job = JobId.Priest, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Shield Sage - new CDataSkillParam() {SkillNo = 1, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 106, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 206, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 101, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 201, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 105, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 205, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 107, Job = JobId.ShieldSage}, - new CDataSkillParam() {SkillNo = 207, Job = JobId.ShieldSage}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 106, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 206, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 101, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 201, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 105, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 205, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 107, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 207, Job = JobId.ShieldSage, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Sorcerer - new CDataSkillParam() {SkillNo = 1, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 110, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 210, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 102, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 202, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 104, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 204, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 105, Job = JobId.Sorcerer}, - new CDataSkillParam() {SkillNo = 205, Job = JobId.Sorcerer}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 110, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 210, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 102, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 202, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 104, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 204, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 105, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 205, Job = JobId.Sorcerer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Warrior - new CDataSkillParam() {SkillNo = 1, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 103, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 203, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 102, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 202, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 104, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 204, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 105, Job = JobId.Warrior}, - new CDataSkillParam() {SkillNo = 205, Job = JobId.Warrior}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 103, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 203, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 102, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 202, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 104, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 204, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 105, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 205, Job = JobId.Warrior, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Element Archer - new CDataSkillParam() {SkillNo = 1, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 13, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 14, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 105, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 205, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 110, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 210, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 113, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 213, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 108, Job = JobId.ElementArcher}, - new CDataSkillParam() {SkillNo = 208, Job = JobId.ElementArcher}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 30, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 32, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 35, + RequireJobPoint = 2700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 38, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 42, + RequireJobPoint = 4900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 35, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 37, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 39, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 42, + RequireJobPoint = 3700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 44, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 46, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 6900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 8100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 43, + RequireJobPoint = 2800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 47, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 50, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 53, + RequireJobPoint = 5000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 56, + RequireJobPoint = 6500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 13, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 14, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 105, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 205, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 110, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 210, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 113, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 213, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 108, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 208, Job = JobId.ElementArcher, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Alchemist - new CDataSkillParam() {SkillNo = 2, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 1, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 11, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 12, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 103, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 203, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 102, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 202, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 101, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 201, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 105, Job = JobId.Alchemist}, - new CDataSkillParam() {SkillNo = 205, Job = JobId.Alchemist}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 15, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 9, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 12, + RequireJobPoint = 1300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 15, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 18, + RequireJobPoint = 2600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 11, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 15000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 12, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 64, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 66, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 68, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 71, + RequireJobPoint = 6700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 74, + RequireJobPoint = 7700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 78, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 16000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 103, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 203, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 102, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 202, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 101, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 201, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 105, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 205, Job = JobId.Alchemist, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // Spirit Lance - new CDataSkillParam() {SkillNo = 1, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 9, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 10, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 107, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 207, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 101, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 201, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 104, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 204, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 108, Job = JobId.SpiritLancer}, - new CDataSkillParam() {SkillNo = 208, Job = JobId.SpiritLancer}, + new CDataSkillParam() {SkillNo = 1, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 3, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 6, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 9, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 12, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 25, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 6, + RequireJobPoint = 500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 40, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 35, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 45, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 3300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14500, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 35, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 9, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 62, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 64, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 68, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 72, + RequireJobPoint = 6700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 75, + RequireJobPoint = 8000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 11000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 12500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 15000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 10, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 64, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 66, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 68, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 71, + RequireJobPoint = 6700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 74, + RequireJobPoint = 7700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 78, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 16000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 107, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 207, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 101, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 201, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 104, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 204, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 108, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 208, Job = JobId.SpiritLancer, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + } + }}, // High Scepter - new CDataSkillParam() {SkillNo = 1, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 2, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 4, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 3, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 5, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 6, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 7, Job = JobId.HighScepter}, - new CDataSkillParam() {SkillNo = 8, Job = JobId.HighScepter} + new CDataSkillParam() {SkillNo = 1, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 1, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 9, + RequireJobPoint = 800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 13, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 16, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 18, + RequireJobPoint = 2100, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 20, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8400, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 2, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 20, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 22, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 25, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 27, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 30, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 32, + RequireJobPoint = 3900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 4, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 0, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 0, + RequireJobPoint = 300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 0, + RequireJobPoint = 600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 0, + RequireJobPoint = 1000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 0, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 0, + RequireJobPoint = 2300, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 3200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 4200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 5200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 7200, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 3, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 60, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 66, + RequireJobPoint = 4800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 68, + RequireJobPoint = 5700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 71, + RequireJobPoint = 6700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 74, + RequireJobPoint = 7700, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 78, + RequireJobPoint = 9000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 10500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 12000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 13500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 16000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 5, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 6, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 13, + RequireJobPoint = 900, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 15, + RequireJobPoint = 1200, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 18, + RequireJobPoint = 1600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 20, + RequireJobPoint = 2000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 23, + RequireJobPoint = 2500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 27, + RequireJobPoint = 3400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 4400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 5600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 6800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 8800, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 7, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 40, + RequireJobPoint = 0, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 45, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 50, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 56, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 62, + RequireJobPoint = 5500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 67, + RequireJobPoint = 7000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 8500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 10000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 11500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 14000, + IsRelease = true + } + }}, + new CDataSkillParam() {SkillNo = 8, Job = JobId.HighScepter, Params = new List() + { + new CDataSkillLevelParam() + { + Lv = 1, + RequireJobLevel = 25, + RequireJobPoint = 1500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 2, + RequireJobLevel = 27, + RequireJobPoint = 1800, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 3, + RequireJobLevel = 30, + RequireJobPoint = 2400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 4, + RequireJobLevel = 32, + RequireJobPoint = 3000, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 5, + RequireJobLevel = 35, + RequireJobPoint = 3600, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 6, + RequireJobLevel = 38, + RequireJobPoint = 4500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 7, + RequireJobLevel = 0, + RequireJobPoint = 5400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 8, + RequireJobLevel = 0, + RequireJobPoint = 6400, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 9, + RequireJobLevel = 0, + RequireJobPoint = 7500, + IsRelease = true + }, + new CDataSkillLevelParam() + { + Lv = 10, + RequireJobLevel = 0, + RequireJobPoint = 9500, + IsRelease = true + } + }} }; - + public SkillGetAcquirableSkillListHandler(DdonGameServer server) : base(server) { } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetCurrentSetSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetCurrentSetSkillListHandler.cs index 4368dd491..c32c63019 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetCurrentSetSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetCurrentSetSkillListHandler.cs @@ -21,14 +21,14 @@ public override void Handle(GameClient client, StructurePacket x.Job == client.Character.Job) - .Select(x => x.AsCDataSetAcquirementParam()) + res.NormalSkillList = client.Character.LearnedNormalSkills; + res.SetCustomSkillList = client.Character.EquippedCustomSkillsDictionary[client.Character.Job] + .Select((x, index) => x?.AsCDataSetAcquirementParam((byte)(index+1))) + .Where(x => x != null) .ToList(); - res.SetAbilityList = client.Character.Abilities - .Where(x => x.EquippedToJob == client.Character.Job) - .Select(x => x.AsCDataSetAcquirementParam()) + res.SetAbilityList = client.Character.EquippedAbilitiesDictionary[client.Character.Job] + .Select((x, index) => x?.AsCDataSetAcquirementParam((byte)(index+1))) + .Where(x => x != null) .ToList(); client.Send(res); } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs index fed522c33..813f8fb91 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedAbilityListHandler.cs @@ -1,9 +1,7 @@ -using System.Collections.Generic; +using System.Linq; 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,519 +11,18 @@ 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) { } public override void Handle(GameClient client, StructurePacket packet) { - // TODO: Move this to DB client.Send(new S2CSkillGetLearnedAbilityListRes() { - SetAcquierementParam = AllAbilities + SetAcquierementParam = client.Character.LearnedAbilities + .Select(x => x?.AsCDataLearnedSetAcquirementParam()) + .Where(x => x != null) + .ToList() }); } } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedNormalSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedNormalSkillListHandler.cs index 8b9cd0ac5..95ae5443b 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedNormalSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedNormalSkillListHandler.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Linq; using Arrowgene.Ddon.Server; using Arrowgene.Ddon.Server.Network; using Arrowgene.Ddon.Shared.Entity.PacketStructure; @@ -20,7 +20,7 @@ public SkillGetLearnedNormalSkillListHandler(DdonGameServer server) : base(serve public override void Handle(GameClient client, StructurePacket packet) { client.Send(new S2CSkillGetLearnedNormalSkillListRes() { - NormalSkillParamList = client.Character.NormalSkills + NormalSkillParamList = client.Character.LearnedNormalSkills }); } } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedSkillListHandler.cs index 2281c6db1..65644f64e 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetLearnedSkillListHandler.cs @@ -18,21 +18,10 @@ public SkillGetLearnedSkillListHandler(DdonGameServer server) : base(server) public override void Handle(GameClient client, StructurePacket packet) { - // TODO: Move this to DB - client.Send(new S2CSkillGetLearnedSkillListRes() { - SetAcquierementParam = SkillGetAcquirableSkillListHandler.AllSkills - .Select(skill => new CDataLearnedSetAcquirementParam() { - Job = skill.Job, - Type = skill.Type, - AcquirementNo = skill.SkillNo, - AcquirementLv = (byte) (IsSkillEX(skill.SkillNo) ? 1 : 10) // EX skills must be Lv 1 to work, otherwise use Lv 10 (Max level) - }).ToList() + client.Send(new S2CSkillGetLearnedSkillListRes() + { + SetAcquierementParam = client.Character.LearnedCustomSkills.Select(x => x.AsCDataLearnedSetAcquirementParam()).ToList() }); } - - public static bool IsSkillEX(uint skillNo) - { - return skillNo >= 100; - } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedAbilityListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedAbilityListHandler.cs index d050afd81..d2ec1891a 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedAbilityListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedAbilityListHandler.cs @@ -1,5 +1,7 @@ +using System.Linq; using Arrowgene.Ddon.Server; using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Model; using Arrowgene.Ddon.Shared.Network; using Arrowgene.Logging; @@ -15,11 +17,11 @@ public SkillGetPawnLearnedAbilityListHandler(DdonGameServer server) : base(serve public override void Handle(GameClient client, StructurePacket packet) { - // TODO: Move this to DB + Pawn pawn = client.Character.Pawns.Where(pawn => pawn.PawnId == packet.Structure.PawnId).Single(); client.Send(new S2CSkillGetPawnLearnedAbilityListRes() { - PawnId = packet.Structure.PawnId, - SetAcquierementParam = SkillGetLearnedAbilityListHandler.AllAbilities + PawnId = pawn.PawnId, + SetAcquierementParam = pawn.LearnedAbilities.Select(x => x.AsCDataLearnedSetAcquirementParam()).ToList() }); } } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedNormalSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedNormalSkillListHandler.cs index 20e88f049..772ba663a 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedNormalSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedNormalSkillListHandler.cs @@ -22,7 +22,7 @@ public override void Handle(GameClient client, StructurePacket pawn.PawnId == packet.Structure.PawnId).Single(); client.Send(new S2CSkillGetPawnLearnedNormalSkillListRes() { PawnId = pawn.PawnId, - NormalSkillParamList = pawn.NormalSkills + NormalSkillParamList = pawn.LearnedNormalSkills }); } } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedSkillListHandler.cs index fd79de664..5c8f0e56e 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnLearnedSkillListHandler.cs @@ -1,8 +1,6 @@ using System.Linq; 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; @@ -19,16 +17,11 @@ public SkillGetPawnLearnedSkillListHandler(DdonGameServer server) : base(server) public override void Handle(GameClient client, StructurePacket packet) { - // TODO: Move this to DB - client.Send(new S2CSkillGetPawnLearnedSkillListRes() { - LearnedAcquierementParamList = SkillGetAcquirableSkillListHandler.AllSkills - //.Where(skill => !SkillGetLearnedSkillListHandler.IsSkillEX(skill.SkillNo)) - .Select(skill => new CDataLearnedSetAcquirementParam() { - Job = skill.Job, - Type = skill.Type, - AcquirementNo = skill.SkillNo, - AcquirementLv = (byte) (SkillGetLearnedSkillListHandler.IsSkillEX(skill.SkillNo) ? 1 : 10) // EX skills must be Lv 1 to work, otherwise use Lv 10 (Max level) - }).ToList() + Pawn pawn = client.Character.Pawns.Where(pawn => pawn.PawnId == packet.Structure.PawnId).Single(); + client.Send(new S2CSkillGetPawnLearnedSkillListRes() + { + PawnId = pawn.PawnId, + LearnedAcquierementParamList = pawn.LearnedCustomSkills.Select(x => x.AsCDataLearnedSetAcquirementParam()).ToList() }); } } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetAbilityListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetAbilityListHandler.cs index a914a942a..e46e43cd8 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetAbilityListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetAbilityListHandler.cs @@ -23,9 +23,9 @@ public override void Handle(GameClient client, StructurePacket x.EquippedToJob == pawn.Job) - .Select(x => x.AsCDataSetAcquirementParam()) + res.SetAcquierementParamList = pawn.EquippedAbilitiesDictionary[pawn.Job] + .Select((x, index) => x?.AsCDataSetAcquirementParam((byte)(index+1))) + .Where(x => x != null) .ToList(); client.Send(res); } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetSkillListHandler.cs index 04676d71a..8f003eb3d 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetPawnSetSkillListHandler.cs @@ -23,9 +23,9 @@ public override void Handle(GameClient client, StructurePacket x.Job == pawn.Job) - .Select(x => x.AsCDataSetAcquirementParam()) + res.SetAcquierementParamList = pawn.EquippedCustomSkillsDictionary[pawn.Job] + .Select((x, index) => x?.AsCDataSetAcquirementParam((byte)(index+1))) + .Where(x => x != null) .ToList(); client.Send(res); } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetSetAbilityListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetSetAbilityListHandler.cs index a3008b08b..20d855624 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetSetAbilityListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetSetAbilityListHandler.cs @@ -18,9 +18,9 @@ public SkillGetSetAbilityListHandler(DdonGameServer server) : base(server) public override void Handle(GameClient client, StructurePacket packet) { client.Send(new S2CSkillGetSetAbilityListRes() { - SetAcquierementParam = client.Character.Abilities - .Where(ability => ability.EquippedToJob == client.Character.Job) - .Select(x => x.AsCDataSetAcquirementParam()) + SetAcquierementParam = client.Character.EquippedAbilitiesDictionary[client.Character.Job] + .Select((x, index) => x?.AsCDataSetAcquirementParam((byte)(index+1))) + .Where(x => x != null) .ToList() }); } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillGetSetSkillListHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillGetSetSkillListHandler.cs index 8edbee135..1ead0abab 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillGetSetSkillListHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillGetSetSkillListHandler.cs @@ -19,9 +19,9 @@ public SkillGetSetSkillListHandler(DdonGameServer server) : base(server) public override void Handle(GameClient client, StructurePacket packet) { client.Send(new S2CSkillGetSetSkillListRes() { - SetAcquierementParam = client.Character.CustomSkills - .Where(x => x.Job == packet.Structure.Job) - .Select(x => x.AsCDataSetAcquirementParam()) + SetAcquierementParam = client.Character.EquippedCustomSkillsDictionary[client.Character.Job] + .Select((x, index) => x?.AsCDataSetAcquirementParam((byte)(index+1))) + .Where(x => x != null) .ToList() }); } diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillLearnAbilityHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillLearnAbilityHandler.cs new file mode 100644 index 000000000..a6ad32df5 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/SkillLearnAbilityHandler.cs @@ -0,0 +1,25 @@ +using Arrowgene.Ddon.GameServer.Characters; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class SkillLearnAbilityHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(SkillLearnAbilityHandler)); + + private readonly JobManager jobManager; + + public SkillLearnAbilityHandler(DdonGameServer server) : base(server) + { + this.jobManager = server.JobManager; + } + + public override void Handle(GameClient client, StructurePacket packet) + { + this.jobManager.UnlockAbility(Server.Database, client, client.Character, packet.Structure.Job, packet.Structure.AbilityId, packet.Structure.AbilityLv); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillLearnNormalSkillHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillLearnNormalSkillHandler.cs new file mode 100644 index 000000000..7291ab2c1 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/SkillLearnNormalSkillHandler.cs @@ -0,0 +1,37 @@ +using System.Linq; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class SkillLearnNormalSkillHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(SkillLearnNormalSkillHandler)); + + public SkillLearnNormalSkillHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + CDataCharacterJobData characterJobData = client.Character.CharacterJobDataList.Where(cjd => cjd.Job == packet.Structure.Job).Single(); + + client.Character.LearnedNormalSkills.Add(new CDataNormalSkillParam() + { + Job = packet.Structure.Job, + SkillNo = packet.Structure.SkillId, + Index = 4 // wtf + }); + // TODO: DB and substract JP + client.Send(new S2CSkillLearnNormalSkillRes() + { + Job = packet.Structure.Job, + SkillId = packet.Structure.SkillId, + NewJobPoint = characterJobData.JobPoint + }); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnAbilityHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnAbilityHandler.cs new file mode 100644 index 000000000..f6e306b2c --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnAbilityHandler.cs @@ -0,0 +1,29 @@ +using System.Linq; +using Arrowgene.Ddon.GameServer.Characters; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class SkillLearnPawnAbilityHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(SkillLearnPawnAbilityHandler)); + + private readonly JobManager jobManager; + + public SkillLearnPawnAbilityHandler(DdonGameServer server) : base(server) + { + this.jobManager = server.JobManager; + } + + public override void Handle(GameClient client, StructurePacket packet) + { + Pawn pawn = client.Character.Pawns.Where(pawn => pawn.PawnId == packet.Structure.PawnId).Single(); + JobId augJob = SkillGetAcquirableAbilityListHandler.AllAbilities.Where(aug => aug.AbilityNo == packet.Structure.AbilityId).Select(aug => aug.Job).Single(); // why is this not in the packet + this.jobManager.UnlockAbility(Server.Database, client, pawn, augJob, packet.Structure.AbilityId, packet.Structure.AbilityLv); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnNormalSkillHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnNormalSkillHandler.cs new file mode 100644 index 000000000..29e2adac9 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnNormalSkillHandler.cs @@ -0,0 +1,41 @@ +using System.Linq; +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; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class SkillLearnPawnNormalSkillHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(SkillLearnPawnNormalSkillHandler)); + + public SkillLearnPawnNormalSkillHandler(DdonGameServer server) : base(server) + { + } + + public override void Handle(GameClient client, StructurePacket packet) + { + Pawn pawn = client.Character.Pawns.Where(pawn => pawn.PawnId == packet.Structure.PawnId).Single(); + CDataCharacterJobData characterJobData = pawn.CharacterJobDataList.Where(cjd => cjd.Job == packet.Structure.Job).Single(); + + pawn.LearnedNormalSkills.Add(new CDataNormalSkillParam() + { + Job = packet.Structure.Job, + SkillNo = packet.Structure.SkillId, + Index = 1 + }); + // TODO: DB and substract JP + client.Send(new S2CSkillLearnPawnNormalSkillRes() + { + PawnId = pawn.PawnId, + Job = packet.Structure.Job, + SkillId = packet.Structure.SkillId, + NewJobPoint = characterJobData.JobPoint + }); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnSkillHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnSkillHandler.cs new file mode 100644 index 000000000..a30638f85 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/SkillLearnPawnSkillHandler.cs @@ -0,0 +1,30 @@ +using System.Linq; +using Arrowgene.Ddon.GameServer.Characters; +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; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class SkillLearnPawnSkillHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(SkillLearnPawnSkillHandler)); + + private readonly JobManager jobManager; + + public SkillLearnPawnSkillHandler(DdonGameServer server) : base(server) + { + this.jobManager = server.JobManager; + } + + public override void Handle(GameClient client, StructurePacket packet) + { + Pawn pawn = client.Character.Pawns.Where(pawn => pawn.PawnId == packet.Structure.PawnId).Single(); + this.jobManager.UnlockSkill(Server.Database, client, pawn, packet.Structure.Job, packet.Structure.SkillId, packet.Structure.SkillLv); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillLearnSkillHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillLearnSkillHandler.cs new file mode 100644 index 000000000..56b639160 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/SkillLearnSkillHandler.cs @@ -0,0 +1,25 @@ +using Arrowgene.Ddon.GameServer.Characters; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class SkillLearnSkillHandler : GameStructurePacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(SkillLearnSkillHandler)); + + private readonly JobManager jobManager; + + public SkillLearnSkillHandler(DdonGameServer server) : base(server) + { + this.jobManager = server.JobManager; + } + + public override void Handle(GameClient client, StructurePacket packet) + { + this.jobManager.UnlockSkill(Server.Database, client, client.Character, packet.Structure.Job, packet.Structure.SkillId, packet.Structure.SkillLv); + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.GameServer/Handler/SkillSetAbilityHandler.cs b/Arrowgene.Ddon.GameServer/Handler/SkillSetAbilityHandler.cs index 1279fa3de..e341d52e0 100644 --- a/Arrowgene.Ddon.GameServer/Handler/SkillSetAbilityHandler.cs +++ b/Arrowgene.Ddon.GameServer/Handler/SkillSetAbilityHandler.cs @@ -23,13 +23,13 @@ public override void Handle(GameClient client, StructurePacket aug.AcquirementNo == packet.Structure.SkillId ) + JobId abilityJob = SkillGetAcquirableAbilityListHandler.AllAbilities + .Where(aug => aug.AbilityNo == packet.Structure.SkillId ) .Select(aug => aug.Job) .Single(); @@ -41,7 +39,7 @@ public override void Handle(GameClient client, StructurePacket + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(StampBonusGetListHandler)); + + + public StampBonusGetListHandler(DdonGameServer server) : base(server) + { + } + + + public override PacketId Id => PacketId.C2S_STAMP_BONUS_GET_LIST_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + + client.Send(GameFull.Dump_700); + } + } +} diff --git a/Arrowgene.Ddon.GameServer/Handler/StampBonusReceiveDailyHandler.cs b/Arrowgene.Ddon.GameServer/Handler/StampBonusReceiveDailyHandler.cs new file mode 100644 index 000000000..98a36ba13 --- /dev/null +++ b/Arrowgene.Ddon.GameServer/Handler/StampBonusReceiveDailyHandler.cs @@ -0,0 +1,28 @@ +using Arrowgene.Ddon.GameServer.Dump; +using Arrowgene.Ddon.Server; +using Arrowgene.Ddon.Server.Network; +using Arrowgene.Ddon.Shared.Network; +using Arrowgene.Logging; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; + +namespace Arrowgene.Ddon.GameServer.Handler +{ + public class StampBonusReceiveDailyHandler : PacketHandler + { + private static readonly ServerLogger Logger = LogProvider.Logger(typeof(StampBonusReceiveDailyHandler)); + + + public StampBonusReceiveDailyHandler(DdonGameServer server) : base(server) + { + } + + + public override PacketId Id => PacketId.C2S_STAMP_BONUS_RECIEVE_DAILY_REQ; + + public override void Handle(GameClient client, IPacket packet) + { + + client.Send(GameFull.Dump_701); + } + } +} diff --git a/Arrowgene.Ddon.LoginServer/Handler/ClientLoginHandler.cs b/Arrowgene.Ddon.LoginServer/Handler/ClientLoginHandler.cs index bd964b303..d322d1ac7 100644 --- a/Arrowgene.Ddon.LoginServer/Handler/ClientLoginHandler.cs +++ b/Arrowgene.Ddon.LoginServer/Handler/ClientLoginHandler.cs @@ -91,7 +91,7 @@ public override void Handle(LoginClient client, StructurePacket pac } TimeSpan loginTokenAge = account.LoginTokenCreated.Value - now; - if (loginTokenAge > TimeSpan.FromDays(1)) // TODO convert to setting + if (loginTokenAge > TimeSpan.FromDays(7)) // TODO convert to setting { Logger.Error(client, $"OneTimeToken Created at: {account.LoginTokenCreated} expired."); res.Error = 1; diff --git a/Arrowgene.Ddon.LoginServer/Handler/CreateCharacterHandler.cs b/Arrowgene.Ddon.LoginServer/Handler/CreateCharacterHandler.cs index 022f9d761..bc6870df5 100644 --- a/Arrowgene.Ddon.LoginServer/Handler/CreateCharacterHandler.cs +++ b/Arrowgene.Ddon.LoginServer/Handler/CreateCharacterHandler.cs @@ -1,3 +1,4 @@ +using System.Security.AccessControl; using System; using System.Linq; using System.Collections.Generic; @@ -38,62 +39,60 @@ public override void Handle(LoginClient client, StructurePacket>>() - { + character.Equipment = new Equipment( + new Dictionary>>() { - packet.Structure.CharacterInfo.Job, - new Dictionary>() { - { - EquipType.Performance, - Enumerable.Range(1, 15) - .Select(equipSlot => { - CDataEquipItemInfo info = packet.Structure.CharacterInfo.CharacterEquipDataList.SelectMany(x => x.Equips).Where(x => x.EquipSlot == equipSlot).SingleOrDefault(); - if(info == null) { - return null; - } else { - return new Item() - { - ItemId = info.ItemId, - Unk3 = info.Unk0, - Color = info.Color, - PlusValue = info.PlusValue, - WeaponCrestDataList = info.WeaponCrestDataList, - ArmorCrestDataList = info.ArmorCrestDataList, - EquipElementParamList = info.EquipElementParamList - }; - } - }) - .ToList() - }, - { - EquipType.Visual, - Enumerable.Range(1, 15) - .Select(equipSlot => { - CDataEquipItemInfo info = packet.Structure.CharacterInfo.CharacterEquipViewDataList.SelectMany(x => x.Equips).Where(x => x.EquipSlot == equipSlot).SingleOrDefault(); - if(info == null) { - return null; - } else { - return new Item() - { - ItemId = info.ItemId, - Unk3 = info.Unk0, - Color = info.Color, - PlusValue = info.PlusValue, - WeaponCrestDataList = info.WeaponCrestDataList, - ArmorCrestDataList = info.ArmorCrestDataList, - EquipElementParamList = info.EquipElementParamList - }; - } - }) - .ToList() + { + packet.Structure.CharacterInfo.Job, + new Dictionary>() { + { + EquipType.Performance, + Enumerable.Range(1, 15) + .Select(equipSlot => { + CDataEquipItemInfo info = packet.Structure.CharacterInfo.CharacterEquipDataList.SelectMany(x => x.Equips).Where(x => x.EquipSlot == equipSlot).SingleOrDefault(); + if(info == null) { + return null; + } else { + return new Item() + { + ItemId = info.ItemId, + Unk3 = info.Unk0, + Color = info.Color, + PlusValue = info.PlusValue, + WeaponCrestDataList = info.WeaponCrestDataList, + ArmorCrestDataList = info.ArmorCrestDataList, + EquipElementParamList = info.EquipElementParamList + }; + } + }) + .ToList() + }, + { + EquipType.Visual, + Enumerable.Range(1, 15) + .Select(equipSlot => { + CDataEquipItemInfo info = packet.Structure.CharacterInfo.CharacterEquipViewDataList.SelectMany(x => x.Equips).Where(x => x.EquipSlot == equipSlot).SingleOrDefault(); + if(info == null) { + return null; + } else { + return new Item() + { + ItemId = info.ItemId, + Unk3 = info.Unk0, + Color = info.Color, + PlusValue = info.PlusValue, + WeaponCrestDataList = info.WeaponCrestDataList, + ArmorCrestDataList = info.ArmorCrestDataList, + EquipElementParamList = info.EquipElementParamList + }; + } + }) + .ToList() + } } } - } - }); - character.CharacterEquipJobItemListDictionary = new Dictionary>() - { - { packet.Structure.CharacterInfo.Job, packet.Structure.CharacterInfo.CharacterEquipJobItemList } - }; + }, + new Dictionary>()); character.JewelrySlotNum = packet.Structure.CharacterInfo.JewelrySlotNum; //character.CharacterItemSlotInfoList = packet.Structure.CharacterInfo.CharacterItemSlotInfoList; //character.UnkCharData0 = packet.Structure.CharacterInfo.UnkCharData0; @@ -177,911 +176,869 @@ public override void Handle(LoginClient client, StructurePacket new Tuple>>(arisenPreset.Job, new Dictionary>() { - { - EquipType.Performance, - new List() { - new Item { - ItemId = arisenPreset.PrimaryWeapon, - Unk3 = 0, - Color = arisenPreset.PrimaryWeaponColour, - PlusValue = 0, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.PWCrest1, - Add = (ushort) (arisenPreset.PWC1Add1 << 8 | arisenPreset.PWC1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.PWCrest2, - Add = (ushort) (arisenPreset.PWC2Add1 << 8 | arisenPreset.PWC2Add2), + character.Equipment = new Equipment( + Server.AssetRepository.ArisenAsset.Select(arisenPreset => new Tuple>>(arisenPreset.Job, new Dictionary>() { + { + EquipType.Performance, + new List() { + new Item { + ItemId = arisenPreset.PrimaryWeapon, + Unk3 = 0, + Color = arisenPreset.PrimaryWeaponColour, + PlusValue = 0, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.PWCrest1, + Add = (ushort) (arisenPreset.PWC1Add1 << 8 | arisenPreset.PWC1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.PWCrest2, + Add = (ushort) (arisenPreset.PWC2Add1 << 8 | arisenPreset.PWC2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.PWCrest3, + Add = (ushort) (arisenPreset.PWC3Add1 << 8 | arisenPreset.PWC3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.PWCrest4, + Add = (ushort) (arisenPreset.PWC4Add1 << 8 | arisenPreset.PWC4Add2), + } }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.PWCrest3, - Add = (ushort) (arisenPreset.PWC3Add1 << 8 | arisenPreset.PWC3Add2), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x59, + u3 = 0x04 + } }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.PWCrest4, - Add = (ushort) (arisenPreset.PWC4Add1 << 8 | arisenPreset.PWC4Add2), - } + // Empty EquipElementParamList }, - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x59, - u3 = 0x04 - } + new Item { + ItemId = arisenPreset.SecondaryWeapon, + Unk3 = 0, + Color = arisenPreset.SecondaryWeaponColour }, - // Empty EquipElementParamList - }, - new Item { - ItemId = arisenPreset.SecondaryWeapon, - Unk3 = 0, - Color = arisenPreset.SecondaryWeaponColour - }, - new Item { - ItemId = arisenPreset.Head, - Unk3 = 0, - Color = arisenPreset.HeadColour, - PlusValue = 3, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.HeadCrest1, - Add = (ushort) (arisenPreset.HC1Add1 << 8 | arisenPreset.HC1Add2), + new Item { + ItemId = arisenPreset.Head, + Unk3 = 0, + Color = arisenPreset.HeadColour, + PlusValue = 3, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.HeadCrest1, + Add = (ushort) (arisenPreset.HC1Add1 << 8 | arisenPreset.HC1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.HeadCrest2, + Add = (ushort) (arisenPreset.HC2Add1 << 8 | arisenPreset.HC2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.HeadCrest3, + Add = (ushort) (arisenPreset.HC3Add1 << 8 | arisenPreset.HC3Add2), + } }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.HeadCrest2, - Add = (ushort) (arisenPreset.HC2Add1 << 8 | arisenPreset.HC2Add2), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x29D, + u3 = 0x01 + } }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.HeadCrest3, - Add = (ushort) (arisenPreset.HC3Add1 << 8 | arisenPreset.HC3Add2), - } + // Empty EquipElementParamList }, - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x29D, - u3 = 0x01 - } - }, - // Empty EquipElementParamList - }, - new Item { - ItemId = arisenPreset.Body, - Unk3 = 0, - Color = arisenPreset.BodyColour, - PlusValue = 4, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.BodyCrest1, - Add = (ushort) (arisenPreset.BC1Add1 << 8 | arisenPreset.BC1Add2), + new Item { + ItemId = arisenPreset.Body, + Unk3 = 0, + Color = arisenPreset.BodyColour, + PlusValue = 4, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.BodyCrest1, + Add = (ushort) (arisenPreset.BC1Add1 << 8 | arisenPreset.BC1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.BodyCrest2, + Add = (ushort) (arisenPreset.BC2Add1 << 8 | arisenPreset.BC2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.BodyCrest3, + Add = (ushort) (arisenPreset.BC3Add1 << 8 | arisenPreset.BC3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.BodyCrest4, + Add = (ushort) (arisenPreset.BC4Add1 << 8 | arisenPreset.BC4Add2), + } + }, + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x280, + u3 = 0x01 + } }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.BodyCrest2, - Add = (ushort) (arisenPreset.BC2Add1 << 8 | arisenPreset.BC2Add2), + // Empty EquipElementParamList + }, + new Item { + ItemId = arisenPreset.Clothing, + Unk3 = 0, + Color = arisenPreset.ClothingColour + }, + new Item { + ItemId = arisenPreset.Arm, + Unk3 = 0, + Color = arisenPreset.ArmColour, + PlusValue = 3, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.ArmCrest1, + Add = (ushort) (arisenPreset.AC1Add1 << 8 | arisenPreset.AC1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.ArmCrest2, + Add = (ushort) (arisenPreset.AC2Add1 << 8 | arisenPreset.AC2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.ArmCrest3, + Add = (ushort) (arisenPreset.AC3Add1 << 8 | arisenPreset.AC3Add2), + } }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.BodyCrest3, - Add = (ushort) (arisenPreset.BC3Add1 << 8 | arisenPreset.BC3Add2), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x1D2, + u3 = 0x01 + } }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.BodyCrest4, - Add = (ushort) (arisenPreset.BC4Add1 << 8 | arisenPreset.BC4Add2), - } - }, - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x280, - u3 = 0x01 - } + // Empty EquipElementParamList }, - // Empty EquipElementParamList - }, - new Item { - ItemId = arisenPreset.Clothing, - Unk3 = 0, - Color = arisenPreset.ClothingColour - }, - new Item { - ItemId = arisenPreset.Arm, - Unk3 = 0, - Color = arisenPreset.ArmColour, - PlusValue = 3, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.ArmCrest1, - Add = (ushort) (arisenPreset.AC1Add1 << 8 | arisenPreset.AC1Add2), + new Item { + ItemId = arisenPreset.Leg, + Unk3 = 0, + Color = arisenPreset.LegColour, + PlusValue = 3, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.LegCrest1, + Add = (ushort) (arisenPreset.LC1Add1 << 8 | arisenPreset.LC1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.LegCrest2, + Add = (ushort) (arisenPreset.LC2Add1 << 8 | arisenPreset.LC2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.LegCrest3, + Add = (ushort) (arisenPreset.LC3Add1 << 8 | arisenPreset.LC3Add2), + } }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.ArmCrest2, - Add = (ushort) (arisenPreset.AC2Add1 << 8 | arisenPreset.AC2Add2), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x225, + u3 = 0x01 + } }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.ArmCrest3, - Add = (ushort) (arisenPreset.AC3Add1 << 8 | arisenPreset.AC3Add2), + // Empty EquipElementParamList + }, + new Item { + ItemId = arisenPreset.Legwear, + Unk3 = 0, + Color = arisenPreset.LegwearColour + }, + new Item { + ItemId = arisenPreset.Overwear, + Unk3 = 0, + Color = arisenPreset.OverwearColour + }, + new Item { + ItemId = arisenPreset.Jewelry1, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.J1Crest1, + Add = (ushort) (arisenPreset.J1C1Add1 << 8 | arisenPreset.J1C1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.J1Crest2, + Add = (ushort) (arisenPreset.J1C2Add1 << 8 | arisenPreset.J1C2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.J1Crest3, + Add = (ushort) (arisenPreset.J1C3Add1 << 8 | arisenPreset.J1C3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.J1Crest4, + Add = (ushort) (arisenPreset.J1C4Add1 << 8 | arisenPreset.J1C4Add2), + } + }, + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x1D2, - u3 = 0x01 + new Item { + ItemId = arisenPreset.Jewelry2, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.J2Crest1, + Add = (ushort) (arisenPreset.J2C1Add1 << 8 | arisenPreset.J2C1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.J2Crest2, + Add = (ushort) (arisenPreset.J2C2Add1 << 8 | arisenPreset.J2C2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.J2Crest3, + Add = (ushort) (arisenPreset.J2C3Add1 << 8 | arisenPreset.J2C3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.J2Crest4, + Add = (ushort) (arisenPreset.J2C4Add1 << 8 | arisenPreset.J2C4Add2), + } + }, + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = arisenPreset.Leg, - Unk3 = 0, - Color = arisenPreset.LegColour, - PlusValue = 3, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.LegCrest1, - Add = (ushort) (arisenPreset.LC1Add1 << 8 | arisenPreset.LC1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.LegCrest2, - Add = (ushort) (arisenPreset.LC2Add1 << 8 | arisenPreset.LC2Add2), - }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.LegCrest3, - Add = (ushort) (arisenPreset.LC3Add1 << 8 | arisenPreset.LC3Add2), + new Item { + ItemId = arisenPreset.Jewelry3, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.J3Crest1, + Add = (ushort) (arisenPreset.J3C1Add1 << 8 | arisenPreset.J3C1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.J3Crest2, + Add = (ushort) (arisenPreset.J3C2Add1 << 8 | arisenPreset.J3C2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.J3Crest3, + Add = (ushort) (arisenPreset.J3C3Add1 << 8 | arisenPreset.J3C3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.J3Crest4, + Add = (ushort) (arisenPreset.J3C4Add1 << 8 | arisenPreset.J3C4Add2), + } + }, + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x225, - u3 = 0x01 + new Item { + ItemId = arisenPreset.Jewelry4, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.J4Crest1, + Add = (ushort) (arisenPreset.J4C1Add1 << 8 | arisenPreset.J4C1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.J4Crest2, + Add = (ushort) (arisenPreset.J4C2Add1 << 8 | arisenPreset.J4C2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.J4Crest3, + Add = (ushort) (arisenPreset.J4C3Add1 << 8 | arisenPreset.J4C3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.J4Crest4, + Add = (ushort) (arisenPreset.J4C4Add1 << 8 | arisenPreset.J4C4Add2), + } + }, + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = arisenPreset.Legwear, - Unk3 = 0, - Color = arisenPreset.LegwearColour - }, - new Item { - ItemId = arisenPreset.Overwear, - Unk3 = 0, - Color = arisenPreset.OverwearColour - }, - new Item { - ItemId = arisenPreset.Jewelry1, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.J1Crest1, - Add = (ushort) (arisenPreset.J1C1Add1 << 8 | arisenPreset.J1C1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.J1Crest2, - Add = (ushort) (arisenPreset.J1C2Add1 << 8 | arisenPreset.J1C2Add2), - }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.J1Crest3, - Add = (ushort) (arisenPreset.J1C3Add1 << 8 | arisenPreset.J1C3Add2), - }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.J1Crest4, - Add = (ushort) (arisenPreset.J1C4Add1 << 8 | arisenPreset.J1C4Add2), - } + new Item { + ItemId = arisenPreset.Jewelry5, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List() { + new CDataWeaponCrestData { + SlotNo = 1, + CrestId = arisenPreset.J5Crest1, + Add = (ushort) (arisenPreset.J5C1Add1 << 8 | arisenPreset.J5C1Add2), + }, + new CDataWeaponCrestData { + SlotNo = 2, + CrestId = arisenPreset.J5Crest2, + Add = (ushort) (arisenPreset.J5C2Add1 << 8 | arisenPreset.J5C2Add2), + }, + new CDataWeaponCrestData { + SlotNo = 3, + CrestId = arisenPreset.J5Crest3, + Add = (ushort) (arisenPreset.J5C3Add1 << 8 | arisenPreset.J5C3Add2), + }, + new CDataWeaponCrestData { + SlotNo = 4, + CrestId = arisenPreset.J5Crest4, + Add = (ushort) (arisenPreset.J5C4Add1 << 8 | arisenPreset.J5C4Add2), + } + }, + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, + } }, - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, + new Item { + ItemId = arisenPreset.Lantern, + Unk3 = 0, } - }, - new Item { - ItemId = arisenPreset.Jewelry2, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.J2Crest1, - Add = (ushort) (arisenPreset.J2C1Add1 << 8 | arisenPreset.J2C1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.J2Crest2, - Add = (ushort) (arisenPreset.J2C2Add1 << 8 | arisenPreset.J2C2Add2), - }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.J2Crest3, - Add = (ushort) (arisenPreset.J2C3Add1 << 8 | arisenPreset.J2C3Add2), - }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.J2Crest4, - Add = (ushort) (arisenPreset.J2C4Add1 << 8 | arisenPreset.J2C4Add2), - } + }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() + }, + { + EquipType.Visual, + new List() { + new Item { + ItemId = arisenPreset.VPrimaryWeapon, + Unk3 = 0, + Color = arisenPreset.VPrimaryWeaponColour }, - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = arisenPreset.Jewelry3, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.J3Crest1, - Add = (ushort) (arisenPreset.J3C1Add1 << 8 | arisenPreset.J3C1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.J3Crest2, - Add = (ushort) (arisenPreset.J3C2Add1 << 8 | arisenPreset.J3C2Add2), - }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.J3Crest3, - Add = (ushort) (arisenPreset.J3C3Add1 << 8 | arisenPreset.J3C3Add2), - }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.J3Crest4, - Add = (ushort) (arisenPreset.J3C4Add1 << 8 | arisenPreset.J3C4Add2), - } + new Item { + ItemId = arisenPreset.VSecondaryWeapon, + Unk3 = 0, + Color = arisenPreset.VSecondaryWeaponColour }, - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = arisenPreset.Jewelry4, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.J4Crest1, - Add = (ushort) (arisenPreset.J4C1Add1 << 8 | arisenPreset.J4C1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.J4Crest2, - Add = (ushort) (arisenPreset.J4C2Add1 << 8 | arisenPreset.J4C2Add2), - }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.J4Crest3, - Add = (ushort) (arisenPreset.J4C3Add1 << 8 | arisenPreset.J4C3Add2), - }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.J4Crest4, - Add = (ushort) (arisenPreset.J4C4Add1 << 8 | arisenPreset.J4C4Add2), - } + new Item { + ItemId = arisenPreset.VHead, + Unk3 = 0, + Color = arisenPreset.VHeadColour }, - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = arisenPreset.Jewelry5, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List() { - new CDataWeaponCrestData { - SlotNo = 1, - CrestId = arisenPreset.J5Crest1, - Add = (ushort) (arisenPreset.J5C1Add1 << 8 | arisenPreset.J5C1Add2), - }, - new CDataWeaponCrestData { - SlotNo = 2, - CrestId = arisenPreset.J5Crest2, - Add = (ushort) (arisenPreset.J5C2Add1 << 8 | arisenPreset.J5C2Add2), - }, - new CDataWeaponCrestData { - SlotNo = 3, - CrestId = arisenPreset.J5Crest3, - Add = (ushort) (arisenPreset.J5C3Add1 << 8 | arisenPreset.J5C3Add2), - }, - new CDataWeaponCrestData { - SlotNo = 4, - CrestId = arisenPreset.J5Crest4, - Add = (ushort) (arisenPreset.J5C4Add1 << 8 | arisenPreset.J5C4Add2), - } + new Item { + ItemId = arisenPreset.VBody, + Unk3 = 0, + Color = arisenPreset.VBodyColour }, - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, + new Item { + ItemId = arisenPreset.VClothing, + Unk3 = 0, + Color = arisenPreset.VClothingColour + }, + new Item { + ItemId = arisenPreset.VArm, + Unk3 = 0, + Color = arisenPreset.VArmColour + }, + new Item { + ItemId = arisenPreset.VLeg, + Unk3 = 0, + Color = arisenPreset.VLegColour + }, + new Item { + ItemId = arisenPreset.VLegwear, + Unk3 = 0, + Color = arisenPreset.VLegwearColour + }, + new Item { + ItemId = arisenPreset.VOverwear, + Unk3 = 0, + Color = arisenPreset.VOverwearColour, } + }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() + } + })).ToDictionary(x => x.Item1, x => x.Item2), + Server.AssetRepository.ArisenAsset.Select(arisenPreset => new Tuple>(arisenPreset.Job, new List() { + new Item() + { + ItemId = arisenPreset.ClassItem1 }, - new Item { - ItemId = arisenPreset.Lantern, - Unk3 = 0, - } - }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() - }, - { - EquipType.Visual, - new List() { - new Item { - ItemId = arisenPreset.VPrimaryWeapon, - Unk3 = 0, - Color = arisenPreset.VPrimaryWeaponColour - }, - new Item { - ItemId = arisenPreset.VSecondaryWeapon, - Unk3 = 0, - Color = arisenPreset.VSecondaryWeaponColour - }, - new Item { - ItemId = arisenPreset.VHead, - Unk3 = 0, - Color = arisenPreset.VHeadColour - }, - new Item { - ItemId = arisenPreset.VBody, - Unk3 = 0, - Color = arisenPreset.VBodyColour - }, - new Item { - ItemId = arisenPreset.VClothing, - Unk3 = 0, - Color = arisenPreset.VClothingColour - }, - new Item { - ItemId = arisenPreset.VArm, - Unk3 = 0, - Color = arisenPreset.VArmColour - }, - new Item { - ItemId = arisenPreset.VLeg, - Unk3 = 0, - Color = arisenPreset.VLegColour - }, - new Item { - ItemId = arisenPreset.VLegwear, - Unk3 = 0, - Color = arisenPreset.VLegwearColour - }, - new Item { - ItemId = arisenPreset.VOverwear, - Unk3 = 0, - Color = arisenPreset.VOverwearColour, + new Item() + { + ItemId = arisenPreset.ClassItem1 } - }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() - } - })).ToDictionary(x => x.Item1, x => x.Item2)); - character.CharacterEquipJobItemListDictionary = Server.AssetRepository.ArisenAsset.Select(arisenPreset => new Tuple>(arisenPreset.Job, new List() { - new CDataEquipJobItem { - JobItemId = arisenPreset.ClassItem1, - EquipSlotNo = 1 - }, - new CDataEquipJobItem { - JobItemId = arisenPreset.ClassItem2, - EquipSlotNo = 2 - } - })).ToDictionary(x => x.Item1, x => x.Item2); + })).ToDictionary(x => x.Item1, x => x.Item2) + ); character.HideEquipHead = ActiveJobPreset.DisplayHelmet; character.HideEquipLantern = ActiveJobPreset.DisplayLantern; character.HideEquipHeadPawn = packet.Structure.CharacterInfo.HideEquipHeadPawn; character.HideEquipLanternPawn = packet.Structure.CharacterInfo.HideEquipLanternPawn; - // TODO: Load from Arisen.csv or something - character.NormalSkills = Server.AssetRepository.ArisenAsset.SelectMany(arisenPreset => new List() { - new CDataNormalSkillParam() { - Job = arisenPreset.Job, - SkillNo = 1, - Index = 0, - PreSkillNo = 0 - }, - new CDataNormalSkillParam() { - Job = arisenPreset.Job, - SkillNo = 2, - Index = 0, - PreSkillNo = 0 - }, - new CDataNormalSkillParam() { - Job = arisenPreset.Job, - SkillNo = 3, - Index = 0, - PreSkillNo = 0 - } - }).ToList(); - character.CustomSkills = Server.AssetRepository.ArisenAsset.SelectMany(arisenPreset => new List() { + character.EquippedCustomSkillsDictionary = Server.AssetRepository.ArisenAsset.Select(arisenPreset => new Tuple>(arisenPreset.Job, new List() { // Main Palette new CustomSkill() { Job = arisenPreset.Job, - SlotNo = 1, SkillId = arisenPreset.Cs1MpId, SkillLv = arisenPreset.Cs1MpLv }, new CustomSkill() { Job = arisenPreset.Job, - SlotNo = 2, SkillId = arisenPreset.Cs2MpId, SkillLv = arisenPreset.Cs2MpLv }, new CustomSkill() { Job = arisenPreset.Job, - SlotNo = 3, SkillId = arisenPreset.Cs3MpId, SkillLv = arisenPreset.Cs3MpLv }, new CustomSkill() { Job = arisenPreset.Job, - SlotNo = 4, SkillId = arisenPreset.Cs4MpId, SkillLv = arisenPreset.Cs4MpLv }, + null, null, null, null, null, null, null, null, null, null, null, null, // Padding from slots 0x04 (Main Palette slot 4) to 0x11 (Sub Palette slot 1) // Sub Palette new CustomSkill() { Job = arisenPreset.Job, - SlotNo = (1<<4) | 1, SkillId = arisenPreset.Cs1SpId, SkillLv = arisenPreset.Cs1SpLv }, new CustomSkill() { Job = arisenPreset.Job, - SlotNo = (1<<4) | 2, SkillId = arisenPreset.Cs2SpId, SkillLv = arisenPreset.Cs2SpLv }, new CustomSkill() { Job = arisenPreset.Job, - SlotNo = (1<<4) | 3, SkillId = arisenPreset.Cs3SpId, SkillLv = arisenPreset.Cs3SpLv }, new CustomSkill() { Job = arisenPreset.Job, - SlotNo = (1<<4) | 4, SkillId = arisenPreset.Cs4SpId, SkillLv = arisenPreset.Cs4SpLv } - }).Where(skill => skill.SkillId != 0).ToList(); - character.Abilities = Server.AssetRepository.ArisenAsset.SelectMany(arisenPreset => new List() { + }.Select(skill => skill?.SkillId == 0 ? null : skill).ToList() + )).ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2); + character.LearnedCustomSkills = character.EquippedCustomSkillsDictionary.SelectMany(jobAndSkills => jobAndSkills.Value).Where(skill => skill != null).ToList(); + character.EquippedAbilitiesDictionary = Server.AssetRepository.ArisenAsset.Select(arisenPreset => new Tuple>(arisenPreset.Job, new List() { new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab1Jb, - SlotNo = 1, AbilityId = arisenPreset.Ab1Id, AbilityLv = arisenPreset.Ab1Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab2Jb, - SlotNo = 2, AbilityId = arisenPreset.Ab2Id, AbilityLv = arisenPreset.Ab2Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab3Jb, - SlotNo = 3, AbilityId = arisenPreset.Ab3Id, AbilityLv = arisenPreset.Ab3Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab4Jb, - SlotNo = 4, AbilityId = arisenPreset.Ab4Id, AbilityLv = arisenPreset.Ab4Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab5Jb, - SlotNo = 5, AbilityId = arisenPreset.Ab5Id, AbilityLv = arisenPreset.Ab5Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab6Jb, - SlotNo = 6, AbilityId = arisenPreset.Ab6Id, AbilityLv = arisenPreset.Ab6Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab7Jb, - SlotNo = 7, AbilityId = arisenPreset.Ab7Id, AbilityLv = arisenPreset.Ab7Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab8Jb, - SlotNo = 8, AbilityId = arisenPreset.Ab8Id, AbilityLv = arisenPreset.Ab8Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab9Jb, - SlotNo = 9, AbilityId = arisenPreset.Ab9Id, AbilityLv = arisenPreset.Ab9Lv }, new Ability() { - EquippedToJob = arisenPreset.Job, Job = arisenPreset.Ab10Jb, - SlotNo = 10, AbilityId = arisenPreset.Ab10Id, AbilityLv = arisenPreset.Ab10Lv } - }).Where(aug => aug.AbilityId != 0).ToList(); + }.Select(aug => aug?.AbilityId == 0 ? null : aug).ToList() + )).ToDictionary(tuple => tuple.Item1, tuple => tuple.Item2); + character.LearnedAbilities = character.EquippedAbilitiesDictionary.SelectMany(jobAndAugs => jobAndAugs.Value).Where(aug => aug != null).ToList(); character.Storage = new Storages(Server.AssetRepository.StorageAsset.ToDictionary(x => x.StorageType, x => x.SlotMax)); character.WalletPointList = new List() { @@ -1184,7 +1141,7 @@ public void LoadDefaultPawns(Character character) private Pawn LoadDefaultPawn(Character character, MyPawnCsv myPawnCsvData) { - S2CContextGetPartyMypawnContextNtc pcapPawn = EntitySerializer.Get().Read(data_Dump_Pawn35_3_16); + S2CContextGetPartyMypawnContextNtc pcapPawn = EntitySerializer.Get().Read(data_Dump_Pawn35_3_16); // TODO: Replace pcap data Pawn pawn = new Pawn(character.CharacterId); pawn.PawnId = myPawnCsvData.PawnId; pawn.CharacterId = character.CharacterId; // pawns characterId, refers to the owner @@ -1332,699 +1289,678 @@ private Pawn LoadDefaultPawn(Character character, MyPawnCsv myPawnCsvData) MAtkDownResist = pcapPawn.Context.ResistInfo.MAtkDownResist, MDefDownResist = pcapPawn.Context.ResistInfo.MDefDownResist, }}; - pawn.Equipment = new Equipment(new Dictionary>>() - { + pawn.Equipment = new Equipment( + new Dictionary>>() { - myPawnCsvData.Job, - new Dictionary> - { + { + myPawnCsvData.Job, + new Dictionary> { - EquipType.Performance, - new List() { - new Item { - ItemId = myPawnCsvData.Primary, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List(), - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x59, - u3 = 0x04 + { + EquipType.Performance, + new List() { + new Item { + ItemId = myPawnCsvData.Primary, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List(), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x59, + u3 = 0x04 + } + }, + // Empty EquipElementParamList + }, + new Item { + ItemId = myPawnCsvData.Secondary, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.Head, + Unk3 = 0, + Color = 0, + PlusValue = 3, + WeaponCrestDataList = new List(), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x29D, + u3 = 0x01 + } + }, + // Empty EquipElementParamList + }, + new Item { + ItemId = myPawnCsvData.Body, + Unk3 = 0, + Color = 0, + PlusValue = 4, + WeaponCrestDataList = new List(), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x280, + u3 = 0x01 + } + }, + // Empty EquipElementParamList + }, + new Item { + ItemId = myPawnCsvData.BodyClothing, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.Arm, + Unk3 = 0, + Color = 0, + PlusValue = 3, + WeaponCrestDataList = new List(), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x1D2, + u3 = 0x01 + } + }, + // Empty EquipElementParamList + }, + new Item { + ItemId = myPawnCsvData.Leg, + Unk3 = 0, + Color = 0, + PlusValue = 3, + WeaponCrestDataList = new List(), + ArmorCrestDataList = new List() { + new CDataArmorCrestData { + u0 = 1, + u1 = 1, + u2 = 0x225, + u3 = 0x01 + } + }, + // Empty EquipElementParamList + }, + new Item { + ItemId = myPawnCsvData.LegWear, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.OverWear, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.JewelrySlot1, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List(), + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = myPawnCsvData.Secondary, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.Head, - Unk3 = 0, - Color = 0, - PlusValue = 3, - WeaponCrestDataList = new List(), - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x29D, - u3 = 0x01 + new Item { + ItemId = myPawnCsvData.JewelrySlot2, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List(), + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = myPawnCsvData.Body, - Unk3 = 0, - Color = 0, - PlusValue = 4, - WeaponCrestDataList = new List(), - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x280, - u3 = 0x01 + new Item { + ItemId = myPawnCsvData.JewelrySlot3, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List(), + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = myPawnCsvData.BodyClothing, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.Arm, - Unk3 = 0, - Color = 0, - PlusValue = 3, - WeaponCrestDataList = new List(), - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x1D2, - u3 = 0x01 + new Item { + ItemId = myPawnCsvData.JewelrySlot4, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List(), + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = myPawnCsvData.Leg, - Unk3 = 0, - Color = 0, - PlusValue = 3, - WeaponCrestDataList = new List(), - ArmorCrestDataList = new List() { - new CDataArmorCrestData { - u0 = 1, - u1 = 1, - u2 = 0x225, - u3 = 0x01 + new Item { + ItemId = myPawnCsvData.JewelrySlot5, + Unk3 = 0, + Color = 0, + PlusValue = 0, + WeaponCrestDataList = new List(), + // Empty ArmorCrestDataList + EquipElementParamList = new List() { + new CDataEquipElementParam { + SlotNo = 0x2, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x3, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x4, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x5, + ItemId = 0x02 + }, + new CDataEquipElementParam { + SlotNo = 0x6, + ItemId = 0x50 + }, + new CDataEquipElementParam { + SlotNo = 0x7, + ItemId = 0x3C + }, + new CDataEquipElementParam { + SlotNo = 0x8, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x9, + ItemId = 0x07 + }, + new CDataEquipElementParam { + SlotNo = 0xA, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xB, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xC, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xD, + ItemId = 0x04 + }, + new CDataEquipElementParam { + SlotNo = 0xE, + ItemId = 0x00 + }, + new CDataEquipElementParam { + SlotNo = 0xF, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x10, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x11, + ItemId = 0x05 + }, + new CDataEquipElementParam { + SlotNo = 0x12, + ItemId = 0x05 + }, } }, - // Empty EquipElementParamList - }, - new Item { - ItemId = myPawnCsvData.LegWear, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.OverWear, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.JewelrySlot1, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List(), - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = myPawnCsvData.JewelrySlot2, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List(), - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = myPawnCsvData.JewelrySlot3, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List(), - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, + new Item { + ItemId = myPawnCsvData.Lantern, + Unk3 = 0, } - }, - new Item { - ItemId = myPawnCsvData.JewelrySlot4, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List(), - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = myPawnCsvData.JewelrySlot5, - Unk3 = 0, - Color = 0, - PlusValue = 0, - WeaponCrestDataList = new List(), - // Empty ArmorCrestDataList - EquipElementParamList = new List() { - new CDataEquipElementParam { - SlotNo = 0x2, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x3, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x4, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x5, - ItemId = 0x02 - }, - new CDataEquipElementParam { - SlotNo = 0x6, - ItemId = 0x50 - }, - new CDataEquipElementParam { - SlotNo = 0x7, - ItemId = 0x3C - }, - new CDataEquipElementParam { - SlotNo = 0x8, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x9, - ItemId = 0x07 - }, - new CDataEquipElementParam { - SlotNo = 0xA, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xB, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xC, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xD, - ItemId = 0x04 - }, - new CDataEquipElementParam { - SlotNo = 0xE, - ItemId = 0x00 - }, - new CDataEquipElementParam { - SlotNo = 0xF, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x10, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x11, - ItemId = 0x05 - }, - new CDataEquipElementParam { - SlotNo = 0x12, - ItemId = 0x05 - }, - } - }, - new Item { - ItemId = myPawnCsvData.Lantern, - Unk3 = 0, - } - }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() - }, - { - EquipType.Visual, - new List() { - new Item { - ItemId = myPawnCsvData.VPrimary, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VSecondary, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VHead, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VBody, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VBodyClothing, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VArm, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VLeg, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VLegWear, - Unk3 = 0, - Color = 0 - }, - new Item { - ItemId = myPawnCsvData.VOverWear, - Unk3 = 0, - Color = 0, - }, - null, - null, - null, - null, - null, - null - }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() + }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() + }, + { + EquipType.Visual, + new List() { + new Item { + ItemId = myPawnCsvData.VPrimary, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VSecondary, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VHead, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VBody, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VBodyClothing, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VArm, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VLeg, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VLegWear, + Unk3 = 0, + Color = 0 + }, + new Item { + ItemId = myPawnCsvData.VOverWear, + Unk3 = 0, + Color = 0, + }, + null, + null, + null, + null, + null, + null + }.Select(item => (item == null || item.ItemId == 0) ? null : item).ToList() + } } } - } - }); - pawn.CharacterEquipJobItemListDictionary = new Dictionary>() { { myPawnCsvData.Job, new List() { - new CDataEquipJobItem { - JobItemId = myPawnCsvData.JobItem1, - EquipSlotNo = myPawnCsvData.JobItemSlot1 - }, - new CDataEquipJobItem { - JobItemId = myPawnCsvData.JobItem2, - EquipSlotNo = myPawnCsvData.JobItemSlot2 - } - }}}; - pawn.NormalSkills = new List() { - new CDataNormalSkillParam() { - Job = myPawnCsvData.Job, - SkillNo = myPawnCsvData.NormalSkill1, - Index = 0, - PreSkillNo = 0 }, - new CDataNormalSkillParam() { - Job = myPawnCsvData.Job, - SkillNo = myPawnCsvData.NormalSkill2, - Index = 0, - PreSkillNo = 0 - }, - new CDataNormalSkillParam() { - Job = myPawnCsvData.Job, - SkillNo = myPawnCsvData.NormalSkill3, - Index = 0, - PreSkillNo = 0 + new Dictionary>() + { + { + myPawnCsvData.Job, + new List() { + new Item() + { + ItemId = myPawnCsvData.JobItem1 + }, + new Item() + { + ItemId = myPawnCsvData.JobItem2 + } + } + } } - }.Where(coreSkill => coreSkill.SkillNo != 0).ToList(); - pawn.CustomSkills = new List() { - // Main Palette - new CustomSkill() { - Job = myPawnCsvData.Job, - SlotNo = 1, - SkillId = myPawnCsvData.CustomSkillId1, - SkillLv = myPawnCsvData.CustomSkillLv1 - }, - new CustomSkill() { - Job = myPawnCsvData.Job, - SlotNo = 2, - SkillId = myPawnCsvData.CustomSkillId2, - SkillLv = myPawnCsvData.CustomSkillLv2 - }, - new CustomSkill() { - Job = myPawnCsvData.Job, - SlotNo = 3, - SkillId = myPawnCsvData.CustomSkillId3, - SkillLv = myPawnCsvData.CustomSkillLv3 - }, - new CustomSkill() { - Job = myPawnCsvData.Job, - SlotNo = 4, - SkillId = myPawnCsvData.CustomSkillId4, - SkillLv = myPawnCsvData.CustomSkillLv4 + ); + pawn.LearnedNormalSkills = new List(); + pawn.EquippedCustomSkillsDictionary = new Dictionary>() + { + { + myPawnCsvData.Job, + new List() { + // Main Palette + new CustomSkill() { + Job = myPawnCsvData.Job, + SkillId = myPawnCsvData.CustomSkillId1, + SkillLv = myPawnCsvData.CustomSkillLv1 + }, + new CustomSkill() { + Job = myPawnCsvData.Job, + SkillId = myPawnCsvData.CustomSkillId2, + SkillLv = myPawnCsvData.CustomSkillLv2 + }, + new CustomSkill() { + Job = myPawnCsvData.Job, + SkillId = myPawnCsvData.CustomSkillId3, + SkillLv = myPawnCsvData.CustomSkillLv3 + }, + new CustomSkill() { + Job = myPawnCsvData.Job, + SkillId = myPawnCsvData.CustomSkillId4, + SkillLv = myPawnCsvData.CustomSkillLv4 + } + }.Select(skill => skill?.SkillId == 0 ? null : skill).ToList() } - }.Where(skill => skill.SkillId != 0).ToList(); - pawn.Abilities = new List() { - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob1, - SlotNo = 1, - AbilityId = myPawnCsvData.AbilityId1, - AbilityLv = myPawnCsvData.AbilityLv1 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob2, - SlotNo = 2, - AbilityId = myPawnCsvData.AbilityId2, - AbilityLv = myPawnCsvData.AbilityLv2 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob3, - SlotNo = 3, - AbilityId = myPawnCsvData.AbilityId3, - AbilityLv = myPawnCsvData.AbilityLv3 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob4, - SlotNo = 4, - AbilityId = myPawnCsvData.AbilityId4, - AbilityLv = myPawnCsvData.AbilityLv4 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob5, - SlotNo = 5, - AbilityId = myPawnCsvData.AbilityId5, - AbilityLv = myPawnCsvData.AbilityLv5 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob6, - SlotNo = 6, - AbilityId = myPawnCsvData.AbilityId6, - AbilityLv = myPawnCsvData.AbilityLv6 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob7, - SlotNo = 7, - AbilityId = myPawnCsvData.AbilityId7, - AbilityLv = myPawnCsvData.AbilityLv7 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob8, - SlotNo = 8, - AbilityId = myPawnCsvData.AbilityId8, - AbilityLv = myPawnCsvData.AbilityLv8 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob9, - SlotNo = 9, - AbilityId = myPawnCsvData.AbilityId9, - AbilityLv = myPawnCsvData.AbilityLv9 - }, - new Ability() { - EquippedToJob = myPawnCsvData.Job, - Job = (JobId) myPawnCsvData.AbilityJob10, - SlotNo = 10, - AbilityId = myPawnCsvData.AbilityId10, - AbilityLv = myPawnCsvData.AbilityLv10 + }; + pawn.LearnedCustomSkills = pawn.EquippedCustomSkillsDictionary.SelectMany(skills => skills.Value).Where(skill => skill != null).ToList(); + pawn.EquippedAbilitiesDictionary = new Dictionary>() + { + { + myPawnCsvData.Job, + new List() { + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob1, + AbilityId = myPawnCsvData.AbilityId1, + AbilityLv = myPawnCsvData.AbilityLv1 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob2, + AbilityId = myPawnCsvData.AbilityId2, + AbilityLv = myPawnCsvData.AbilityLv2 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob3, + AbilityId = myPawnCsvData.AbilityId3, + AbilityLv = myPawnCsvData.AbilityLv3 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob4, + AbilityId = myPawnCsvData.AbilityId4, + AbilityLv = myPawnCsvData.AbilityLv4 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob5, + AbilityId = myPawnCsvData.AbilityId5, + AbilityLv = myPawnCsvData.AbilityLv5 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob6, + AbilityId = myPawnCsvData.AbilityId6, + AbilityLv = myPawnCsvData.AbilityLv6 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob7, + AbilityId = myPawnCsvData.AbilityId7, + AbilityLv = myPawnCsvData.AbilityLv7 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob8, + AbilityId = myPawnCsvData.AbilityId8, + AbilityLv = myPawnCsvData.AbilityLv8 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob9, + AbilityId = myPawnCsvData.AbilityId9, + AbilityLv = myPawnCsvData.AbilityLv9 + }, + new Ability() { + Job = (JobId) myPawnCsvData.AbilityJob10, + AbilityId = myPawnCsvData.AbilityId10, + AbilityLv = myPawnCsvData.AbilityLv10 + } + }.Select(aug => aug?.AbilityId == 0 ? null : aug).ToList() } - }.Where(aug => aug.AbilityId != 0).ToList(); + }; + pawn.LearnedAbilities = pawn.EquippedAbilitiesDictionary.SelectMany(augs => augs.Value).Where(aug => aug != null).ToList(); pawn.PawnReactionList = new List() { new CDataPawnReaction() diff --git a/Arrowgene.Ddon.Shared/AssetRepository.cs b/Arrowgene.Ddon.Shared/AssetRepository.cs index 6519cb683..cc9f58a6c 100644 --- a/Arrowgene.Ddon.Shared/AssetRepository.cs +++ b/Arrowgene.Ddon.Shared/AssetRepository.cs @@ -101,11 +101,18 @@ private void Load(List list, string key, IAssetDeserializer readerWrite Logger.Error($"Could not load '{key}', file does not exist"); } - List assets = readerWriter.ReadPath(file.FullName); + try { + List assets = readerWriter.ReadPath(file.FullName); - list.Clear(); - list.AddRange(assets); - OnAssetChanged(key, list); + list.Clear(); + list.AddRange(assets); + OnAssetChanged(key, list); + } + catch (Exception e) + { + Logger.Error($"Could not load '{key}', error reading the file contents"); + Logger.Exception(e); + } } private void RegisterFileSystemWatcher(List list, string key, IAssetDeserializer readerWriter) diff --git a/Arrowgene.Ddon.Shared/Csv/ClientItemInfoCsv.cs b/Arrowgene.Ddon.Shared/Csv/ClientItemInfoCsv.cs index 1095ef6f5..71beecb3d 100644 --- a/Arrowgene.Ddon.Shared/Csv/ClientItemInfoCsv.cs +++ b/Arrowgene.Ddon.Shared/Csv/ClientItemInfoCsv.cs @@ -1,7 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using Arrowgene.Ddon.Shared.Model; namespace Arrowgene.Ddon.Shared.Csv @@ -13,13 +9,13 @@ public class ClientItemInfoCsv : CsvReaderWriter protected override ClientItemInfo CreateInstance(string[] properties) { if (!uint.TryParse(properties[0], out uint itemId)) return null; - if (!byte.TryParse(properties[1], out byte storageType)) return null; + if (!byte.TryParse(properties[1], out byte category)) return null; if (!ushort.TryParse(properties[2], out ushort price)) return null; if (!byte.TryParse(properties[3], out byte stackLimit)) return null; return new ClientItemInfo { ItemId = itemId, - StorageType = (StorageType) storageType, + Category = category, Price = price, StackLimit = stackLimit }; diff --git a/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs b/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs index 3af9ace42..0e78c446f 100644 --- a/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs +++ b/Arrowgene.Ddon.Shared/Entity/EntitySerializer.cs @@ -76,6 +76,8 @@ static EntitySerializer() Create(new CDataEquipElementParam.Serializer()); Create(new CDataWeaponCrestData.Serializer()); Create(new CDataArmorCrestData.Serializer()); + Create(new CDataChangeEquipJobItem.Serializer()); + Create(new CDataCharacterEditUpdatePawnEditParamReqUnk0.Serializer()); Create(new CDataEquipItemInfo.Serializer()); Create(new CDataEquipJobItem.Serializer()); Create(new CDataErrorMessage.Serializer()); @@ -92,6 +94,7 @@ static EntitySerializer() Create(new CDataHistoryElement.Serializer()); Create(new CDataItemList.Serializer()); Create(new CDataItemSort.Serializer()); + Create(new CDataItemUIdList.Serializer()); Create(new CDataItemUpdateResult.Serializer()); Create(new CDataJobChangeInfo.Serializer()); Create(new CDataJobChangeJobResUnk0.Serializer()); @@ -151,7 +154,6 @@ static EntitySerializer() Create(new CDataQuestLayoutFlag.Serializer()); Create(new CDataQuestLayoutFlagSetInfo.Serializer()); Create(new CDataQuestList.Serializer()); - Create(new CDataQuestListUnk0.Serializer()); Create(new CDataQuestListUnk1.Serializer()); Create(new CDataQuestListUnk7.Serializer()); Create(new CDataQuestLog.Serializer()); @@ -193,6 +195,10 @@ static EntitySerializer() Create(new C2SCharacterCharacterPenaltyReviveReq.Serializer()); Create(new C2SCharacterCharacterPointReviveReq.Serializer()); Create(new C2SCharacterCharacterSearchReq.Serializer()); + Create(new C2SCharacterEditUpdateCharacterEditParamReq.Serializer()); + Create(new C2SCharacterEditUpdateCharacterEditParamExReq.Serializer()); + Create(new C2SCharacterEditUpdatePawnEditParamReq.Serializer()); + Create(new C2SCharacterEditUpdatePawnEditParamExReq.Serializer()); Create(new C2SCharacterChargeRevivePointReq.Serializer()); Create(new C2SCharacterGetReviveChargeableTimeReq.Serializer()); Create(new C2SCharacterPawnGoldenReviveReq.Serializer()); @@ -213,8 +219,10 @@ static EntitySerializer() Create(new C2SContextGetSetContextReq.Serializer()); Create(new C2SContextSetContextNtc.Serializer()); + Create(new C2SEquipChangeCharacterEquipJobItemReq.Serializer()); Create(new C2SEquipChangeCharacterEquipReq.Serializer()); Create(new C2SEquipChangeCharacterStorageEquipReq.Serializer()); + Create(new C2SEquipChangePawnEquipJobItemReq.Serializer()); Create(new C2SEquipChangePawnEquipReq.Serializer()); Create(new C2SEquipChangePawnStorageEquipReq.Serializer()); Create(new C2SEquipGetCharacterEquipListReq.Serializer()); @@ -247,6 +255,7 @@ static EntitySerializer() Create(new C2SItemSortGetItemSortDataBinReq.Serializer()); Create(new C2SItemSortSetItemSortDataBinReq.Serializer()); Create(new C2SItemUseBagItemReq.Serializer()); + Create(new C2SItemUseJobItemsReq.Serializer()); Create(new C2SJobChangeJobReq.Serializer()); Create(new C2SJobChangePawnJobReq.Serializer()); Create(new C2SJobGetJobChangeListReq.Serializer()); @@ -311,6 +320,12 @@ static EntitySerializer() Create(new C2SSkillGetPresetAbilityListReq.Serializer()); Create(new C2SSkillGetSetAbilityListReq.Serializer()); Create(new C2SSkillGetSetSkillListReq.Serializer()); + Create(new C2SSkillLearnAbilityReq.Serializer()); + Create(new C2SSkillLearnNormalSkillReq.Serializer()); + Create(new C2SSkillLearnPawnAbilityReq.Serializer()); + Create(new C2SSkillLearnPawnNormalSkillReq.Serializer()); + Create(new C2SSkillLearnPawnSkillReq.Serializer()); + Create(new C2SSkillLearnSkillReq.Serializer()); Create(new C2SSkillSetAbilityReq.Serializer()); Create(new C2SSkillSetOffAbilityReq.Serializer()); Create(new C2SSkillSetOffPawnAbilityReq.Serializer()); @@ -360,6 +375,12 @@ static EntitySerializer() Create(new S2CCharacterChargeRevivePointRes.Serializer()); Create(new S2CCharacterCommunityCharacterStatusUpdateNtc.Serializer()); Create(new S2CCharacterDecideCharacterIdRes.Serializer()); + Create(new S2CCharacterEditUpdateCharacterEditParamRes.Serializer()); + Create(new S2CCharacterEditUpdateCharacterEditParamExRes.Serializer()); + Create(new S2CCharacterEditUpdateEditParamNtc.Serializer()); + Create(new S2CCharacterEditUpdateEditParamExNtc.Serializer()); + Create(new S2CCharacterEditUpdatePawnEditParamRes.Serializer()); + Create(new S2CCharacterEditUpdatePawnEditParamExRes.Serializer()); Create(new S2CCharacterFinishDeathPenaltyNtc.Serializer()); Create(new S2CCharacterGetCharacterStatusNtc.Serializer()); Create(new S2CCharacterGetReviveChargeableTimeRes.Serializer()); @@ -390,10 +411,15 @@ static EntitySerializer() Create(new S2CContextMasterChangeNtc.Serializer()); Create(new S2CContextMasterInfoNtc.Serializer()); Create(new S2CContextSetContextBaseNtc.Serializer()); + Create(new S2CContextSetContextNtc.Serializer()); + Create(new S2CEquipChangeCharacterEquipJobItemNtc.Serializer()); + Create(new S2CEquipChangeCharacterEquipJobItemRes.Serializer()); Create(new S2CEquipChangeCharacterEquipNtc.Serializer()); Create(new S2CEquipChangeCharacterEquipRes.Serializer()); Create(new S2CEquipChangeCharacterStorageEquipRes.Serializer()); + Create(new S2CEquipChangePawnEquipJobItemNtc.Serializer()); + Create(new S2CEquipChangePawnEquipJobItemRes.Serializer()); Create(new S2CEquipChangePawnEquipNtc.Serializer()); Create(new S2CEquipChangePawnEquipRes.Serializer()); Create(new S2CEquipChangePawnStorageEquipRes.Serializer()); @@ -432,6 +458,7 @@ static EntitySerializer() Create(new S2CItemMoveItemRes.Serializer()); Create(new S2CItemSellItemRes.Serializer()); Create(new S2CItemUseBagItemRes.Serializer()); + Create(new S2CItemUseJobItemsRes.Serializer()); Create(new S2CJob_33_3_16_Ntc.Serializer()); Create(new S2CJobChangeJobNtc.Serializer()); Create(new S2CJobChangeJobRes.Serializer()); @@ -528,6 +555,12 @@ static EntitySerializer() Create(new S2CSkillGetPresetAbilityListRes.Serializer()); Create(new S2CSkillGetSetAbilityListRes.Serializer()); Create(new S2CSkillGetSetSkillListRes.Serializer()); + Create(new S2CSkillLearnAbilityRes.Serializer()); + Create(new S2CSkillLearnNormalSkillRes.Serializer()); + Create(new S2CSkillLearnPawnAbilityRes.Serializer()); + Create(new S2CSkillLearnPawnNormalSkillRes.Serializer()); + Create(new S2CSkillLearnPawnSkillRes.Serializer()); + Create(new S2CSkillLearnSkillRes.Serializer()); Create(new S2CSkillPawnAbilitySetNtc.Serializer()); Create(new S2CSkillPawnCustomSkillSetNtc.Serializer()); Create(new S2CSkillSetAbilityRes.Serializer()); @@ -539,7 +572,6 @@ static EntitySerializer() Create(new S2CSkillSetPawnSkillRes.Serializer()); Create(new S2CSkillSetSkillRes.Serializer()); Create(new S2CSetCommunicationShortcutRes.Serializer()); - Create(new S2CContextSetContextNtc.Serializer()); Create(new S2CSetShortcutRes.Serializer()); Create(new S2CShopBuyShopGoodsRes.Serializer()); Create(new S2CShopGetShopGoodsListRes.Serializer()); diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdateCharacterEditParamExReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdateCharacterEditParamExReq.cs new file mode 100644 index 000000000..263127264 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdateCharacterEditParamExReq.cs @@ -0,0 +1,48 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SCharacterEditUpdateCharacterEditParamExReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_REQ; + + public C2SCharacterEditUpdateCharacterEditParamExReq() + { + EditInfo = new CDataEditInfo(); + FirstName = string.Empty; + } + + // One of these bytes is UpdateType + public byte Unk0 { get; set; } + public byte Unk1 { get; set; } + public uint Unk2 { get; set; } + public CDataEditInfo EditInfo { get; set; } + public string FirstName { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SCharacterEditUpdateCharacterEditParamExReq obj) + { + WriteByte(buffer, obj.Unk0); + WriteByte(buffer, obj.Unk1); + WriteUInt32(buffer, obj.Unk2); + WriteEntity(buffer, obj.EditInfo); + WriteMtString(buffer, obj.FirstName); + } + + public override C2SCharacterEditUpdateCharacterEditParamExReq Read(IBuffer buffer) + { + C2SCharacterEditUpdateCharacterEditParamExReq obj = new C2SCharacterEditUpdateCharacterEditParamExReq(); + obj.Unk0 = ReadByte(buffer); + obj.Unk1 = ReadByte(buffer); + obj.Unk2 = ReadUInt32(buffer); + obj.EditInfo = ReadEntity(buffer); + obj.FirstName = ReadMtString(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdateCharacterEditParamReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdateCharacterEditParamReq.cs new file mode 100644 index 000000000..e7697c88f --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdateCharacterEditParamReq.cs @@ -0,0 +1,44 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SCharacterEditUpdateCharacterEditParamReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_REQ; + + public C2SCharacterEditUpdateCharacterEditParamReq() + { + EditInfo = new CDataEditInfo(); + } + + // One of these bytes is UpdateType + public byte Unk0 { get; set; } + public byte Unk1 { get; set; } + public uint Unk2 { get; set; } + public CDataEditInfo EditInfo { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SCharacterEditUpdateCharacterEditParamReq obj) + { + WriteByte(buffer, obj.Unk0); + WriteByte(buffer, obj.Unk1); + WriteUInt32(buffer, obj.Unk2); + WriteEntity(buffer, obj.EditInfo); + } + + public override C2SCharacterEditUpdateCharacterEditParamReq Read(IBuffer buffer) + { + C2SCharacterEditUpdateCharacterEditParamReq obj = new C2SCharacterEditUpdateCharacterEditParamReq(); + obj.Unk0 = ReadByte(buffer); + obj.Unk1 = ReadByte(buffer); + obj.Unk2 = ReadUInt32(buffer); + obj.EditInfo = ReadEntity(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdatePawnEditParamExReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdatePawnEditParamExReq.cs new file mode 100644 index 000000000..c19955b13 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdatePawnEditParamExReq.cs @@ -0,0 +1,49 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SCharacterEditUpdatePawnEditParamExReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_REQ; + + public C2SCharacterEditUpdatePawnEditParamExReq() + { + Unk0 = new CDataCharacterEditUpdatePawnEditParamReqUnk0(); + EditInfo = new CDataEditInfo(); + Name = string.Empty; + } + + public byte SlotNo { get; set; } + public byte UpdateType { get; set; } + public CDataCharacterEditUpdatePawnEditParamReqUnk0 Unk0 { get; set; } + public CDataEditInfo EditInfo { get; set; } + public string Name { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SCharacterEditUpdatePawnEditParamExReq obj) + { + WriteByte(buffer, obj.SlotNo); + WriteByte(buffer, obj.UpdateType); + WriteEntity(buffer, obj.Unk0); + WriteEntity(buffer, obj.EditInfo); + WriteMtString(buffer, obj.Name); + } + + public override C2SCharacterEditUpdatePawnEditParamExReq Read(IBuffer buffer) + { + C2SCharacterEditUpdatePawnEditParamExReq obj = new C2SCharacterEditUpdatePawnEditParamExReq(); + obj.SlotNo = ReadByte(buffer); + obj.UpdateType = ReadByte(buffer); + obj.Unk0 = ReadEntity(buffer); + obj.EditInfo = ReadEntity(buffer); + obj.Name = ReadMtString(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdatePawnEditParamReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdatePawnEditParamReq.cs new file mode 100644 index 000000000..b1a9942e8 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SCharacterEditUpdatePawnEditParamReq.cs @@ -0,0 +1,44 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SCharacterEditUpdatePawnEditParamReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_REQ; + + public C2SCharacterEditUpdatePawnEditParamReq() + { + Unk0 = new CDataCharacterEditUpdatePawnEditParamReqUnk0(); + EditInfo = new CDataEditInfo(); + } + + public byte SlotNo { get; set; } + public byte UpdateType { get; set; } + public CDataCharacterEditUpdatePawnEditParamReqUnk0 Unk0 { get; set; } + public CDataEditInfo EditInfo { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SCharacterEditUpdatePawnEditParamReq obj) + { + WriteByte(buffer, obj.SlotNo); + WriteByte(buffer, obj.UpdateType); + WriteEntity(buffer, obj.Unk0); + WriteEntity(buffer, obj.EditInfo); + } + + public override C2SCharacterEditUpdatePawnEditParamReq Read(IBuffer buffer) + { + C2SCharacterEditUpdatePawnEditParamReq obj = new C2SCharacterEditUpdatePawnEditParamReq(); + obj.SlotNo = ReadByte(buffer); + obj.UpdateType = ReadByte(buffer); + obj.Unk0 = ReadEntity(buffer); + obj.EditInfo = ReadEntity(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipChangeCharacterEquipJobItemReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipChangeCharacterEquipJobItemReq.cs new file mode 100644 index 000000000..6e0c521f1 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipChangeCharacterEquipJobItemReq.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SEquipChangeCharacterEquipJobItemReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_REQ; + + public C2SEquipChangeCharacterEquipJobItemReq() + { + ChangeEquipJobItemList = new List(); + } + + public List ChangeEquipJobItemList { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SEquipChangeCharacterEquipJobItemReq obj) + { + WriteEntityList(buffer, obj.ChangeEquipJobItemList); + } + + public override C2SEquipChangeCharacterEquipJobItemReq Read(IBuffer buffer) + { + C2SEquipChangeCharacterEquipJobItemReq obj = new C2SEquipChangeCharacterEquipJobItemReq(); + obj.ChangeEquipJobItemList = ReadEntityList(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipChangePawnEquipJobItemReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipChangePawnEquipJobItemReq.cs new file mode 100644 index 000000000..de966da83 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SEquipChangePawnEquipJobItemReq.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SEquipChangePawnEquipJobItemReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_REQ; + + public C2SEquipChangePawnEquipJobItemReq() + { + ChangeEquipJobItemList = new List(); + } + + public uint PawnId { get; set; } + public List ChangeEquipJobItemList { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SEquipChangePawnEquipJobItemReq obj) + { + WriteUInt32(buffer, obj.PawnId); + WriteEntityList(buffer, obj.ChangeEquipJobItemList); + } + + public override C2SEquipChangePawnEquipJobItemReq Read(IBuffer buffer) + { + C2SEquipChangePawnEquipJobItemReq obj = new C2SEquipChangePawnEquipJobItemReq(); + obj.PawnId = ReadUInt32(buffer); + obj.ChangeEquipJobItemList = ReadEntityList(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SItemUseJobItemsReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SItemUseJobItemsReq.cs new file mode 100644 index 000000000..986e89371 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SItemUseJobItemsReq.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SItemUseJobItemsReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_ITEM_USE_JOB_ITEMS_REQ; + + public C2SItemUseJobItemsReq() + { + ItemUIdList = new List(); + } + + public List ItemUIdList { get; set; } + + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SItemUseJobItemsReq obj) + { + WriteEntityList(buffer, obj.ItemUIdList); + } + + public override C2SItemUseJobItemsReq Read(IBuffer buffer) + { + C2SItemUseJobItemsReq obj = new(); + obj.ItemUIdList = ReadEntityList(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnAbilityReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnAbilityReq.cs new file mode 100644 index 000000000..e4d0e2ab0 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnAbilityReq.cs @@ -0,0 +1,35 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SSkillLearnAbilityReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_SKILL_LEARN_ABILITY_REQ; + + public JobId Job { get; set; } + public uint AbilityId { get; set; } + public byte AbilityLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SSkillLearnAbilityReq obj) + { + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.AbilityId); + WriteByte(buffer, obj.AbilityLv); + } + + public override C2SSkillLearnAbilityReq Read(IBuffer buffer) + { + C2SSkillLearnAbilityReq obj = new C2SSkillLearnAbilityReq(); + obj.Job = (JobId) ReadByte(buffer); + obj.AbilityId = ReadUInt32(buffer); + obj.AbilityLv = ReadByte(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnNormalSkillReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnNormalSkillReq.cs new file mode 100644 index 000000000..e7b4953dd --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnNormalSkillReq.cs @@ -0,0 +1,32 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SSkillLearnNormalSkillReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_SKILL_LEARN_NORMAL_SKILL_REQ; + + public JobId Job { get; set; } + public uint SkillId { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SSkillLearnNormalSkillReq obj) + { + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.SkillId); + } + + public override C2SSkillLearnNormalSkillReq Read(IBuffer buffer) + { + C2SSkillLearnNormalSkillReq obj = new C2SSkillLearnNormalSkillReq(); + obj.Job = (JobId) ReadByte(buffer); + obj.SkillId = ReadUInt32(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnAbilityReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnAbilityReq.cs new file mode 100644 index 000000000..4f61ea1de --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnAbilityReq.cs @@ -0,0 +1,34 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SSkillLearnPawnAbilityReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_SKILL_LEARN_PAWN_ABILITY_REQ; + + public uint PawnId { get; set; } + public uint AbilityId { get; set; } + public byte AbilityLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SSkillLearnPawnAbilityReq obj) + { + WriteUInt32(buffer, obj.PawnId); + WriteUInt32(buffer, obj.AbilityId); + WriteByte(buffer, obj.AbilityLv); + } + + public override C2SSkillLearnPawnAbilityReq Read(IBuffer buffer) + { + C2SSkillLearnPawnAbilityReq obj = new C2SSkillLearnPawnAbilityReq(); + obj.PawnId = ReadUInt32(buffer); + obj.AbilityId = ReadUInt32(buffer); + obj.AbilityLv = ReadByte(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnNormalSkillReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnNormalSkillReq.cs new file mode 100644 index 000000000..14fe7e5cb --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnNormalSkillReq.cs @@ -0,0 +1,35 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SSkillLearnPawnNormalSkillReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_SKILL_LEARN_PAWN_NORMAL_SKILL_REQ; + + public uint PawnId { get; set; } + public JobId Job { get; set; } + public uint SkillId { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SSkillLearnPawnNormalSkillReq obj) + { + WriteUInt32(buffer, obj.PawnId); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.SkillId); + } + + public override C2SSkillLearnPawnNormalSkillReq Read(IBuffer buffer) + { + C2SSkillLearnPawnNormalSkillReq obj = new C2SSkillLearnPawnNormalSkillReq(); + obj.PawnId = ReadUInt32(buffer); + obj.Job = (JobId) ReadByte(buffer); + obj.SkillId = ReadUInt32(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnSkillReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnSkillReq.cs new file mode 100644 index 000000000..c112345d7 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnPawnSkillReq.cs @@ -0,0 +1,38 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SSkillLearnPawnSkillReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_SKILL_LEARN_PAWN_SKILL_REQ; + + public uint PawnId { get; set; } + public JobId Job { get; set; } + public uint SkillId { get; set; } + public byte SkillLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SSkillLearnPawnSkillReq obj) + { + WriteUInt32(buffer, obj.PawnId); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.SkillId); + WriteByte(buffer, obj.SkillLv); + } + + public override C2SSkillLearnPawnSkillReq Read(IBuffer buffer) + { + C2SSkillLearnPawnSkillReq obj = new C2SSkillLearnPawnSkillReq(); + obj.PawnId = ReadUInt32(buffer); + obj.Job = (JobId) ReadByte(buffer); + obj.SkillId = ReadUInt32(buffer); + obj.SkillLv = ReadByte(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnSkillReq.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnSkillReq.cs new file mode 100644 index 000000000..402870d13 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/C2SSkillLearnSkillReq.cs @@ -0,0 +1,35 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class C2SSkillLearnSkillReq : IPacketStructure + { + public PacketId Id => PacketId.C2S_SKILL_LEARN_SKILL_REQ; + + public JobId Job { get; set; } + public uint SkillId { get; set; } + public byte SkillLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, C2SSkillLearnSkillReq obj) + { + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.SkillId); + WriteByte(buffer, obj.SkillLv); + } + + public override C2SSkillLearnSkillReq Read(IBuffer buffer) + { + C2SSkillLearnSkillReq obj = new C2SSkillLearnSkillReq(); + obj.Job = (JobId) ReadByte(buffer); + obj.SkillId = ReadUInt32(buffer); + obj.SkillLv = ReadByte(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateCharacterEditParamExRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateCharacterEditParamExRes.cs new file mode 100644 index 000000000..157b99570 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateCharacterEditParamExRes.cs @@ -0,0 +1,25 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CCharacterEditUpdateCharacterEditParamExRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_RES; + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CCharacterEditUpdateCharacterEditParamExRes obj) + { + WriteServerResponse(buffer, obj); + } + + public override S2CCharacterEditUpdateCharacterEditParamExRes Read(IBuffer buffer) + { + S2CCharacterEditUpdateCharacterEditParamExRes obj = new S2CCharacterEditUpdateCharacterEditParamExRes(); + ReadServerResponse(buffer, obj); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateCharacterEditParamRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateCharacterEditParamRes.cs new file mode 100644 index 000000000..47911393c --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateCharacterEditParamRes.cs @@ -0,0 +1,26 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CCharacterEditUpdateCharacterEditParamRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_RES; + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CCharacterEditUpdateCharacterEditParamRes obj) + { + WriteServerResponse(buffer, obj); + } + + public override S2CCharacterEditUpdateCharacterEditParamRes Read(IBuffer buffer) + { + S2CCharacterEditUpdateCharacterEditParamRes obj = new S2CCharacterEditUpdateCharacterEditParamRes(); + ReadServerResponse(buffer, obj); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateEditParamExNtc.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateEditParamExNtc.cs new file mode 100644 index 000000000..15789b397 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateEditParamExNtc.cs @@ -0,0 +1,44 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CCharacterEditUpdateEditParamExNtc : IPacketStructure + { + public PacketId Id => PacketId.S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_EX_NTC; + + public S2CCharacterEditUpdateEditParamExNtc() + { + EditInfo = new CDataEditInfo(); + Name = string.Empty; + } + + public uint CharacterId { get; set; } + public uint PawnId { get; set; } + public CDataEditInfo EditInfo { get; set; } + public string Name { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CCharacterEditUpdateEditParamExNtc obj) + { + WriteUInt32(buffer, obj.CharacterId); + WriteUInt32(buffer, obj.PawnId); + WriteEntity(buffer, obj.EditInfo); + WriteMtString(buffer, obj.Name); + } + + public override S2CCharacterEditUpdateEditParamExNtc Read(IBuffer buffer) + { + S2CCharacterEditUpdateEditParamExNtc obj = new S2CCharacterEditUpdateEditParamExNtc(); + obj.CharacterId = ReadUInt32(buffer); + obj.PawnId = ReadUInt32(buffer); + obj.EditInfo = ReadEntity(buffer); + obj.Name = ReadMtString(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateEditParamNtc.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateEditParamNtc.cs new file mode 100644 index 000000000..369ab4090 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdateEditParamNtc.cs @@ -0,0 +1,39 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CCharacterEditUpdateEditParamNtc : IPacketStructure + { + public PacketId Id => PacketId.S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_NTC; + + public S2CCharacterEditUpdateEditParamNtc() + { + EditInfo = new CDataEditInfo(); + } + + public uint CharacterId { get; set; } + public uint PawnId { get; set; } + public CDataEditInfo EditInfo { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CCharacterEditUpdateEditParamNtc obj) + { + WriteUInt32(buffer, obj.CharacterId); + WriteUInt32(buffer, obj.PawnId); + WriteEntity(buffer, obj.EditInfo); + } + + public override S2CCharacterEditUpdateEditParamNtc Read(IBuffer buffer) + { + S2CCharacterEditUpdateEditParamNtc obj = new S2CCharacterEditUpdateEditParamNtc(); + obj.CharacterId = ReadUInt32(buffer); + obj.PawnId = ReadUInt32(buffer); + obj.EditInfo = ReadEntity(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdatePawnEditParamExRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdatePawnEditParamExRes.cs new file mode 100644 index 000000000..d63521114 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdatePawnEditParamExRes.cs @@ -0,0 +1,25 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CCharacterEditUpdatePawnEditParamExRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_RES; + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CCharacterEditUpdatePawnEditParamExRes obj) + { + WriteServerResponse(buffer, obj); + } + + public override S2CCharacterEditUpdatePawnEditParamExRes Read(IBuffer buffer) + { + S2CCharacterEditUpdatePawnEditParamExRes obj = new S2CCharacterEditUpdatePawnEditParamExRes(); + ReadServerResponse(buffer, obj); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdatePawnEditParamRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdatePawnEditParamRes.cs new file mode 100644 index 000000000..29a523e40 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CCharacterEditUpdatePawnEditParamRes.cs @@ -0,0 +1,25 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CCharacterEditUpdatePawnEditParamRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_RES; + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CCharacterEditUpdatePawnEditParamRes obj) + { + WriteServerResponse(buffer, obj); + } + + public override S2CCharacterEditUpdatePawnEditParamRes Read(IBuffer buffer) + { + S2CCharacterEditUpdatePawnEditParamRes obj = new S2CCharacterEditUpdatePawnEditParamRes(); + ReadServerResponse(buffer, obj); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangeCharacterEquipJobItemNtc.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangeCharacterEquipJobItemNtc.cs new file mode 100644 index 000000000..863180f48 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangeCharacterEquipJobItemNtc.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipChangeCharacterEquipJobItemNtc : IPacketStructure + { + public PacketId Id => PacketId.S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_NTC; + + public S2CEquipChangeCharacterEquipJobItemNtc() + { + EquipJobItemList = new List(); + } + + public uint CharacterId { get; set; } + public List EquipJobItemList { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipChangeCharacterEquipJobItemNtc obj) + { + WriteUInt32(buffer, obj.CharacterId); + WriteEntityList(buffer, obj.EquipJobItemList); + } + + public override S2CEquipChangeCharacterEquipJobItemNtc Read(IBuffer buffer) + { + S2CEquipChangeCharacterEquipJobItemNtc obj = new S2CEquipChangeCharacterEquipJobItemNtc(); + obj.CharacterId = ReadUInt32(buffer); + obj.EquipJobItemList = ReadEntityList(buffer); + return obj; + } + } + + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangeCharacterEquipJobItemRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangeCharacterEquipJobItemRes.cs new file mode 100644 index 000000000..88fc29fe6 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangeCharacterEquipJobItemRes.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipChangeCharacterEquipJobItemRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_RES; + + public S2CEquipChangeCharacterEquipJobItemRes() + { + EquipJobItemList = new List(); + } + + public List EquipJobItemList { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipChangeCharacterEquipJobItemRes obj) + { + WriteServerResponse(buffer, obj); + WriteEntityList(buffer, obj.EquipJobItemList); + } + + public override S2CEquipChangeCharacterEquipJobItemRes Read(IBuffer buffer) + { + S2CEquipChangeCharacterEquipJobItemRes obj = new S2CEquipChangeCharacterEquipJobItemRes(); + ReadServerResponse(buffer, obj); + obj.EquipJobItemList = ReadEntityList(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangePawnEquipJobItemNtc.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangePawnEquipJobItemNtc.cs new file mode 100644 index 000000000..432a71f74 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangePawnEquipJobItemNtc.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipChangePawnEquipJobItemNtc : IPacketStructure + { + public PacketId Id => PacketId.S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_NTC; + + public S2CEquipChangePawnEquipJobItemNtc() + { + EquipJobItemList = new List(); + } + + public uint CharacterId { get; set; } + public uint PawnId { get; set; } + public List EquipJobItemList { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipChangePawnEquipJobItemNtc obj) + { + WriteUInt32(buffer, obj.CharacterId); + WriteUInt32(buffer, obj.PawnId); + WriteEntityList(buffer, obj.EquipJobItemList); + } + + public override S2CEquipChangePawnEquipJobItemNtc Read(IBuffer buffer) + { + S2CEquipChangePawnEquipJobItemNtc obj = new S2CEquipChangePawnEquipJobItemNtc(); + obj.CharacterId = ReadUInt32(buffer); + obj.PawnId = ReadUInt32(buffer); + obj.EquipJobItemList = ReadEntityList(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangePawnEquipJobItemRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangePawnEquipJobItemRes.cs new file mode 100644 index 000000000..0fa84dd8f --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CEquipChangePawnEquipJobItemRes.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Entity.Structure; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CEquipChangePawnEquipJobItemRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_RES; + + public S2CEquipChangePawnEquipJobItemRes() + { + EquipJobItemList = new List(); + } + + public uint PawnId { get; set; } + public List EquipJobItemList { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CEquipChangePawnEquipJobItemRes obj) + { + WriteServerResponse(buffer, obj); + WriteUInt32(buffer, obj.PawnId); + WriteEntityList(buffer, obj.EquipJobItemList); + } + + public override S2CEquipChangePawnEquipJobItemRes Read(IBuffer buffer) + { + S2CEquipChangePawnEquipJobItemRes obj = new S2CEquipChangePawnEquipJobItemRes(); + ReadServerResponse(buffer, obj); + obj.PawnId = ReadUInt32(buffer); + obj.EquipJobItemList = ReadEntityList(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemGetStorageItemListRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemGetStorageItemListRes.cs index 191b32bb6..265fc7f9a 100644 --- a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemGetStorageItemListRes.cs +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemGetStorageItemListRes.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using Arrowgene.Buffers; using Arrowgene.Ddon.Shared.Entity.Structure; -using Arrowgene.Ddon.Shared.Model; using Arrowgene.Ddon.Shared.Network; namespace Arrowgene.Ddon.Shared.Entity.PacketStructure diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUpdateCharacterItemNtc.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUpdateCharacterItemNtc.cs index 695afa6c1..ff0a766d3 100644 --- a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUpdateCharacterItemNtc.cs +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUpdateCharacterItemNtc.cs @@ -31,6 +31,7 @@ public S2CItemUpdateCharacterItemNtc() // 0x38: S2C_SEASON_DUNGEON_RECEIVE_SOUL_ORDEAL_REWARD_RES // 0x10a: S2C_SHOP_BUY_SHOP_GOODS_RES // 0x10b: S2C_ITEM_SELL_ITEM_RES + // 0x121: Job Items public ushort UpdateType; public List UpdateItemList; public List UpdateWalletList; diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUseJobItemsRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUseJobItemsRes.cs new file mode 100644 index 000000000..ce4dde800 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CItemUseJobItemsRes.cs @@ -0,0 +1,29 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CItemUseJobItemsRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_ITEM_USE_JOB_ITEMS_RES; + + public S2CItemUseJobItemsRes() + { + } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CItemUseJobItemsRes obj) + { + WriteServerResponse(buffer, obj); + } + + public override S2CItemUseJobItemsRes Read(IBuffer buffer) + { + S2CItemUseJobItemsRes obj = new S2CItemUseJobItemsRes(); + ReadServerResponse(buffer, obj); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnAbilityRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnAbilityRes.cs new file mode 100644 index 000000000..720bfea2a --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnAbilityRes.cs @@ -0,0 +1,39 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CSkillLearnAbilityRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_SKILL_LEARN_ABILITY_RES; + + public JobId Job { get; set; } + public uint NewJobPoint { get; set; } + public uint AbilityId { get; set; } + public byte AbilityLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CSkillLearnAbilityRes obj) + { + WriteServerResponse(buffer, obj); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.NewJobPoint); + WriteUInt32(buffer, obj.AbilityId); + WriteByte(buffer, obj.AbilityLv); + } + + public override S2CSkillLearnAbilityRes Read(IBuffer buffer) + { + S2CSkillLearnAbilityRes obj = new S2CSkillLearnAbilityRes(); + ReadServerResponse(buffer, obj); + obj.Job = (JobId) ReadByte(buffer); + obj.NewJobPoint = ReadUInt32(buffer); + obj.AbilityId = ReadUInt32(buffer); + obj.AbilityLv = ReadByte(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnNormalSkillRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnNormalSkillRes.cs new file mode 100644 index 000000000..0104ed95e --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnNormalSkillRes.cs @@ -0,0 +1,36 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CSkillLearnNormalSkillRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_SKILL_LEARN_NORMAL_SKILL_RES; + + public JobId Job { get; set; } + public uint SkillId { get; set; } + public uint NewJobPoint { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CSkillLearnNormalSkillRes obj) + { + WriteServerResponse(buffer, obj); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.SkillId); + WriteUInt32(buffer, obj.NewJobPoint); + } + + public override S2CSkillLearnNormalSkillRes Read(IBuffer buffer) + { + S2CSkillLearnNormalSkillRes obj = new S2CSkillLearnNormalSkillRes(); + ReadServerResponse(buffer, obj); + obj.Job = (JobId) ReadByte(buffer); + obj.SkillId = ReadUInt32(buffer); + obj.NewJobPoint = ReadUInt32(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnAbilityRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnAbilityRes.cs new file mode 100644 index 000000000..ea4b93b44 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnAbilityRes.cs @@ -0,0 +1,42 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CSkillLearnPawnAbilityRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_SKILL_LEARN_PAWN_ABILITY_RES; + + public uint PawnId { get; set; } + public JobId Job { get; set; } + public uint NewJobPoint { get; set; } + public uint AbilityId { get; set; } + public byte AbilityLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CSkillLearnPawnAbilityRes obj) + { + WriteServerResponse(buffer, obj); + WriteUInt32(buffer, obj.PawnId); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.NewJobPoint); + WriteUInt32(buffer, obj.AbilityId); + WriteByte(buffer, obj.AbilityLv); + } + + public override S2CSkillLearnPawnAbilityRes Read(IBuffer buffer) + { + S2CSkillLearnPawnAbilityRes obj = new S2CSkillLearnPawnAbilityRes(); + ReadServerResponse(buffer, obj); + obj.PawnId = ReadUInt32(buffer); + obj.Job = (JobId) ReadByte(buffer); + obj.NewJobPoint = ReadUInt32(buffer); + obj.AbilityId = ReadUInt32(buffer); + obj.AbilityLv = ReadByte(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnNormalSkillRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnNormalSkillRes.cs new file mode 100644 index 000000000..be8740207 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnNormalSkillRes.cs @@ -0,0 +1,39 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CSkillLearnPawnNormalSkillRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_SKILL_LEARN_PAWN_NORMAL_SKILL_RES; + + public uint PawnId { get; set; } + public JobId Job { get; set; } + public uint SkillId { get; set; } + public uint NewJobPoint { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CSkillLearnPawnNormalSkillRes obj) + { + WriteServerResponse(buffer, obj); + WriteUInt32(buffer, obj.PawnId); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.SkillId); + WriteUInt32(buffer, obj.NewJobPoint); + } + + public override S2CSkillLearnPawnNormalSkillRes Read(IBuffer buffer) + { + S2CSkillLearnPawnNormalSkillRes obj = new S2CSkillLearnPawnNormalSkillRes(); + ReadServerResponse(buffer, obj); + obj.PawnId = ReadUInt32(buffer); + obj.Job = (JobId) ReadByte(buffer); + obj.SkillId = ReadUInt32(buffer); + obj.NewJobPoint = ReadUInt32(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnSkillRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnSkillRes.cs new file mode 100644 index 000000000..1ace6fb1d --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnPawnSkillRes.cs @@ -0,0 +1,42 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CSkillLearnPawnSkillRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_SKILL_LEARN_PAWN_SKILL_RES; + + public uint PawnId { get; set; } + public JobId Job { get; set; } + public uint NewJobPoint { get; set; } + public uint SkillId { get; set; } + public byte SkillLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CSkillLearnPawnSkillRes obj) + { + WriteServerResponse(buffer, obj); + WriteUInt32(buffer, obj.PawnId); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.NewJobPoint); + WriteUInt32(buffer, obj.SkillId); + WriteByte(buffer, obj.SkillLv); + } + + public override S2CSkillLearnPawnSkillRes Read(IBuffer buffer) + { + S2CSkillLearnPawnSkillRes obj = new S2CSkillLearnPawnSkillRes(); + ReadServerResponse(buffer, obj); + obj.PawnId = ReadUInt32(buffer); + obj.Job = (JobId) ReadByte(buffer); + obj.NewJobPoint = ReadUInt32(buffer); + obj.SkillId = ReadUInt32(buffer); + obj.SkillLv = ReadByte(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnSkillRes.cs b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnSkillRes.cs new file mode 100644 index 000000000..206ab5561 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/PacketStructure/S2CSkillLearnSkillRes.cs @@ -0,0 +1,39 @@ +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; +using Arrowgene.Ddon.Shared.Network; + +namespace Arrowgene.Ddon.Shared.Entity.PacketStructure +{ + public class S2CSkillLearnSkillRes : ServerResponse + { + public override PacketId Id => PacketId.S2C_SKILL_LEARN_SKILL_RES; + + public JobId Job { get; set; } + public uint NewJobPoint { get; set; } + public uint SkillId { get; set; } + public byte SkillLv { get; set; } + + public class Serializer : PacketEntitySerializer + { + public override void Write(IBuffer buffer, S2CSkillLearnSkillRes obj) + { + WriteServerResponse(buffer, obj); + WriteByte(buffer, (byte) obj.Job); + WriteUInt32(buffer, obj.NewJobPoint); + WriteUInt32(buffer, obj.SkillId); + WriteByte(buffer, obj.SkillLv); + } + + public override S2CSkillLearnSkillRes Read(IBuffer buffer) + { + S2CSkillLearnSkillRes obj = new S2CSkillLearnSkillRes(); + ReadServerResponse(buffer, obj); + obj.Job = (JobId) ReadByte(buffer); + obj.NewJobPoint = ReadUInt32(buffer); + obj.SkillId = ReadUInt32(buffer); + obj.SkillLv = ReadByte(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataChangeEquipJobItem.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataChangeEquipJobItem.cs new file mode 100644 index 000000000..fad2f6b47 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataChangeEquipJobItem.cs @@ -0,0 +1,33 @@ +using System.Collections.Generic; +using Arrowgene.Buffers; +using Arrowgene.Ddon.Shared.Model; + +namespace Arrowgene.Ddon.Shared.Entity.Structure +{ + public class CDataChangeEquipJobItem + { + public CDataChangeEquipJobItem() { + EquipJobItemUId = string.Empty; + } + + public string EquipJobItemUId { get; set; } + public byte EquipSlotNo { get; set; } + + public class Serializer : EntitySerializer + { + public override void Write(IBuffer buffer, CDataChangeEquipJobItem obj) + { + WriteMtString(buffer, obj.EquipJobItemUId); + WriteByte(buffer, obj.EquipSlotNo); + } + + public override CDataChangeEquipJobItem Read(IBuffer buffer) + { + CDataChangeEquipJobItem obj = new CDataChangeEquipJobItem(); + obj.EquipJobItemUId = ReadMtString(buffer); + obj.EquipSlotNo = ReadByte(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterEditUpdatePawnEditParamReqUnk0.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterEditUpdatePawnEditParamReqUnk0.cs new file mode 100644 index 000000000..3cef3c479 --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterEditUpdatePawnEditParamReqUnk0.cs @@ -0,0 +1,28 @@ +using Arrowgene.Buffers; + +namespace Arrowgene.Ddon.Shared.Entity.Structure +{ + // Used in both C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_REQ and C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_REQ + public class CDataCharacterEditUpdatePawnEditParamReqUnk0 + { + public byte Unk0 { get; set; } + public uint Unk1 { get; set; } + + public class Serializer : EntitySerializer + { + public override void Write(IBuffer buffer, CDataCharacterEditUpdatePawnEditParamReqUnk0 obj) + { + WriteByte(buffer, obj.Unk0); + WriteUInt32(buffer, obj.Unk1); + } + + public override CDataCharacterEditUpdatePawnEditParamReqUnk0 Read(IBuffer buffer) + { + CDataCharacterEditUpdatePawnEditParamReqUnk0 obj = new CDataCharacterEditUpdatePawnEditParamReqUnk0(); + obj.Unk0 = ReadByte(buffer); + obj.Unk1 = ReadUInt32(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 4c095d3ff..7eafa6a8a 100644 --- a/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterInfo.cs +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataCharacterInfo.cs @@ -25,7 +25,7 @@ public CDataCharacterInfo(Character character) CharacterEquipViewDataList = new List() { new CDataCharacterEquipData() { Equips = character.Equipment.getEquipmentAsCDataEquipItemInfo(character.Job, EquipType.Visual) }}; - CharacterEquipJobItemList = character.CharacterEquipJobItemListDictionary[character.Job]; + CharacterEquipJobItemList = character.Equipment.getJobItemsAsCDataEquipJobItem(character.Job); JewelrySlotNum = character.JewelrySlotNum; Unk0 = character.Unk0; CharacterItemSlotInfoList = character.Storage.getAllStoragesAsCDataCharacterItemSlotInfoList(); diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataItemUIdList.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataItemUIdList.cs new file mode 100644 index 000000000..445a2518d --- /dev/null +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataItemUIdList.cs @@ -0,0 +1,31 @@ +using Arrowgene.Buffers; + +namespace Arrowgene.Ddon.Shared.Entity.Structure +{ + public class CDataItemUIdList + { + public CDataItemUIdList() { + UId = string.Empty; + } + + public string UId { get; set; } + public uint Num { get; set; } + + public class Serializer : EntitySerializer + { + public override void Write(IBuffer buffer, CDataItemUIdList obj) + { + WriteMtString(buffer, obj.UId); + WriteUInt32(buffer, obj.Num); + } + + public override CDataItemUIdList Read(IBuffer buffer) + { + CDataItemUIdList obj = new CDataItemUIdList(); + obj.UId = ReadMtString(buffer); + obj.Num = ReadUInt32(buffer); + return obj; + } + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestList.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestList.cs index 3862a64d1..b2e0aae4b 100644 --- a/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestList.cs +++ b/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestList.cs @@ -6,7 +6,7 @@ namespace Arrowgene.Ddon.Shared.Entity.Structure public class CDataQuestList { public CDataQuestList() { - Unk0 = new List(); + Unk0 = new List(); Unk1 = new List(); FixedRewardItemList = new List(); FixedRewardSelectItemList = new List(); @@ -26,7 +26,7 @@ public CDataQuestList() { public uint QuestId { get; set; } public uint BaseLevel { get; set; } public ushort ContentJoinItemRank { get; set; } - public List Unk0 { get; set; } + public List Unk0 { get; set; } public List Unk1 { get; set; } public uint Unk2 { get; set;} public uint Unk3 { get; set;} @@ -55,7 +55,7 @@ public override void Write(IBuffer buffer, CDataQuestList obj) WriteUInt32(buffer, obj.QuestId); WriteUInt32(buffer, obj.BaseLevel); WriteUInt16(buffer, obj.ContentJoinItemRank); - WriteEntityList(buffer, obj.Unk0); + WriteEntityList(buffer, obj.Unk0); WriteEntityList(buffer, obj.Unk1); WriteUInt32(buffer, obj.Unk2); WriteUInt32(buffer, obj.Unk3); @@ -84,7 +84,7 @@ public override CDataQuestList Read(IBuffer buffer) obj.QuestId = ReadUInt32(buffer); obj.BaseLevel = ReadUInt32(buffer); obj.ContentJoinItemRank = ReadUInt16(buffer); - obj.Unk0 = ReadEntityList(buffer); + obj.Unk0 = ReadEntityList(buffer); obj.Unk1 = ReadEntityList(buffer); obj.Unk2 = ReadUInt32(buffer); obj.Unk3 = ReadUInt32(buffer); diff --git a/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestListUnk0.cs b/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestListUnk0.cs deleted file mode 100644 index 563b9d18d..000000000 --- a/Arrowgene.Ddon.Shared/Entity/Structure/CDataQuestListUnk0.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; -using Arrowgene.Buffers; -using Arrowgene.Ddon.Shared.Model; - -namespace Arrowgene.Ddon.Shared.Entity.Structure -{ - public class CDataQuestListUnk0 - { - public byte Unk0 { get; set; } - public uint Unk1 { get; set; } - - public class Serializer : EntitySerializer - { - public override void Write(IBuffer buffer, CDataQuestListUnk0 obj) - { - WriteByte(buffer, obj.Unk0); - WriteUInt32(buffer, obj.Unk1); - } - - public override CDataQuestListUnk0 Read(IBuffer buffer) - { - CDataQuestListUnk0 obj = new CDataQuestListUnk0(); - obj.Unk0 = ReadByte(buffer); - obj.Unk1 = ReadUInt32(buffer); - return obj; - } - } - } -} \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Files/Assets/Arisen.csv b/Arrowgene.Ddon.Shared/Files/Assets/Arisen.csv index 2020fb8ac..2bd5c8e10 100644 --- a/Arrowgene.Ddon.Shared/Files/Assets/Arisen.csv +++ b/Arrowgene.Ddon.Shared/Files/Assets/Arisen.csv @@ -1,12 +1,12 @@ #Class ,Lv ,HP ,Stamina ,RevivePoint ,MaxHP ,MaxStamina ,WhiteHP ,GainHP ,GainStamina ,GainAttack ,GainDefense ,GainMagicAttack ,GainMagicDefense ,CustomSkill-1(MainPalette) ,CS1MP-Lv ,CustomSkill-2(MP) ,CS2MP-Lv ,CustomSkill-3(MP) ,CS3MP-Lv ,CustomSkill-4(MP) ,CS4MP-Lv ,CustomSkill-1(SubPalette) ,CS1SP-Lv ,CustomSkill-2(SP) ,CS2SP-Lv ,CustomSkill-3(SP) ,CS3SP-Lv ,CustomSkill-4(SP) ,CS4SP-Lv ,Ab1Jb ,Ability-1 ,Ab1Lv ,Ab2Jb ,Ability-2 ,Ab2Lv ,Ab3Jb ,Ability-3 ,Ab3Lv ,Ab4Jb ,Ability-4 ,Ab4Lv ,Ab5Jb ,Ability-5 ,Ab5Lv ,Ab6Jb ,Ability-6 ,Ab6Lv ,Ab7Jb ,Ability-7 ,Ab7Lv ,Ab8Jb ,Ability-8 ,Ab8Lv ,Ab9Jb ,Ability-9 ,Ab9Lv ,Ab10Jb ,Ability-10 ,Ab10Lv ,PAtk ,PDef ,MAtk ,MDef ,PrimaryWeapon ,PrimaryWeaponColour ,PWCrest1 ,PWC1Add1 ,PWC1Add2 ,PWCrest2 ,PWC2Add1 ,PWC2Add2 ,PWCrest3 ,PWC3Add1 ,PWC3Add2 ,PWCrest4 ,PWC4Add1 ,PWC4Add2 ,SecondaryWeapon ,SecondaryWeaponColour ,Head ,HeadColour ,HeadCrest1 ,HC1Add1 ,HC1Add2 ,HeadCrest2 ,HC2Add1 ,HC2Add2 ,HeadCrest3 ,HC3Add1 ,HC3Add2 ,Body ,BodyColour ,BodyCrest1 ,BC1Add1 ,BC1Add2 ,BodyCrest2 ,BC2Add1 ,BC2Add2 ,BodyCrest3 ,BC3Add1 ,BC3Add2 ,BodyCrest4 ,BC4Add1 ,BC4Add2 ,Clothing ,ClothingColour ,Arm ,ArmColour ,ArmCrest1 ,AC1Add1 ,AC1Add2 ,ArmCrest2 ,AC2Add1 ,AC2Add2 ,ArmCrest3 ,AC3Add1 ,AC3Add2 ,Leg ,LegColour ,LegCrest1 ,LC1Add1 ,LC1Add2 ,LegCrest2 ,LC2Add1 ,LC2Add2 ,LegCrest3 ,LC3Add1 ,LC3Add2 ,Legwear ,LegwearColour ,Overwear ,OverwearColour ,Lantern ,HideHelmet ,HideLantern ,VPrimaryWeapon ,VPrimaryWeaponColour ,VSecondaryWeapon ,VSecondaryWeaponColour ,VHead ,VHeadColour ,VBody ,VBodyColour ,VClothing ,VClothingColour ,VArm ,VArmColour ,VLeg ,VLegColour ,VLegwear ,VLegwearColour ,VOverwear ,VOverwearColour ,ClassItem1 ,ClassItem2 ,Jewelry1 ,J1Crest1 ,J1C1Add1 ,J1C1Add2 ,J1Crest2 ,J1C2Add1 ,J1C2Add2 ,J1Crest3 ,J1C3Add1 ,J1C3Add2 ,J1Crest4 ,J1C4Add1 ,J1C4Add2 ,Jewelry2 ,J2Crest1 ,J2C1Add1 ,J2C1Add2 ,J2Crest2 ,J2C2Add1 ,J2C2Add2 ,J2Crest3 ,J2C3Add1 ,J2C3Add2 ,J2Crest4 ,J2C4Add1 ,J2C4Add2 ,Jewelry3 ,J3Crest1 ,J3C1Add1 ,J3C1Add2 ,J3Crest2 ,J3C2Add1 ,J3C2Add2 ,J3Crest3 ,J3C3Add1 ,J3C3Add2 ,J3Crest4 ,J3C4Add1 ,J3C4Add2 ,Jewelry4 ,J4Crest1 ,J4C1Add1 ,J4C1Add2 ,J4Crest2 ,J4C2Add1 ,J4C2Add2 ,J4Crest3 ,J4C3Add1 ,J4C3Add2 ,J4Crest4 ,J4C4Add1 ,J4C4Add2 ,Jewelry5 ,J5Crest1 ,J5C1Add1 ,J5C1Add2 ,J5Crest2 ,J5C2Add1 ,J5C2Add2 ,J5Crest3 ,J5C3Add1 ,J5C3Add2 ,J5Crest4 ,J5C4Add1 ,J5C4Add2 ,Exp ,JobPoint ,Strength ,DownPower ,ShakePower ,StunPower ,Consitution ,Guts ,FireResist ,IceResist ,ThunderResist ,HolyResist ,DarkResist ,SpreadResist ,FreezeResist ,ShockResist ,AbsorbResist ,DarkElmResist ,PoisonResist ,SlowResist ,SleepResist ,StunResist ,WetResist ,OilResist ,SealResist ,CurseResist ,SoftResist ,StoneResist ,GoldResist ,FireReduceResist ,IceReduceResist ,ThunderReduceResist ,HolyReduceResist ,DarkReduceResist ,AtkDownResist ,DefDownResist ,MAtkDownResist ,MDefDownResist ,NormalSkill1A ,NormalSkill1B ,NormalSkill2A ,NormalSkill2B ,NormalSkill3A ,NormalSkill3B - 1 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 1 , 6 , 6 , 1 , 5 , 6 , 27 , 120 , 17 , 83 , 62 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 73 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 21 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 2 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 2 , 113 , 6 , 2 , 117 , 6 , 2 , 103 , 6 , 30 , 83 , 2 , 83 , 98 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 10 , 50 , 50 , 0 , 18 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 3 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 3 , 38 , 6 , 3 , 31 , 6 , 30 , 83 , 2 , 83 , 72 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 4 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 6 , 135 , 6 , 6 , 136 , 6 , 4 , 328 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 4 , 54 , 6 , 8 , 165 , 6 , 20 , 58 , 3 , 100 , 80 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 18 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 5 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 6 , 135 , 6 , 6 , 136 , 6 , 4 , 328 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 1 , 6 , 6 , 1 , 5 , 6 , 30 , 120 , 30 , 120 , 91 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 87 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 50 , 50 , 0 , 30 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 6 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 6 , 135 , 6 , 6 , 136 , 6 , 4 , 328 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 6 , 129 , 6 , 6 , 128 , 6 , 20 , 48 , 3 , 100 , 105 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 7 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 7 , 178 , 6 , 7 , 391 , 6 , 30 , 120 , 20 , 83 , 119 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 35 , 50 , 50 , 0 , 24 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 8 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 6 , 135 , 6 , 6 , 136 , 6 , 4 , 328 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 8 , 379 , 6 , 8 , 165 , 6 , 20 , 18 , 3 , 60 , 112 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 18 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 9 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 201 , 6 , 9 , 204 , 6 , 9 , 221 , 6 , 30 , 100 , 20 , 100 , 126 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 27 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 10 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 10 , 406 , 6 , 10 , 440 , 6 , 30 , 83 , 3 , 83 , 14737 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 18 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 - 11 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 1 , 10 , 2 , 10 , 3 , 10 , 4 , 10 , 5 , 10 , 6 , 10 , 7 , 10 , 1 , 10 , 1 , 7 , 6 , 1 , 8 , 6 , 2 , 352 , 6 , 6 , 361 , 6 , 3 , 40 , 6 , 11 , 483 , 6 , 8 , 162 , 6 , 9 , 215 , 6 , 9 , 208 , 6 , 8 , 165 , 6 , 30 , 120 , 30 , 120 , 20027 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 21 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 \ No newline at end of file + 1 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 120 , 20 , 83 , 62 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 73 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 21 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 2 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 83 , 20 , 83 , 98 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 10 , 50 , 50 , 0 , 18 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 3 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 83 , 20 , 83 , 72 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 4 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 20 , 58 , 30 , 100 , 80 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 18 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 5 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 120 , 30 , 120 , 91 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 87 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 50 , 50 , 0 , 30 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 6 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 20 , 58 , 30 , 100 , 105 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 7 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 120 , 20 , 83 , 119 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 35 , 50 , 50 , 0 , 24 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 8 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 20 , 58 , 30 , 100 , 112 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 18 , 50 , 50 , 0 , 9 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 9 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 100 , 30 , 100 , 126 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 27 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 10 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 83 , 30 , 83 , 14737 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 18 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 + 11 , 1 ,760 , 450 , 3 , 760 , 450 , 760 , 0 , 0 , 59 , 58 , 65 , 57 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 30 , 83 , 30 , 83 , 20027 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 942 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 490 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 496 , 0 ,497 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,493 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 505 , 0 , 486 , 0 , 9465 ,FALSE ,FALSE , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 25 , 50 , 50 , 0 , 21 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 diff --git a/Arrowgene.Ddon.Shared/Files/Assets/GatheringItem.csv b/Arrowgene.Ddon.Shared/Files/Assets/GatheringItem.csv index d43baf4a0..882f2914e 100644 --- a/Arrowgene.Ddon.Shared/Files/Assets/GatheringItem.csv +++ b/Arrowgene.Ddon.Shared/Files/Assets/GatheringItem.csv @@ -1311,6 +1311,143 @@ 1 , 0 , 308 , 2 , 7990 , 1 , 0 ,false 1 , 0 , 308 , 3 , 7990 , 1 , 0 ,false 1 , 0 , 308 , 4 , 7979 , 1 , 0 ,false +#DivineBlossomTerrace +#randomstuff + 163, 0, 200, 0, 7979, 1, 0, false + 163, 0, 201, 5, 7804, 1, 0, false + 163, 0, 203, 0, 7921, 1, 0, false + 163, 0, 203, 0, 7804, 1, 0, false +#chest + 163, 0, 200, 1, 7790, 39, 0, false + 163, 0, 200, 1, 9362, 1, 0, false + 163, 0, 200, 1, 7554, 1, 0, false + 163, 0, 200, 2, 7790, 39, 0, false + 163, 0, 200, 2, 9362, 1, 0, false + 163, 0, 200, 2, 7554, 1, 0, false + 163, 0, 201, 4, 7804, 1, 0, false + 163, 0, 201, 6, 9387, 1, 0, false + 163, 0, 201, 6, 9419, 1, 0, false + 163, 0, 201, 6, 9066, 1, 0, false + 163, 0, 201, 3, 7790, 36, 0, false + 163, 0, 201, 3, 9362, 1, 0, false + 163, 0, 201, 3, 7554, 1, 0, false + 163, 0, 202, 0, 9066, 1, 0, false + 163, 0, 203, 1, 9376, 1, 0, false + 163, 0, 203, 3, 7868, 1, 0, false + 163, 0, 203, 3, 9062, 1, 0, false + 163, 0, 203, 2, 9066, 1, 0, false +#minerals + 163, 0, 201, 6, 7894, 1, 0, false + 163, 0, 201, 6, 7898, 1, 0, false + 163, 0, 201, 7, 7894, 1, 0, false + 163, 0, 201, 7, 7898, 1, 0, false +#SacredTreeTerrace +#chest + 162, 0, 200, 0, 7790, 95, 0, false + 162, 0, 200, 0, 9066, 1, 0, false + 162, 0, 201, 0, 7553, 1, 0, false + 162, 0, 201, 0, 9403, 1, 0, false + 162, 0, 201, 1, 7553, 1, 0, false + 162, 0, 201, 1, 9403, 1, 0, false + 162, 0, 201, 3, 7990, 1, 0, false + 162, 0, 201, 3, 7984, 1, 0, false + 162, 0, 201, 4, 7790, 43, 0, false + 162, 0, 201, 4, 40, 1, 0, false + 162, 0, 201, 4, 9376, 1, 0, false + 162, 0, 201, 2, 7790, 43, 0, false + 162, 0, 201, 2, 40, 1, 0, false + 162, 0, 201, 2, 9376, 1, 0, false +#ForestPeoplesTunnel +#chest + 97, 0, 202, 0, 7790, 47, 0, false + 97, 0, 202, 0, 7999, 1, 0, false +#minerals +#behind the door locked with enemies there are 1 9061, 1 7859 +#PoolOfWater + 97, 0, 203, 0, 7829, 1, 0, false +#SunsetTerrace +#woods + 113, 0, 200, 1, 7968, 1, 0, false + 113, 0, 200, 1, 7970, 1, 0, false + 113, 0, 201, 5, 7968, 1, 0, false + 113, 0, 201, 5, 7970, 1, 0, false +#minerals + 113, 0, 200, 5, 7861, 1, 0, false + 113, 0, 200, 5, 7859, 1, 0, false + 113, 0, 200, 4, 7861, 1, 0, false + 113, 0, 200, 4, 7859, 1, 0, false + 113, 0, 201, 6, 7861, 1, 0, false + 113, 0, 201, 6, 7859, 1, 0, false +#chest + 113, 0, 200, 3, 7790, 63, 0, false + 113, 0, 200, 0, 7790, 59, 0, false + 113, 0, 200, 0, 9362, 1, 0, false + 113, 0, 201, 3, 7790, 49, 0, false + 113, 0, 201, 1, 7790, 56, 0, false + 113, 0, 201, 0, 7790, 63, 0, false + 113, 0, 202, 1, 9410, 1, 0, false + 113, 0, 202, 1, 9066, 1, 0, false + 113, 0, 202, 3, 7857, 1, 0, false +#randomstuff + 113, 0, 200, 2, 8002, 1, 0, false + 113, 0, 201, 4, 8002, 1, 0, false + 113, 0, 201, 2, 9408, 1, 0, false + 113, 0, 201, 2, 7726, 1, 0, false + 113, 0, 202, 2, 7551, 1, 0, false +#MoolightTerrace +#ranodmstuff + 114, 0, 200, 0, 7790, 27, 0, false +#plants + 114, 0, 200, 2, 7978, 1, 0, false + 114, 0, 201, 2, 7983, 1, 0, false + 114, 0, 201, 2, 7978, 1, 0, false +#minerals + 114, 0, 200, 3, 7861, 1, 0, false + 114, 0, 200, 3, 7859, 1, 0, false + 114, 0, 200, 4, 7861, 1, 0, false + 114, 0, 200, 4, 7859, 1, 0, false +#chest + 114, 0, 200, 1, 9388, 1, 0, false + 114, 0, 200, 1, 7553, 1, 0, false + 114, 0, 201, 1, 9419, 1, 0, false + 114, 0, 201, 0, 9419, 1, 0, false +#fairys withered well +#chests + 172, 0, 201, 0, 7790, 52, 0, false + 172, 0, 201, 1, 40, 1, 0, false + 172, 0, 201, 1, 9421, 52, 0, false +#minerals + 172, 0, 201, 2, 8978, 1, 0, false + 172, 0, 201, 2, 7898, 1, 0, false +#herbs + 172, 0, 201, 0, 7975, 1, 0, false + 172, 0, 201, 4, 9063, 1, 0, false + 172, 0, 201, 4, 7999, 1, 0, false + 172, 0, 201, 3, 9063, 1, 0, false + 172, 0, 201, 3, 7999, 1, 0, false +#deepwatersedge +#chest + 170, 0, 201, 0, 7790, 48, 0, false + 170, 0, 201, 0, 9374, 1, 0, false +#randomloot + 170, 0, 202, 1, 7829, 1, 0, false + 170, 0, 202, 0, 7829, 1, 0, false +#bluewarterway +#randomloot + 158, 0, 200, 0, 7804, 1, 0, false + 158, 0, 204, 1, 7804, 1, 0, false +#chest + 158, 0, 201, 0, 7553, 1, 0, false + 158, 0, 201, 0, 7790, 12, 0, false + 158, 0, 202, 0, 7790, 36, 0, false + 158, 0, 202, 1, 8002, 1, 0, false + 158, 0, 203, 0, 7553, 1, 0, false + 158, 0, 203, 0, 7790, 50, 0, false + 158, 0, 204, 0, 7790, 45, 0, false + 158, 0, 204, 0, 7790, 27, 0, false + 158, 0, 204, 0, 7554, 1, 0, false +#minerals + 158, 0, 204, 3, 7899, 1, 0, false #DoweValley #Chest 1 , 0 , 325 , 0 , 9374 , 2 , 0 ,false @@ -1433,6 +1570,231 @@ 1 , 0 , 272 , 0 , 7978 , 1 , 0 ,false 1 , 0 , 272 , 1 , 7968 , 1 , 0 ,false 1 , 0 , 272 , 1 , 7964 , 1 , 0 ,false +#AbandonedUndergroundPassage + 89 , 0 , 207 , 1 , 7868 , 1 , 0 ,false + 89 , 0 , 207 , 1 , 52 , 1 , 0 ,false + 89 , 0 , 207 , 0 , 9063 , 1 , 0 ,false + 89 , 0 , 207 , 0 , 7997 , 1 , 0 ,false +#KeyChests + 89 , 0 , 206 , 0 , 9362 , 1 , 0 ,false +# + 89 , 0 , 205 , 0 , 9062 , 1 , 0 ,false + 89 , 0 , 205 , 0 , 9362 , 1 , 0 ,false +# + 89 , 0 , 204 , 0 , 7979 , 1 , 0 ,false + 89 , 0 , 204 , 0 , 7990 , 1 , 0 ,false + 89 , 0 , 204 , 1 , 7979 , 1 , 0 ,false + 89 , 0 , 204 , 1 , 7990 , 1 , 0 ,false +#KeyChests + 89 , 0 , 203 , 1 , 52 , 1 , 0 ,false +# + 89 , 0 , 203 , 0 , 7790 , 70 , 0 ,false + 89 , 0 , 203 , 0 , 7829 , 1 , 0 ,false +#KeyChest + 89 , 0 , 203 , 2 , 7868 , 1 , 0 ,false + 89 , 0 , 203 , 2 , 52 , 1 , 0 ,false +# + 89 , 0 , 203 , 3 , 7979 , 1 , 0 ,false + 89 , 0 , 203 , 3 , 7990 , 1 , 0 ,false + 89 , 0 , 203 , 4 , 7979 , 1 , 0 ,false +#KeyChests + 89 , 0 , 202 , 0 , 7868 , 1 , 0 ,false + 89 , 0 , 202 , 0 , 52 , 1 , 0 ,false +# + 89 , 0 , 201 , 1 , 7790 , 20 , 0 ,false + 89 , 0 , 201 , 1 , 9375 , 1 , 0 ,false +#ClosedGate +#KeyChest + 89 , 0 , 201 , 2 , 7790 , 60 , 0 ,false + 89 , 0 , 201 , 2 , 7829 , 1 , 0 ,false +# + 89 , 0 , 200 , 0 , 7979 , 1 , 0 ,false + 89 , 0 , 200 , 0 , 7990 , 1 , 0 ,false + 89 , 0 , 200 , 1 , 7979 , 1 , 0 ,false + 89 , 0 , 200 , 1 , 7990 , 1 , 0 ,false +#Cemetery +#KeyChest2goldprobability + 90 , 0 , 200 , 0 , 7790 , 30 , 0 ,false + 90 , 0 , 200 , 0 , 7790 , 40 , 0 ,false + 90 , 0 , 200 , 0 , 9382 , 1 , 0 ,false + 90 , 0 , 200 , 0 , 7857 , 1 , 0 ,false +#Chest + 90 , 0 , 200 , 1 , 52 , 1 , 0 ,false + 90 , 0 , 200 , 1 , 9397 , 1 , 0 ,false +#KeyChest + 90 , 0 , 201 , 0 , 7790 , 40 , 0 ,false + 90 , 0 , 201 , 0 , 9382 , 1 , 0 ,false + 90 , 0 , 201 , 0 , 7857 , 1 , 0 ,false +#KeyChest2goldprobability + 90 , 0 , 201 , 1 , 7790 , 50 , 0 ,false + 90 , 0 , 201 , 1 , 7790 , 90 , 0 ,false +#KeyChests + 90 , 0 , 202 , 0 , 7857 , 1 , 0 ,false +# + 90 , 0 , 203 , 0 , 7955 , 1 , 0 ,false +# + 90 , 0 , 203 , 1 , 7955 , 1 , 0 ,false + 90 , 0 , 203 , 1 , 7902 , 1 , 0 ,false +#CliffTunnels + 100 , 0 , 200 , 0 , 9063 , 1 , 0 ,false + 100 , 0 , 200 , 1 , 9063 , 1 , 0 ,false + 100 , 0 , 201 , 0 , 7861 , 1 , 0 ,false + 100 , 0 , 201 , 0 , 7857 , 1 , 0 ,false + 100 , 0 , 201 , 2 , 7861 , 1 , 0 ,false + 100 , 0 , 201 , 2 , 7857 , 1 , 0 ,false +#Chest + 100 , 0 , 201 , 1 , 7790 , 31 , 0 ,false + 100 , 0 , 201 , 1 , 52 , 1 , 0 ,false +# + 100 , 0 , 202 , 0 , 7861 , 1 , 0 ,false + 100 , 0 , 202 , 0 , 7857 , 1 , 0 ,false + 100 , 0 , 202 , 1 , 7861 , 1 , 0 ,false + 100 , 0 , 202 , 1 , 7857 , 1 , 0 ,false +#Chests + 100 , 0 , 202 , 2 , 7790 , 25 , 0 ,false + 100 , 0 , 202 , 2 , 52 , 1 , 0 ,false +#Chest2Probabilities + 100 , 0 , 203 , 2 , 7790 , 33 , 0 ,false + 100 , 0 , 203 , 2 , 7790 , 39 , 0 ,false +# + 100 , 0 , 203 , 1 , 7848 , 1 , 0 ,false + 100 , 0 , 203 , 1 , 7857 , 1 , 0 ,false + 100 , 0 , 203 , 2 , 7848 , 1 , 0 ,false + 100 , 0 , 203 , 2 , 7857 , 1 , 0 ,false +#KeyChests + 100 , 0 , 203 , 0 , 7790 , 54 , 0 ,false + 100 , 0 , 203 , 0 , 7553 , 1 , 0 ,false + 100 , 0 , 203 , 0 , 7894 , 1 , 0 ,false +# + 100 , 0 , 203 , 6 , 7790 , 38 , 0 ,false +# + 100 , 0 , 203 , 3 , 7848 , 1 , 0 ,false + 100 , 0 , 203 , 3 , 7857 , 1 , 0 ,false + 100 , 0 , 203 , 4 , 7848 , 1 , 0 ,false + 100 , 0 , 203 , 4 , 7857 , 1 , 0 ,false +#DreedWaterwayRuins +#Chest + 151 , 0 , 201 , 0 , 37 , 1 , 0 ,false + 151 , 0 , 201 , 0 , 7847 , 1 , 0 ,false +# + 151 , 0 , 201 , 1 , 7551 , 1 , 0 ,false +#Chest + 151 , 0 , 202 , 0 , 37 , 1 , 0 ,false + 151 , 0 , 202 , 0 , 7847 , 1 , 0 ,false +#KeyChest + 151 , 0 , 203 , 1 , 7790 , 53 , 0 ,false +#Chest + 151 , 0 , 203 , 0 , 7995 , 1 , 0 ,false + 151 , 0 , 203 , 0 , 9375 , 1 , 0 ,false +# + 151 , 0 , 203 , 3 , 7826 , 1 , 0 ,false + 151 , 0 , 203 , 4 , 7826 , 1 , 0 ,false +#Chest + 151 , 0 , 203 , 2 , 7995 , 1 , 0 ,false + 151 , 0 , 203 , 2 , 9375 , 1 , 0 ,false +#KnightsOldGuardHouse +#Chests + 154 , 0 , 201 , 0 , 7827 , 1 , 0 ,false + 154 , 0 , 201 , 0 , 9429 , 1 , 0 ,false +# + 154 , 0 , 201 , 1 , 7827 , 1 , 0 ,false + 154 , 0 , 201 , 1 , 9429 , 1 , 0 ,false +# + 154 , 0 , 202 , 1 , 7804 , 1 , 0 ,false + 154 , 0 , 202 , 1 , 7551 , 1 , 0 ,false +#KeyChest + 154 , 0 , 202 , 0 , 7790 , 15 , 0 ,false +# + 154 , 0 , 202 , 1 , 7551 , 1 , 0 ,false +#KeyChests + 154 , 0 , 202 , 0 , 7790 , 15 , 0 ,false +# + 154 , 0 , 202 , 5 , 7899 , 1 , 0 ,false + 154 , 0 , 202 , 5 , 7903 , 1 , 0 ,false + 154 , 0 , 202 , 5 , 7790 , 8 , 0 ,false +#Chest + 154 , 0 , 202 , 3 , 7828 , 1 , 0 ,false + 154 , 0 , 202 , 3 , 7827 , 1 , 0 ,false +# + 154 , 0 , 202 , 4 , 7551 , 1 , 0 ,false +#PartlyDugWell + 166 , 0 , 203 , 0 , 7979 , 1 , 0 ,false + 166 , 0 , 203 , 0 , 7981 , 1 , 0 ,false + 166 , 0 , 203 , 1 , 7979 , 1 , 0 ,false + 166 , 0 , 203 , 1 , 7981 , 1 , 0 ,false +#Chest + 166 , 0 , 203 , 2 , 61 , 1 , 0 ,false +#KeyChest + 166 , 0 , 204 , 0 , 9398 , 1 , 0 ,false + 166 , 0 , 204 , 0 , 55 , 1 , 0 ,false +# + 166 , 0 , 205 , 0 , 7825 , 1 , 0 ,false + 166 , 0 , 205 , 0 , 7829 , 1 , 0 ,false + 166 , 0 , 205 , 1 , 7825 , 1 , 0 ,false + 166 , 0 , 205 , 1 , 7829 , 1 , 0 ,false +#KeyChests + 166 , 0 , 205 , 2 , 9398 , 1 , 0 ,false + 166 , 0 , 205 , 2 , 7857 , 1 , 0 ,false + 166 , 0 , 205 , 2 , 55 , 1 , 0 ,false +# + 166 , 0 , 205 , 2 , 9398 , 1 , 0 ,false + 166 , 0 , 205 , 2 , 7857 , 1 , 0 ,false + 166 , 0 , 205 , 2 , 55 , 1 , 0 ,false +#SealedOldWell +#Chest + 165 , 0 , 202 , 2 , 9375 , 2 , 0 ,false + 165 , 0 , 202 , 2 , 9401 , 1 , 0 ,false +# + 165 , 0 , 202 , 0 , 7981 , 1 , 0 ,false + 165 , 0 , 202 , 3 , 7981 , 1 , 0 ,false + 165 , 0 , 202 , 4 , 7981 , 1 , 0 ,false + 165 , 0 , 202 , 5 , 7981 , 1 , 0 ,false + 165 , 0 , 202 , 6 , 7981 , 1 , 0 ,false +#Chest + 165 , 0 , 202 , 4 , 9375 , 2 , 0 ,false + 165 , 0 , 202 , 4 , 9401 , 1 , 0 ,false +#SupplyStoreRuins + 30 , 0 , 200 , 0 , 7790 , 29 , 0 ,false +#ValleyChapel +#KeyChests + 136 , 0 , 201 , 0 , 7829 , 1 , 0 ,false + 136 , 0 , 201 , 0 , 7828 , 1 , 0 ,false +# + 136 , 0 , 202 , 0 , 7790 , 50 , 0 ,false +#VillagesAbandonedWell + 127 , 0 , 200 , 1 , 7824 , 1 , 0 ,false + 127 , 0 , 200 , 1 , 7825 , 1 , 0 ,false + 127 , 0 , 200 , 2 , 7824 , 1 , 0 ,false + 127 , 0 , 200 , 2 , 7825 , 1 , 0 ,false +#WindHowlingCave +#Chest + 99 , 0 , 200 , 1 , 7790 , 23 , 0 ,false +# + 99 , 0 , 201 , 0 , 7790 , 21 , 0 ,false +# + 99 , 0 , 201 , 1 , 7857 , 1 , 0 ,false + 99 , 0 , 201 , 1 , 7861 , 1 , 0 ,false + 99 , 0 , 201 , 2 , 7857 , 1 , 0 ,false + 99 , 0 , 201 , 2 , 7861 , 1 , 0 ,false + 99 , 0 , 201 , 3 , 7857 , 1 , 0 ,false + 99 , 0 , 201 , 3 , 7861 , 1 , 0 ,false +#ClosedGate +#Chest + 99 , 0 , 202 , 2 , 7829 , 1 , 0 ,false + 99 , 0 , 202 , 2 , 7552 , 1 , 0 ,false +# + 99 , 0 , 202 , 1 , 9397 , 1 , 0 ,false + 99 , 0 , 202 , 1 , 7790 , 20 , 0 ,false +#KeyChest + 99 , 0 , 203 , 0 , 9399 , 1 , 0 ,false + 99 , 0 , 203 , 0 , 7857 , 1 , 0 ,false +# + 99 , 0 , 203 , 2 , 7857 , 1 , 0 ,false + 99 , 0 , 203 , 2 , 7861 , 1 , 0 ,false +#KeyChest + 99 , 0 , 203 , 1 , 7863 , 1 , 0 ,false +#WineCellarRuins + 31 , 0 , 200 , 0 , 7790 , 30 , 0 ,false #BetlandPlains 1 , 0 , 327 , 0 , 7968 , 1 , 0 ,false 1 , 0 , 327 , 0 , 7966 , 1 , 0 ,false @@ -1560,7 +1922,194 @@ 1 , 0 , 329 , 2 , 9064 , 1 , 0 ,false #Chest 1 , 0 , 329 , 0 , 9398 , 1 , 0 ,false - 1 , 0 , 329 , 0 , 7829 , 1 , 0 ,false + 1 , 0 , 329 , 0 , 7829 , 1 , 0 ,false +#KnightsOldRoute +#KeyChest + 120 , 0 , 202 , 0 , 7790 , 24 , 0 ,false + 120 , 0 , 202 , 0 , 7903 , 1 , 0 ,false +# + 120 , 0 , 202 , 2 , 7551 , 1 , 0 ,false +#Chest + 120 , 0 , 202 , 1 , 9374 , 1 , 0 ,false + 120 , 0 , 202 , 1 , 7790 , 25 , 0 ,false +#Chest + 120 , 0 , 201 , 4 , 7790 , 28 , 0 ,false + 120 , 0 , 201 , 4 , 9374 , 1 , 0 ,false +# + 120 , 0 , 201 , 1 , 7848 , 1 , 0 ,false + 120 , 0 , 201 , 2 , 7848 , 1 , 0 ,false + 120 , 0 , 201 , 3 , 7848 , 1 , 0 ,false +#Chest + 120 , 0 , 201 , 0 , 9374 , 1 , 0 ,false + 120 , 0 , 201 , 0 , 7790 , 28 , 0 ,false +# +#DryUndergroundStores + 40 , 0 , 201 , 0 , 7918 , 1 , 0 ,false + 40 , 0 , 201 , 0 , 7726 , 1 , 0 ,false + 40 , 0 , 201 , 1 , 7918 , 1 , 0 ,false + 40 , 0 , 201 , 1 , 7726 , 1 , 0 ,false + 40 , 0 , 201 , 2 , 7918 , 1 , 0 ,false + 40 , 0 , 201 , 2 , 7828 , 1 , 0 ,false + 40 , 0 , 201 , 3 , 7918 , 1 , 0 ,false + 40 , 0 , 201 , 3 , 7828 , 1 , 0 ,false + 40 , 0 , 201 , 4 , 7918 , 1 , 0 ,false + 40 , 0 , 201 , 4 , 7726 , 1 , 0 ,false +#RuinsCellar +#KeyChest + 39 , 0 , 201 , 0 , 7790 , 33 , 0 ,false + 39 , 0 , 201 , 0 , 9375 , 1 , 0 ,false +#Chest + 39 , 0 , 201 , 1 , 7553 , 1 , 0 ,false + 39 , 0 , 201 , 1 , 7894 , 1 , 0 ,false + 39 , 0 , 201 , 1 , 7790 , 35 , 0 ,false +# +#LakesideCellar + 124 , 0 , 201 , 1 , 7752 , 1 , 0 ,false + 124 , 0 , 201 , 2 , 7752 , 1 , 0 ,false + 124 , 0 , 201 , 3 , 7752 , 1 , 0 ,false +#Chest + 124 , 0 , 201 , 0 , 52 , 1 , 0 ,false +# +#BetlandCemetery +#KeyChests + 91 , 0 , 200 , 2 , 7829 , 1 , 0 ,false + 91 , 0 , 200 , 2 , 7957 , 1 , 0 ,false +# + 91 , 0 , 200 , 1 , 9387 , 1 , 0 ,false +#Chest + 91 , 0 , 201 , 1 , 9397 , 1 , 0 ,false +#KeyChests + 91 , 0 , 202 , 1 , 7830 , 1 , 0 ,false + 91 , 0 , 202 , 1 , 8008 , 1 , 0 ,false +# + 91 , 0 , 202 , 0 , 7791 , 10 , 0 ,false + 91 , 0 , 202 , 0 , 7900 , 1 , 0 ,false +# +#TempleOfPurification + 74 , 0 , 200 , 0 , 7825 , 1 , 0 ,false + 74 , 0 , 200 , 1 , 7825 , 1 , 0 ,false + 74 , 0 , 202 , 4 , 9397 , 1 , 0 ,false + 74 , 0 , 202 , 4 , 7848 , 1 , 0 ,false +#KeyChest + 74 , 0 , 202 , 0 , 7902 , 1 , 0 ,false + 74 , 0 , 202 , 0 , 7790 , 40 , 0 ,false +# + 74 , 0 , 202 , 1 , 7825 , 1 , 0 ,false +#KeyChest + 74 , 0 , 202 , 2 , 7790 , 40 , 0 ,false + 74 , 0 , 202 , 2 , 9374 , 1 , 0 ,false +# + 74 , 0 , 202 , 5 , 9397 , 1 , 0 ,false + 74 , 0 , 202 , 5 , 7848 , 1 , 0 ,false + 74 , 0 , 202 , 3 , 7825 , 1 , 0 ,false + 74 , 0 , 202 , 3 , 7851 , 1 , 0 ,false +#KeyChest + 74 , 0 , 203 , 0 , 7553 , 1 , 0 ,false +# + 74 , 0 , 203 , 1 , 7848 , 1 , 0 ,false + 74 , 0 , 203 , 2 , 7996 , 1 , 0 ,false + 74 , 0 , 203 , 2 , 9063 , 1 , 0 ,false +#KeyChests + 74 , 0 , 201 , 0 , 7790 , 40 , 0 ,false + 74 , 0 , 201 , 0 , 9374 , 1 , 0 ,false +# + 74 , 0 , 201 , 1 , 7790 , 40 , 0 ,false + 74 , 0 , 201 , 1 , 9374 , 1 , 0 ,false +# + 74 , 0 , 201 , 2 , 7790 , 40 , 0 ,false + 74 , 0 , 201 , 2 , 9374 , 1 , 0 ,false +# + 74 , 0 , 204 , 0 , 7996 , 1 , 0 ,false + 74 , 0 , 204 , 0 , 9063 , 1 , 0 ,false + 74 , 0 , 204 , 3 , 9397 , 1 , 0 ,false + 74 , 0 , 204 , 3 , 7848 , 1 , 0 ,false +#KeyChests + 74 , 0 , 204 , 2 , 35 , 1 , 0 ,false +# + 74 , 0 , 204 , 4 , 7902 , 1 , 0 ,false + 74 , 0 , 204 , 4 , 35 , 1 , 0 ,false +# + 74 , 0 , 204 , 1 , 7553 , 1 , 0 ,false + 74 , 0 , 204 , 1 , 7828 , 1 , 0 ,false +# + 74 , 0 , 204 , 5 , 7553 , 1 , 0 ,false + 74 , 0 , 204 , 5 , 7828 , 1 , 0 ,false +# + 74 , 0 , 204 , 6 , 7996 , 1 , 0 ,false + 74 , 0 , 204 , 6 , 9063 , 1 , 0 ,false + 74 , 0 , 204 , 7 , 7996 , 1 , 0 ,false + 74 , 0 , 204 , 7 , 9063 , 1 , 0 ,false + 74 , 0 , 204 , 8 , 7996 , 1 , 0 ,false + 74 , 0 , 204 , 8 , 9063 , 1 , 0 ,false +#KeyChest + 74 , 0 , 206 , 0 , 8014 , 1 , 0 ,false +# + 74 , 0 , 205 , 0 , 9397 , 1 , 0 ,false +#NeedElevatorForUpperFloor +#Balcony + 121 , 0 , 201 , 2 , 7790 , 16 , 0 ,false + 121 , 0 , 201 , 3 , 7790 , 20 , 0 ,false + 121 , 0 , 201 , 1 , 7968 , 1 , 0 ,false +#KeyChest + 121 , 0 , 201 , 0 , 7790 , 70 , 0 ,false +# +#FoulWaterChannel +#KeyChest + 118 , 0 , 201 , 0 , 9429 , 2 , 0 ,false + 118 , 0 , 201 , 0 , 52 , 1 , 0 ,false +# + 118 , 0 , 202 , 0 , 7848 , 1 , 0 ,false + 118 , 0 , 202 , 0 , 7852 , 1 , 0 ,false + 118 , 0 , 202 , 1 , 7861 , 1 , 0 ,false + 118 , 0 , 202 , 1 , 7862 , 1 , 0 ,false + 118 , 0 , 202 , 2 , 7861 , 1 , 0 ,false + 118 , 0 , 202 , 2 , 7862 , 1 , 0 ,false +#KeyChests + 118 , 0 , 203 , 1 , 7861 , 1 , 0 ,false + 118 , 0 , 203 , 1 , 40 , 1 , 0 ,false + 118 , 0 , 203 , 1 , 7910 , 1 , 0 ,false +# + 118 , 0 , 203 , 0 , 9429 , 1 , 0 ,false + 118 , 0 , 203 , 0 , 52 , 1 , 0 ,false +# +#NorthDrainageChannel +#Chest + 119 , 0 , 201 , 0 , 9398 , 1 , 0 ,false +# + 119 , 0 , 202 , 3 , 8014 , 1 , 0 ,false + 119 , 0 , 202 , 3 , 8002 , 1 , 0 ,false + 119 , 0 , 202 , 2 , 8014 , 1 , 0 ,false + 119 , 0 , 202 , 2 , 8002 , 1 , 0 ,false +#KeyChest + 119 , 0 , 202 , 2 , 7790 , 50 , 0 ,false + 119 , 0 , 202 , 2 , 8002 , 1 , 0 ,false +# + 119 , 0 , 202 , 4 , 7826 , 1 , 0 ,false +#Chest + 119 , 0 , 202 , 0 , 9398 , 1 , 0 ,false +# +#PurifiedWaterSection + 122 , 0 , 201 , 1 , 9063 , 1 , 0 ,false +#KeyChest + 122 , 0 , 201 , 0 , 7790 , 50 , 0 ,false + 122 , 0 , 201 , 0 , 7894 , 1 , 0 ,false +# + 122 , 0 , 201 , 2 , 37 , 1 , 0 ,false +#KeyChest + 122 , 0 , 201 , 4 , 7790 , 50 , 0 ,false + 122 , 0 , 201 , 4 , 7894 , 1 , 0 ,false +# + 122 , 0 , 201 , 3 , 37 , 1 , 0 ,false + 122 , 0 , 201 , 5 , 37 , 1 , 0 ,false +#KeyChest + 122 , 0 , 202 , 0 , 7790 , 40 , 0 ,false + 122 , 0 , 202 , 0 , 7869 , 1 , 0 ,false +# + 122 , 0 , 202 , 1 , 37 , 1 , 0 ,false +#KeyChest + 122 , 0 , 202 , 2 , 7553 , 1 , 0 ,false + 122 , 0 , 202 , 2 , 7830 , 1 , 0 ,false +# #Elan Water Grove 372,0,207,23,15993,1,0,FALSE 372,0,207,23,16120,1,0,FALSE diff --git a/Arrowgene.Ddon.Shared/Files/Assets/MyPawn.csv b/Arrowgene.Ddon.Shared/Files/Assets/MyPawn.csv index fb27f678b..4a9d20b2a 100644 --- a/Arrowgene.Ddon.Shared/Files/Assets/MyPawn.csv +++ b/Arrowgene.Ddon.Shared/Files/Assets/MyPawn.csv @@ -1,4 +1,4 @@ #PawnId ,* ,* ,* ,* ,* ,* ,* ,* ,Name ,* ,Primary ,Secondary ,Head ,Body ,BodyClothing ,Arm ,Leg ,LegWear ,OverWear ,JewelrySlot1 ,JewelrySlot2 ,JewelrySlot3 ,JewelrySlot4 ,JewelrySlot5 ,Lantern ,* ,VPrimary ,VSecondary ,VHead ,VBody ,VBodyClothing ,VArm ,VLeg ,VLegWear ,VOverWear ,VJewelrySlot1 ,VJewelrySlot2 ,VJewelrySlot3 ,VJewelrySlot4 ,VJewelrySlot5 ,VLantern ,* ,JobItem1 ,* ,JobItem2 ,* ,HideEquipHead ,HideEquipLantern ,* ,* ,CharacterId ,SetWaitFlag ,* ,NormalSkill1 ,NormalSkill2 ,NormalSkill3 ,* ,* ,CustomSkillId1 ,CustomSkillLv1 ,* ,CustomSkillId2 ,CustomSkillLv2 ,* ,CustomSkillId3 ,CustomSkillLv3 ,* ,CustomSkillId4 ,CustomSkillLv4 ,* ,AbilityJob1 ,AbilityId1 ,AbilityLv1 ,AbilityJob1 ,AbilityId2 ,AbilityLv2 ,AbilityJob1 ,AbilityId3 ,AbilityLv3 ,AbilityJob1 ,AbilityId4 ,AbilityLv4 ,AbilityJob1 ,AbilityId5 ,AbilityLv5 ,AbilityJob1 ,AbilityId6 ,AbilityLv6 ,AbilityJob1 ,AbilityId7 ,AbilityLv7 ,AbilityJob1 ,AbilityId8 ,AbilityLv8 ,AbilityJob1 ,AbilityId9 ,AbilityLv9 ,AbilityJob10 ,AbilityId10 ,AbilityLv10 ,Job ,JobLv ,* ,MetPartyMembersId ,* ,QuestClearId ,* ,SpecialSkillInspirationMomentId ,* ,LevelUpId ,* ,SpecialSkillUseId ,* ,PlayerDeathId ,* ,WaitingOnLobbyId ,* ,WaitingOnAdventureId ,* ,EndOfCombatId ,* ,SpSkillSlot1Id ,SpSkillSlot1Lv ,SpSkillSlot2Id ,SpSkillSlot2Lv ,SpSkillSlot3Id ,SpSkillSlot3Lv ,Sex ,Voice ,VoicePitch ,Personality ,SpeechFreq ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* ,* -14310734 ,1 ,200 ,34 ,0 ,0 ,0 ,0 ,0 ,WhiteKnight ,15 , 72 , 0 , 942 , 490 , 496 ,497 ,493 , 505 , 486 , 0 , 0 , 0 , 0 , 0 , 0 ,15 , 0 , 0 , 8120 , 5450 , 985 ,2222 ,24184 , 997 , 10124 , 0 , 0 , 0 , 0 , 0 , 0 ,2 , 9860 ,1 , 10165 ,2 ,false ,false ,1 ,1 , 0 ,false ,3 , 1 , 2 , 3 ,4 ,1 , 1 , 10 ,2 , 2 , 10 ,3 , 3 , 10 ,4 , 4 , 10 ,10 , 6 , 129 , 6 , 7 , 197 , 1 , 3 , 32 , 6 , 7 , 198 , 1 , 6 , 128 , 6 , 11 , 470 , 6 , 6 , 141 , 6 , 6 , 138 , 6 , 2 , 113 , 6 , 6 , 136 , 6 , 3 , 1 ,1 , 1 ,2 , 1 ,10 , 1 ,4 , 1 ,11 , 1 ,6 , 1 ,7 , 1 ,8 , 1 ,9 , 1 ,3 , 3 , 3 , 8 , 3 , 9 , 3 , 2 , 7 , 42000 , 7 , 1 ,1 ,43 ,18 ,0 ,0 ,2 ,3 ,5 , 8 ,0 ,69 ,0 ,69 ,55 ,55 ,12 ,29850 ,29820 ,30420 ,29573 ,29623 ,29715 ,29135 ,30172 ,29826 ,30492 ,30002 ,29905 ,31800 ,29400 ,30000 ,30000 ,30147 ,29938 ,29775 ,29954 ,29920 ,29850 ,29200 ,29404 ,29700 ,29472 ,30672 ,29000 ,29520 ,30645 ,30114 ,30000 ,30000 ,30000 ,30000 ,30000 ,48050 ,39733 ,29180 ,35480 ,38550 ,39410 ,43443 ,38600 ,30600 ,29333 ,28700 ,20900 ,30000 ,24900 -14313101 ,2 ,200 ,34 ,0 ,0 ,0 ,0 ,0 ,Puala ,15 , 14737 , 0 , 942 , 490 , 496 ,497 ,493 , 505 , 486 , 0 , 0 , 0 , 0 , 0 , 0 ,15 , 0 , 0 ,11749 ,21673 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,2 , 9860 ,1 , 10165 ,2 ,false ,false ,1 ,1 , 0 ,false ,3 , 1 , 2 , 3 ,4 ,1 , 1 , 10 ,2 , 2 , 10 ,3 , 3 , 10 ,4 , 4 , 10 ,10 , 6 , 129 , 6 , 7 , 197 , 1 , 3 , 32 , 6 , 7 , 198 , 1 , 6 , 128 , 6 , 11 , 470 , 6 , 6 , 141 , 6 , 6 , 138 , 6 , 2 , 113 , 6 , 6 , 136 , 6 , 10 , 1 ,1 , 1 ,2 , 1 ,10 , 1 ,4 , 1 ,11 , 1 ,6 , 1 ,7 , 1 ,8 , 1 ,9 , 1 ,3 , 3 , 3 , 8 , 3 , 9 , 3 , 2 , 1 , 30000 , 1 , 1 ,1 ,40 ,18 ,0 ,0 ,6 ,1 ,2 ,19 ,1 ,69 ,0 ,69 ,11 ,11 , 0 ,30100 ,30000 ,29595 ,29538 ,29812 ,29289 ,29261 ,29857 ,29694 ,30682 ,29853 ,29885 ,20700 ,29646 ,30132 ,30000 ,30000 ,30142 ,29865 ,29873 ,30109 ,29910 ,29328 ,29420 ,29781 ,29688 ,30147 ,29233 ,29923 ,30714 ,29724 ,30000 ,30000 ,30000 ,30000 ,30000 ,45100 ,40025 ,29020 ,32400 ,38790 ,41090 ,48500 ,38500 ,29270 ,30470 ,29080 ,23300 ,34800 ,29000 -14332659 ,3 ,200 ,34 ,0 ,0 ,0 ,0 ,0 ,Rumi ,15 , 91 , 0 , 942 , 490 , 496 ,497 ,493 , 505 , 486 , 0 , 0 , 0 , 0 , 0 , 0 ,15 , 24985 , 25099 ,11749 , 9548 , 8533 , 921 ,20659 , 505 , 25516 , 21651 , 18147 , 23711 , 21651 , 21322 , 0 ,2 , 9860 ,1 , 10165 ,2 ,false ,false ,1 ,1 , 0 ,false ,3 , 1 , 2 , 3 ,4 ,1 , 1 , 10 ,2 , 2 , 10 ,3 , 3 , 10 ,4 , 4 , 10 ,10 , 6 , 129 , 6 , 7 , 197 , 1 , 3 , 32 , 6 , 7 , 198 , 1 , 6 , 128 , 6 , 11 , 470 , 6 , 6 , 141 , 6 , 6 , 138 , 6 , 2 , 113 , 6 , 6 , 136 , 6 , 5 , 1 ,1 , 1 ,2 , 1 ,10 , 1 ,4 , 1 ,11 , 1 ,6 , 1 ,7 , 1 ,8 , 1 ,9 , 1 ,3 , 3 , 3 , 8 , 3 , 9 , 3 , 2 , 1 , 30000 , 1 , 1 ,1 ,68 ,18 ,0 ,0 ,2 ,3 ,5 , 8 ,0 ,69 ,0 ,69 ,55 ,55 ,12 ,29850 ,29820 ,30420 ,29573 ,29623 ,29715 ,29135 ,30172 ,29826 ,30492 ,30002 ,29905 ,31800 ,29400 ,30000 ,30000 ,30147 ,29938 ,29775 ,29954 ,29920 ,29850 ,29200 ,29404 ,29700 ,29472 ,30672 ,29000 ,29520 ,30645 ,30114 ,30000 ,30000 ,30000 ,30000 ,30000 ,48050 ,39733 ,29180 ,32840 ,38550 ,39410 ,43443 ,38600 ,30600 ,29333 ,28700 ,20900 ,30000 ,24900 +14310734 ,1 ,200 ,34 ,0 ,0 ,0 ,0 ,0 ,WhiteKnight ,15 , 72 , 0 , 942 , 490 , 496 ,497 ,493 , 505 , 486 , 0 , 0 , 0 , 0 , 0 , 0 ,15 , 0 , 0 , 8120 , 5450 , 985 ,2222 ,24184 , 997 , 10124 , 0 , 0 , 0 , 0 , 0 , 0 ,2 , 9860 ,1 , 10165 ,2 ,false ,false ,1 ,1 , 0 ,false ,3 , 1 , 2 , 3 ,4 ,1 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 3 , 1 ,1 , 1 ,2 , 1 ,10 , 1 ,4 , 1 ,11 , 1 ,6 , 1 ,7 , 1 ,8 , 1 ,9 , 1 ,3 , 3 , 3 , 8 , 3 , 9 , 3 , 2 , 7 , 42000 , 7 , 1 ,1 ,43 ,18 ,0 ,0 ,2 ,3 ,5 , 8 ,0 ,69 ,0 ,69 ,55 ,55 ,12 ,29850 ,29820 ,30420 ,29573 ,29623 ,29715 ,29135 ,30172 ,29826 ,30492 ,30002 ,29905 ,31800 ,29400 ,30000 ,30000 ,30147 ,29938 ,29775 ,29954 ,29920 ,29850 ,29200 ,29404 ,29700 ,29472 ,30672 ,29000 ,29520 ,30645 ,30114 ,30000 ,30000 ,30000 ,30000 ,30000 ,48050 ,39733 ,29180 ,35480 ,38550 ,39410 ,43443 ,38600 ,30600 ,29333 ,28700 ,20900 ,30000 ,24900 +14313101 ,2 ,200 ,34 ,0 ,0 ,0 ,0 ,0 ,Puala ,15 , 14737 , 0 , 942 , 490 , 496 ,497 ,493 , 505 , 486 , 0 , 0 , 0 , 0 , 0 , 0 ,15 , 0 , 0 ,11749 ,21673 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,2 , 9860 ,1 , 10165 ,2 ,false ,false ,1 ,1 , 0 ,false ,3 , 1 , 2 , 3 ,4 ,1 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 10 , 1 ,1 , 1 ,2 , 1 ,10 , 1 ,4 , 1 ,11 , 1 ,6 , 1 ,7 , 1 ,8 , 1 ,9 , 1 ,3 , 3 , 3 , 8 , 3 , 9 , 3 , 2 , 1 , 30000 , 1 , 1 ,1 ,40 ,18 ,0 ,0 ,6 ,1 ,2 ,19 ,1 ,69 ,0 ,69 ,11 ,11 , 0 ,30100 ,30000 ,29595 ,29538 ,29812 ,29289 ,29261 ,29857 ,29694 ,30682 ,29853 ,29885 ,20700 ,29646 ,30132 ,30000 ,30000 ,30142 ,29865 ,29873 ,30109 ,29910 ,29328 ,29420 ,29781 ,29688 ,30147 ,29233 ,29923 ,30714 ,29724 ,30000 ,30000 ,30000 ,30000 ,30000 ,45100 ,40025 ,29020 ,32400 ,38790 ,41090 ,48500 ,38500 ,29270 ,30470 ,29080 ,23300 ,34800 ,29000 +14332659 ,3 ,200 ,34 ,0 ,0 ,0 ,0 ,0 ,Rumi ,15 , 91 , 0 , 942 , 490 , 496 ,497 ,493 , 505 , 486 , 0 , 0 , 0 , 0 , 0 , 0 ,15 , 24985 , 25099 ,11749 , 9548 , 8533 , 921 ,20659 , 505 , 25516 , 21651 , 18147 , 23711 , 21651 , 21322 , 0 ,2 , 9860 ,1 , 10165 ,2 ,false ,false ,1 ,1 , 0 ,false ,3 , 1 , 2 , 3 ,4 ,1 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 , 1 ,1 , 1 ,2 , 1 ,10 , 1 ,4 , 1 ,11 , 1 ,6 , 1 ,7 , 1 ,8 , 1 ,9 , 1 ,3 , 3 , 3 , 8 , 3 , 9 , 3 , 2 , 1 , 30000 , 1 , 1 ,1 ,68 ,18 ,0 ,0 ,2 ,3 ,5 , 8 ,0 ,69 ,0 ,69 ,55 ,55 ,12 ,29850 ,29820 ,30420 ,29573 ,29623 ,29715 ,29135 ,30172 ,29826 ,30492 ,30002 ,29905 ,31800 ,29400 ,30000 ,30000 ,30147 ,29938 ,29775 ,29954 ,29920 ,29850 ,29200 ,29404 ,29700 ,29472 ,30672 ,29000 ,29520 ,30645 ,30114 ,30000 ,30000 ,30000 ,30000 ,30000 ,48050 ,39733 ,29180 ,32840 ,38550 ,39410 ,43443 ,38600 ,30600 ,29333 ,28700 ,20900 ,30000 ,24900 diff --git a/Arrowgene.Ddon.Shared/Files/Assets/StorageItem.csv b/Arrowgene.Ddon.Shared/Files/Assets/StorageItem.csv index 6fa4f805a..7bc85dac4 100644 --- a/Arrowgene.Ddon.Shared/Files/Assets/StorageItem.csv +++ b/Arrowgene.Ddon.Shared/Files/Assets/StorageItem.csv @@ -7,172 +7,13 @@ 1,10,13801,0,0,0 1,10,13807,0,0,0 # Kindlings -1,10,55,0,0,0 +1,99,55,0,0,0 # Gathering 1,10,9404,0,0,0 1,10,9405,0,0,0 1,10,9406,0,0,0 -# Item Bag (Equipment) -3,1,11749,0,0,0 -3,1,10687,0,0,0 -3,1,10692,0,0,0 -3,1,10697,0,0,0 -3,1,10702,0,0,0 -3,1,10707,0,0,0 -3,1,10712,0,0,0 - # Storage Box (Normal) # Fine carpaccion with a glass of wine 6,1,13805,0,0,0 -6,1,9409,0,0,0 -# Keys -6,10,9426,0,0,0 -6,10,9427,0,0,0 -6,10,9428,0,0,0 -6,10,9429,0,0,0 -6,10,9066,0,0,0 -6,10,50,0,0,0 -6,10,49,0,0,0 -6,10,46,0,0,0 -6,10,48,0,0,0 -6,10,14189,0,0,0 -6,10,14190,0,0,0 -6,10,14191,0,0,0 -6,10,14192,0,0,0 -# Gacha Ensemble -6,1,10554,0,0,0 -6,1,10574,0,0,0 -6,1,10579,0,0,0 -6,1,10604,0,0,0 -6,1,10624,0,0,0 -6,1,10629,0,0,0 -6,1,19125,0,0,0 -6,1,19130,0,0,0 -6,1,19115,0,0,0 -6,1,19120,0,0,0 -6,1,17941,0,0,0 -6,1,17942,0,0,0 -6,1,17943,0,0,0 -6,1,17944,0,0,0 -6,1,15625,0,0,0 -6,1,15630,0,0,0 -6,1,15615,0,0,0 -6,1,15620,0,0,0 -6,1,13545,0,0,0 -6,1,13550,0,0,0 -6,1,13535,0,0,0 -6,1,13540,0,0,0 -6,1,14173,0,0,0 -6,1,14178,0,0,0 -6,1,16154,0,0,0 -6,1,21785,0,0,0 -6,1,16159,0,0,0 -6,1,21786,0,0,0 -6,1,13525,0,0,0 -6,1,13530,0,0,0 -6,1,13515,0,0,0 -6,1,13520,0,0,0 -6,1,10594,0,0,0 -6,1,10600,0,0,0 -6,1,10544,0,0,0 -6,1,10550,0,0,0 -6,1,10584,0,0,0 -6,1,10590,0,0,0 -6,1,10534,0,0,0 -6,1,10540,0,0,0 -6,1,13760,0,0,0 -6,1,13759,0,0,0 -6,1,14163,0,0,0 -6,1,14168,0,0,0 -6,1,15641,0,0,0 -6,1,15642,0,0,0 -6,1,15643,0,0,0 -6,1,15644,0,0,0 -6,1,15645,0,0,0 -6,1,15646,0,0,0 -6,1,15635,0,0,0 -6,1,15636,0,0,0 -6,1,15637,0,0,0 -6,1,15638,0,0,0 -6,1,15639,0,0,0 -6,1,15640,0,0,0 -6,1,19595,0,0,0 -6,1,19596,0,0,0 -6,1,19597,0,0,0 -6,1,19598,0,0,0 -6,1,19451,0,0,0 -6,1,19450,0,0,0 -6,1,19514,0,0,0 -6,1,19616,0,0,0 -6,1,19614,0,0,0 -6,1,19518,0,0,0 -6,1,19513,0,0,0 -6,1,19615,0,0,0 -6,1,19613,0,0,0 -6,1,19517,0,0,0 -6,1,19601,0,0,0 -6,1,19602,0,0,0 -6,1,19603,0,0,0 -6,1,19604,0,0,0 -6,1,21189,0,0,0 -6,1,23537,0,0,0 -6,1,21110,0,0,0 -6,1,21190,0,0,0 -6,1,23538,0,0,0 -6,1,21111,0,0,0 -6,1,21159,0,0,0 -6,1,21158,0,0,0 -6,1,21323,0,0,0 -6,1,21324,0,0,0 -6,1,21325,0,0,0 -6,1,20743,0,0,0 -6,1,20744,0,0,0 -6,1,20745,0,0,0 -6,1,20746,0,0,0 -6,1,21166,0,0,0 -6,1,21167,0,0,0 -6,1,21168,0,0,0 -6,1,21169,0,0,0 -6,1,21673,0,0,0 -6,1,21676,0,0,0 -6,1,21674,0,0,0 -6,1,21675,0,0,0 -6,1,21087,0,0,0 -6,1,21092,0,0,0 -6,1,21093,0,0,0 -6,1,21094,0,0,0 -6,1,21174,0,0,0 -6,1,21175,0,0,0 -6,1,21176,0,0,0 -6,1,21177,0,0,0 -6,1,23533,0,0,0 -6,1,23534,0,0,0 -6,1,24694,0,0,0 -6,1,24695,0,0,0 -6,1,25013,0,0,0 -6,1,25014,0,0,0 -6,1,24698,0,0,0 -6,1,25020,0,0,0 -6,1,24696,0,0,0 -6,1,24697,0,0,0 -6,1,25617,0,0,0 -6,1,25618,0,0,0 -6,1,24872,0,0,0 -6,1,24873,0,0,0 -6,1,24870,0,0,0 -6,1,24871,0,0,0 -6,1,24884,0,0,0 -6,1,24885,0,0,0 -6,1,24874,0,0,0 -6,1,24875,0,0,0 -6,1,24876,0,0,0 -6,1,24877,0,0,0 -6,1,24878,0,0,0 -6,1,24879,0,0,0 -6,1,24880,0,0,0 -6,1,24881,0,0,0 -6,1,24882,0,0,0 -6,1,24883,0,0,0 -6,1,25619,0,0,0 -6,1,25620,0,0,0 \ No newline at end of file +6,1,9409,0,0,0 \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/IAssetDeserializer.cs b/Arrowgene.Ddon.Shared/IAssetDeserializer.cs index 972e51312..c126a90b2 100644 --- a/Arrowgene.Ddon.Shared/IAssetDeserializer.cs +++ b/Arrowgene.Ddon.Shared/IAssetDeserializer.cs @@ -1,7 +1,4 @@ -using System; using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; namespace Arrowgene.Ddon.Shared { diff --git a/Arrowgene.Ddon.Shared/Json/JsonReaderWriter.cs b/Arrowgene.Ddon.Shared/Json/JsonReaderWriter.cs index 3ec5c1ffd..f9473f5a9 100644 --- a/Arrowgene.Ddon.Shared/Json/JsonReaderWriter.cs +++ b/Arrowgene.Ddon.Shared/Json/JsonReaderWriter.cs @@ -1,16 +1,16 @@ -using System; using System.Collections.Generic; using System.IO; -using System.Linq; using System.Text.Json; -using System.Threading.Tasks; +using Arrowgene.Logging; namespace Arrowgene.Ddon.Shared.Json { public class JsonReaderWriter : IAssetDeserializer { + private static readonly ILogger Logger = LogProvider.Logger(typeof(JsonReaderWriter)); public List ReadPath(string path) { + Logger.Info($"Reading {path}"); string json = File.ReadAllText(path); return JsonSerializer.Deserialize>(json); } diff --git a/Arrowgene.Ddon.Shared/Model/Ability.cs b/Arrowgene.Ddon.Shared/Model/Ability.cs index ad104c635..43b518f79 100644 --- a/Arrowgene.Ddon.Shared/Model/Ability.cs +++ b/Arrowgene.Ddon.Shared/Model/Ability.cs @@ -4,31 +4,41 @@ namespace Arrowgene.Ddon.Shared.Model { public class Ability { - public JobId EquippedToJob { get; set; } public JobId Job { get; set; } - public byte SlotNo { get; set; } // Slots start at 1 public uint AbilityId { get; set; } public byte AbilityLv { get; set; } - public CDataSetAcquirementParam AsCDataSetAcquirementParam() + public CDataSetAcquirementParam AsCDataSetAcquirementParam(byte slotNo) { return new CDataSetAcquirementParam() { Job = this.Job, - SlotNo = this.SlotNo, + SlotNo = slotNo, AcquirementNo = this.AbilityId, AcquirementLv = this.AbilityLv }; } - public CDataContextAcquirementData AsCDataContextAcquirementData() + public CDataContextAcquirementData AsCDataContextAcquirementData(byte slotNo) { return new CDataContextAcquirementData() { - SlotNo = this.SlotNo, + SlotNo = slotNo, AcquirementNo = this.AbilityId, AcquirementLv = this.AbilityLv }; } + + public CDataLearnedSetAcquirementParam AsCDataLearnedSetAcquirementParam() + { + return new CDataLearnedSetAcquirementParam() + { + Job = this.Job, + Type = 0, + AcquirementNo = this.AbilityId, + AcquirementLv = this.AbilityLv, + AcquirementParamId = 0 + }; + } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Model/Character.cs b/Arrowgene.Ddon.Shared/Model/Character.cs index c89d3cdba..6735de11b 100644 --- a/Arrowgene.Ddon.Shared/Model/Character.cs +++ b/Arrowgene.Ddon.Shared/Model/Character.cs @@ -68,5 +68,10 @@ public Character():base() // TODO: Move to a more sensible place public uint LastEnteredShopId { get; set; } + + public Pawn PawnBySlotNo(byte SlotNo) + { + return Pawns[SlotNo-1]; + } } } diff --git a/Arrowgene.Ddon.Shared/Model/CharacterCommon.cs b/Arrowgene.Ddon.Shared/Model/CharacterCommon.cs index 659cfe386..2edb45f00 100644 --- a/Arrowgene.Ddon.Shared/Model/CharacterCommon.cs +++ b/Arrowgene.Ddon.Shared/Model/CharacterCommon.cs @@ -16,12 +16,15 @@ public CharacterCommon() StatusInfo = new CDataStatusInfo(); CharacterJobDataList = new List(); Equipment = new Equipment(); - CharacterEquipJobItemListDictionary = ((JobId[]) JobId.GetValues(typeof(JobId))) - .Select(jobId => (jobId, new List())) + LearnedNormalSkills = new List(); + LearnedCustomSkills = new List(); + EquippedCustomSkillsDictionary = ((JobId[]) JobId.GetValues(typeof(JobId))) + .Select(jobId => (jobId, Enumerable.Repeat(null, 0x14).ToList())) // Main Palette slots: 0x1, 0x2, 0x3, 0x4 || Sub Palette slots: 0x11, 0x12, 0x13, 0x14 + .ToDictionary(pair => pair.jobId, pair => pair.Item2); + LearnedAbilities = new List(); + EquippedAbilitiesDictionary = ((JobId[]) JobId.GetValues(typeof(JobId))) + .Select(jobId => (jobId, Enumerable.Repeat(null, 10).ToList())) .ToDictionary(pair => pair.jobId, pair => pair.Item2); - NormalSkills = new List(); - CustomSkills = new List(); - Abilities = new List(); } public CDataCharacterJobData? ActiveCharacterJobData @@ -38,11 +41,12 @@ public CDataCharacterJobData? ActiveCharacterJobData public bool HideEquipLantern { get; set; } public List CharacterJobDataList { get; set; } public Equipment Equipment { get; set; } - public Dictionary> CharacterEquipJobItemListDictionary { get; set; } public byte JewelrySlotNum { get; set; } - public List NormalSkills { get; set; } - public List CustomSkills { get; set;} - public List Abilities { get; set; } + public List LearnedNormalSkills { get; set; } + public List LearnedCustomSkills { get; set;} + public Dictionary> EquippedCustomSkillsDictionary { get; set;} + public List LearnedAbilities { get; set; } + public Dictionary> EquippedAbilitiesDictionary { get; set; } public OnlineStatus OnlineStatus; } } \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Model/ClientItemInfo.cs b/Arrowgene.Ddon.Shared/Model/ClientItemInfo.cs index 6209fac58..9beeb6664 100644 --- a/Arrowgene.Ddon.Shared/Model/ClientItemInfo.cs +++ b/Arrowgene.Ddon.Shared/Model/ClientItemInfo.cs @@ -8,10 +8,22 @@ namespace Arrowgene.Ddon.Shared.Model public class ClientItemInfo { public uint ItemId; - public StorageType StorageType; + public byte Category; public ushort Price; public byte StackLimit; + public StorageType StorageType + { + get + { + if (Category == 5) + // Job Items have a category of 5, but Job Items StorageType is 4 + return StorageType.ItemBagJob; + else + return (StorageType) Category; + } + } + // TODO: Optimize this mess (Use a Set or something that doesn't require looping over it) public static ClientItemInfo GetInfoForItemId(List clientItemInfos, uint itemId) { diff --git a/Arrowgene.Ddon.Shared/Model/CustomSkill.cs b/Arrowgene.Ddon.Shared/Model/CustomSkill.cs index 598b38c7e..06416512e 100644 --- a/Arrowgene.Ddon.Shared/Model/CustomSkill.cs +++ b/Arrowgene.Ddon.Shared/Model/CustomSkill.cs @@ -5,29 +5,40 @@ namespace Arrowgene.Ddon.Shared.Model public class CustomSkill { public JobId Job { get; set; } - public byte SlotNo { get; set; } public uint SkillId { get; set; } public byte SkillLv { get; set; } - public CDataSetAcquirementParam AsCDataSetAcquirementParam() + public CDataSetAcquirementParam AsCDataSetAcquirementParam(byte slotNo) { return new CDataSetAcquirementParam() { Job = this.Job, - SlotNo = this.SlotNo, + SlotNo = slotNo, AcquirementNo = this.SkillId, AcquirementLv = this.SkillLv }; } - public CDataContextAcquirementData AsCDataContextAcquirementData() + public CDataContextAcquirementData AsCDataContextAcquirementData(byte slotNo) { return new CDataContextAcquirementData() { - SlotNo = this.SlotNo, + SlotNo = slotNo, AcquirementNo = this.SkillId, AcquirementLv = this.SkillLv }; } + + public CDataLearnedSetAcquirementParam AsCDataLearnedSetAcquirementParam() + { + return new CDataLearnedSetAcquirementParam() + { + Job = this.Job, + Type = 0, + AcquirementNo = this.SkillId, + AcquirementLv = this.SkillLv, + AcquirementParamId = 0 + }; + } } } \ No newline at end of file diff --git a/Arrowgene.Ddon.Shared/Model/Equipment.cs b/Arrowgene.Ddon.Shared/Model/Equipment.cs index d55851aa6..5e3f7f646 100644 --- a/Arrowgene.Ddon.Shared/Model/Equipment.cs +++ b/Arrowgene.Ddon.Shared/Model/Equipment.cs @@ -9,12 +9,15 @@ namespace Arrowgene.Ddon.Shared.Model public class Equipment { private static readonly byte EQUIP_SLOT_NUMBER = 15; + private static readonly byte JOB_ITEM_SLOT_NUMBER = 2; // TODO: Verify - private Dictionary>> equipment; + private readonly Dictionary>> equipment; + private readonly Dictionary> jobItems; - public Equipment(Dictionary>> equipment) + public Equipment(Dictionary>> equipment, Dictionary> jobItems) { this.equipment = equipment; + this.jobItems = jobItems; } public Equipment() @@ -28,33 +31,61 @@ public Equipment() equipment[job][equipType] = Enumerable.Repeat(null, EQUIP_SLOT_NUMBER).ToList(); } } + + jobItems = new Dictionary>(); + foreach (JobId job in Enum.GetValues(typeof(JobId))) + { + jobItems[job] = Enumerable.Repeat(null, JOB_ITEM_SLOT_NUMBER).ToList(); + } } - public Dictionary>> getAllEquipment() + + public Dictionary>> GetAllEquipment() { return equipment; } - public List getEquipment(JobId job, EquipType equipType) + public List GetEquipment(JobId job, EquipType equipType) { return equipment[job][equipType]; } - public Item? getEquipItem(JobId job, EquipType equipType, byte slot) { + public Item? GetEquipItem(JobId job, EquipType equipType, byte slot) { return equipment[job][equipType][slot-1]; } - public Item? setEquipItem(Item newItem, JobId job, EquipType equipType, byte slot) { - Item? oldItem = getEquipItem(job, equipType, slot); + public Item? SetEquipItem(Item? newItem, JobId job, EquipType equipType, byte slot) { + Item? oldItem = GetEquipItem(job, equipType, slot); equipment[job][equipType][slot-1] = newItem; return oldItem; } + public Dictionary> GetAllJobItems() + { + return jobItems; + } + + public List GetJobItems(JobId job) + { + return jobItems[job]; + } + + public Item? GetJobItem(JobId job, byte slot) { + return jobItems[job][slot-1]; + } + + public Item? SetJobItem(Item? newItem, JobId job, byte slot) { + Item? oldItem = GetJobItem(job, slot); + jobItems[job][slot-1] = newItem; + return oldItem; + } + + public List getEquipmentAsCDataContextEquipData(JobId job, EquipType equipType) { // In the context equipment lists, the index is the slot. An element with all info set to 0 has to be in place if a slot is not filled - return getEquipment(job, equipType) + return GetEquipment(job, equipType) .Select(x => x == null ? new CDataContextEquipData() : new CDataContextEquipData() { ItemId = (ushort) x.ItemId, @@ -68,7 +99,7 @@ public List getEquipmentAsCDataContextEquipData(JobId job public List getEquipmentAsCDataEquipItemInfo(JobId job, EquipType equipType) { - return getEquipment(job, equipType) + return GetEquipment(job, equipType) .Select((x, index) => new {item = x, slot = (byte)(index+1)}) .Select(tuple => new CDataEquipItemInfo() { @@ -87,7 +118,7 @@ public List getEquipmentAsCDataEquipItemInfo(JobId job, Equi public List getEquipmentAsCDataCharacterEquipInfo(JobId job, EquipType equipType) { - return getEquipment(job, equipType) + return GetEquipment(job, equipType) .Select((x, index) => new {item = x, slot = (byte)(index+1)}) .Where(tuple => tuple.item != null) .Select(tuple => new CDataCharacterEquipInfo() @@ -98,6 +129,19 @@ public List getEquipmentAsCDataCharacterEquipInfo(JobId }) .ToList(); } + + + public List getJobItemsAsCDataEquipJobItem(JobId job) + { + return GetJobItems(job) + .Select((x, index) => new {itemAndNum = x, slot = (byte)(index+1)}) + .Select(tuple => new CDataEquipJobItem() + { + JobItemId = tuple.itemAndNum?.ItemId ?? 0, + EquipSlotNo = tuple.slot + }) + .ToList(); + } } public enum EquipType : byte { diff --git a/Arrowgene.Ddon.Shared/Model/Storages.cs b/Arrowgene.Ddon.Shared/Model/Storages.cs index 10993f15b..bbb438379 100644 --- a/Arrowgene.Ddon.Shared/Model/Storages.cs +++ b/Arrowgene.Ddon.Shared/Model/Storages.cs @@ -116,6 +116,20 @@ public Storage(ushort slotMax, byte[] sortData) Items = Enumerable.Repeat?>(null, slotMax).ToList(); SortData = sortData; } + + public Tuple? findItemByUId(string itemUId) + { + for(int index = 0; index < this.Items.Count; index++) + { + var itemAndCount = this.Items[index]; + if(itemAndCount?.Item1.UId == itemUId) + { + return new Tuple((ushort)(index+1), itemAndCount.Item1, itemAndCount.Item2); + } + } + + return null; + } } // Check nItem::E_STORAGE_TYPE in the PS4 debug symbols for IDs? diff --git a/Arrowgene.Ddon.Shared/Network/PacketId.cs b/Arrowgene.Ddon.Shared/Network/PacketId.cs index b64563148..65fc5bbf0 100644 --- a/Arrowgene.Ddon.Shared/Network/PacketId.cs +++ b/Arrowgene.Ddon.Shared/Network/PacketId.cs @@ -1297,10 +1297,10 @@ private static Dictionary InitializeLoginPacketIds() public static readonly PacketId S2C_EQUIP_CHANGE_PAWN_STORAGE_EQUIP_RES = new PacketId(29, 5, 2, "S2C_EQUIP_CHANGE_PAWN_STORAGE_EQUIP_RES", ServerType.Game, PacketSource.Server); // ポーン倉庫装備変更に public static readonly PacketId C2S_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_REQ = new PacketId(29, 6, 1, "C2S_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_RES = new PacketId(29, 6, 2, "S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_RES", ServerType.Game, PacketSource.Server); // ジョブ専用アイテム装備変更に - public static readonly PacketId S2C_EQUIP_29_6_16_NTC = new PacketId(29, 6, 16, "S2C_EQUIP_29_6_16_NTC", ServerType.Game, PacketSource.Server); + public static readonly PacketId S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_NTC = new PacketId(29, 6, 16, "S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_NTC", ServerType.Game, PacketSource.Server, "S2C_EQUIP_29_6_16_NTC"); public static readonly PacketId C2S_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_REQ = new PacketId(29, 7, 1, "C2S_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_RES = new PacketId(29, 7, 2, "S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_RES", ServerType.Game, PacketSource.Server); // ポーンジョブ専用アイテム装備変更に - public static readonly PacketId S2C_EQUIP_29_7_16_NTC = new PacketId(29, 7, 16, "S2C_EQUIP_29_7_16_NTC", ServerType.Game, PacketSource.Server); + public static readonly PacketId S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_NTC = new PacketId(29, 7, 16, "S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_NTC", ServerType.Game, PacketSource.Server, "S2C_EQUIP_29_7_16_NTC"); public static readonly PacketId C2S_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_REQ = new PacketId(29, 8, 1, "C2S_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_RES = new PacketId(29, 8, 2, "S2C_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_RES", ServerType.Game, PacketSource.Server); // 頭装備表示切り替えに public static readonly PacketId C2S_EQUIP_UPDATE_HIDE_PAWN_HEAD_ARMOR_REQ = new PacketId(29, 9, 1, "C2S_EQUIP_UPDATE_HIDE_PAWN_HEAD_ARMOR_REQ", ServerType.Game, PacketSource.Client); @@ -1689,12 +1689,12 @@ private static Dictionary InitializeLoginPacketIds() public static readonly PacketId S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_RES = new PacketId(41, 2, 2, "S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_RES", ServerType.Game, PacketSource.Server); // キャラクタエディット更新 public static readonly PacketId C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_REQ = new PacketId(41, 3, 1, "C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_RES = new PacketId(41, 3, 2, "S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_RES", ServerType.Game, PacketSource.Server); // ポーンエディット更新 - public static readonly PacketId S2C_CHARACTER_41_4_16_NTC = new PacketId(41, 4, 16, "S2C_CHARACTER_41_4_16_NTC", ServerType.Game, PacketSource.Server); + public static readonly PacketId S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_NTC = new PacketId(41, 4, 16, "S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_NTC", ServerType.Game, PacketSource.Server, "S2C_CHARACTER_41_4_16_NTC"); public static readonly PacketId C2S_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_REQ = new PacketId(41, 5, 1, "C2S_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_RES = new PacketId(41, 5, 2, "S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_RES", ServerType.Game, PacketSource.Server); // キャラクタエディット拡張更新 public static readonly PacketId C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_REQ = new PacketId(41, 6, 1, "C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_RES = new PacketId(41, 6, 2, "S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_RES", ServerType.Game, PacketSource.Server); // ポーンエディット拡張更新 - public static readonly PacketId S2C_CHARACTER_41_7_16_NTC = new PacketId(41, 7, 16, "S2C_CHARACTER_41_7_16_NTC", ServerType.Game, PacketSource.Server); + public static readonly PacketId S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_EX_NTC = new PacketId(41, 7, 16, "S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_EX_NTC", ServerType.Game, PacketSource.Server, "S2C_CHARACTER_41_7_16_NTC"); public static readonly PacketId C2S_CHARACTER_EDIT_GET_SHOP_PRICE_REQ = new PacketId(41, 8, 1, "C2S_CHARACTER_EDIT_GET_SHOP_PRICE_REQ", ServerType.Game, PacketSource.Client); public static readonly PacketId S2C_CHARACTER_EDIT_GET_SHOP_PRICE_RES = new PacketId(41, 8, 2, "S2C_CHARACTER_EDIT_GET_SHOP_PRICE_RES", ServerType.Game, PacketSource.Server); // 美容院と従者の転生の価格の取得 @@ -3203,10 +3203,10 @@ private static Dictionary InitializeGamePacketIds() AddPacketIdEntry(packetIds, S2C_EQUIP_CHANGE_PAWN_STORAGE_EQUIP_RES); AddPacketIdEntry(packetIds, C2S_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_REQ); AddPacketIdEntry(packetIds, S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_RES); - AddPacketIdEntry(packetIds, S2C_EQUIP_29_6_16_NTC); + AddPacketIdEntry(packetIds, S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_NTC); AddPacketIdEntry(packetIds, C2S_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_REQ); AddPacketIdEntry(packetIds, S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_RES); - AddPacketIdEntry(packetIds, S2C_EQUIP_29_7_16_NTC); + AddPacketIdEntry(packetIds, S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_NTC); AddPacketIdEntry(packetIds, C2S_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_REQ); AddPacketIdEntry(packetIds, S2C_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_RES); AddPacketIdEntry(packetIds, C2S_EQUIP_UPDATE_HIDE_PAWN_HEAD_ARMOR_REQ); @@ -3595,12 +3595,12 @@ private static Dictionary InitializeGamePacketIds() AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_RES); AddPacketIdEntry(packetIds, C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_REQ); AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_RES); - AddPacketIdEntry(packetIds, S2C_CHARACTER_41_4_16_NTC); + AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_NTC); AddPacketIdEntry(packetIds, C2S_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_REQ); AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_RES); AddPacketIdEntry(packetIds, C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_REQ); AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_RES); - AddPacketIdEntry(packetIds, S2C_CHARACTER_41_7_16_NTC); + AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_EX_NTC); AddPacketIdEntry(packetIds, C2S_CHARACTER_EDIT_GET_SHOP_PRICE_REQ); AddPacketIdEntry(packetIds, S2C_CHARACTER_EDIT_GET_SHOP_PRICE_RES); diff --git a/Arrowgene.Ddon.Test/Shared/Structure/PacketUnderstanderHasLoggedInTest.cs b/Arrowgene.Ddon.Test/Shared/Structure/PacketUnderstanderHasLoggedInTest.cs new file mode 100644 index 000000000..8e76d9200 --- /dev/null +++ b/Arrowgene.Ddon.Test/Shared/Structure/PacketUnderstanderHasLoggedInTest.cs @@ -0,0 +1,43 @@ +using System; +using Arrowgene.Ddon.Shared.Entity; +using Arrowgene.Ddon.Shared.Entity.PacketStructure; +using Xunit; +using Xunit.Abstractions; + +namespace Arrowgene.Ddon.Test.Shared.Structure +{ + public class PacketUnderstanderHasLoggedInTest : TestBase + { + public PacketUnderstanderHasLoggedInTest(ITestOutputHelper output) : base(output) + { + } + + [Fact] + public void TestUnderstandPacket() + { + S2CItemUpdateCharacterItemNtc pcap = EntitySerializer.Get().Read(new byte[] { + 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x08, 0x46, 0x45, 0x45, 0x33, 0x30, 0x41, 0x35, 0x32, +0x00, 0x00, 0x39, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x20, 0xB8, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x46, 0x45, 0x45, +0x33, 0x30, 0x41, 0x35, 0x32, 0x00, 0x00, 0x39, 0x95, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, +0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x08, 0x33, 0x33, 0x43, 0x39, 0x42, 0x42, 0x45, 0x41, 0x00, 0x00, 0x39, 0x91, 0x00, 0x00, +0x00, 0x01, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xB8, +0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x54, 0xA0, 0xC0 + }); + } + + private byte[] toByteArray(string hexstr) { + byte[] bytes = new byte[hexstr.Length / 2]; + + for (int i = 0; i < hexstr.Length; i += 2) + bytes[i/2] = Convert.ToByte(hexstr.Substring(i, 2), 16); + + return bytes; + } + } +} \ No newline at end of file diff --git a/Arrowgene.Ddon.config.local_dev.json b/Arrowgene.Ddon.config.local_dev.json new file mode 100644 index 000000000..631525115 --- /dev/null +++ b/Arrowgene.Ddon.config.local_dev.json @@ -0,0 +1,161 @@ +{ + "WebServerSetting": { + "PublicWebEndPoint": { + "IpAddress": "0.0.0.0", + "Port": 52099, + "IsHttps": false, + "HttpsCertPath": "", + "HttpsCertPw": "", + "SslProtocols": 0, + "DomainName": "" + }, + "WebSetting": { + "ServerHeader": "", + "WebEndpoints": [ + { + "IpAddress": "0.0.0.0", + "Port": 52099, + "IsHttps": false, + "HttpsCertPath": "", + "HttpsCertPw": "", + "SslProtocols": 0, + "DomainName": "" + } + ], + "WebFolder": "\/var\/ddon\/server\/Files\/www" + } + }, + "GameServerSetting": { + "ServerSetting": { + "Id": 10, + "Name": "Game", + "ListenIpAddress": "0.0.0.0", + "ServerPort": 52000, + "LogLevel": 0, + "LogUnknownPackets": true, + "LogOutgoingPackets": true, + "LogOutgoingPacketPayload": false, + "LogIncomingPackets": true, + "LogIncomingPacketPayload": false, + "LogIncomingPacketStructure": false, + "LogOutgoingPacketStructure": false, + "ServerSocketSettings": { + "Identity": "Game", + "MaxConnections": 100, + "NumSimultaneouslyWriteOperations": 100, + "BufferSize": 2000, + "Retries": 10, + "MaxUnitOfOrder": 1, + "MaxSimultaneousSendsPerClient": 1, + "SocketTimeoutSeconds": -1, + "SocketSettings": { + "Backlog": 5, + "DontFragment": true, + "DualMode": false, + "ExclusiveAddressUse": false, + "NoDelay": false, + "UseOnlyOverlappedIo": false, + "ReceiveBufferSize": 8192, + "ReceiveTimeout": 0, + "SendBufferSize": 8192, + "SendTimeout": 0, + "Ttl": 32, + "LingerEnabled": false, + "LingerTime": 30, + "SocketOptions": [ + { + "Level": "Socket", + "Name": 4, + "Value": false + } + ] + } + } + } + }, + "LoginServerSetting": { + "ServerSetting": { + "Id": 1, + "Name": "Login", + "ListenIpAddress": "0.0.0.0", + "ServerPort": 52100, + "LogLevel": 0, + "LogUnknownPackets": true, + "LogOutgoingPackets": true, + "LogOutgoingPacketPayload": false, + "LogIncomingPackets": true, + "LogIncomingPacketPayload": false, + "LogIncomingPacketStructure": false, + "LogOutgoingPacketStructure": false, + "ServerSocketSettings": { + "Identity": "Login", + "MaxConnections": 100, + "NumSimultaneouslyWriteOperations": 100, + "BufferSize": 2000, + "Retries": 10, + "MaxUnitOfOrder": 1, + "MaxSimultaneousSendsPerClient": 1, + "SocketTimeoutSeconds": -1, + "SocketSettings": { + "Backlog": 5, + "DontFragment": true, + "DualMode": false, + "ExclusiveAddressUse": false, + "NoDelay": false, + "UseOnlyOverlappedIo": false, + "ReceiveBufferSize": 8192, + "ReceiveTimeout": 0, + "SendBufferSize": 8192, + "SendTimeout": 0, + "Ttl": 32, + "LingerEnabled": false, + "LingerTime": 30, + "SocketOptions": [ + { + "Level": "Socket", + "Name": 4, + "Value": false + } + ] + } + } + }, + "AccountRequired": false, + "JobLevelMax": 65, + "ClanMemberMax": 100, + "CharacterNumMax": 4, + "EnableVisualEquip": true, + "FriendListMax": 200, + "NoOperationTimeOutTime": 14400, + "UrlApiA": "http:\/\/localhost:52099\/link\/api", + "UrlApiB": "http:\/\/localhost:52099\/link\/api", + "UrlCampaign": "http:\/\/localhost:52099\/sp_ingame\/campaign\/bnr\/slide.html", + "UrlCampaignBanner": "http:\/\/localhost:52099\/sp_ingame\/campaign\/bnr\/bnr01.html?", + "UrlChargeA": "http:\/\/localhost:52099\/sp_ingame\/charge\/", + "UrlChargeB": "http:\/\/localhost:52099\/sp_ingame\/charge\/", + "UrlChargeCallback": "http:\/\/localhost:52099\/opening\/entry\/ddo\/cog_callback\/charge", + "UrlCompanionImage": "http:\/\/localhost:52099\/", + "UrlIndex": "http:\/\/localhost:52099\/sp_ingame\/link\/index.html", + "UrlManual": "http:\/\/localhost:52099\/manual_nfb\/", + "UrlPhotoupAuthorize": "http:\/\/localhost:52099\/api\/photoup\/authorize", + "UrlSample10": "http:\/\/sample10.html", + "UrlSample9": "http:\/\/sample09.html", + "UrlShopAttention": "http:\/\/localhost:52099\/shop\/ingame\/attention?", + "UrlShopCounterA": "http:\/\/localhost:52099\/shop\/ingame\/counter?", + "UrlShopCounterB": "http:\/\/localhost:52099\/shop\/ingame\/counter?", + "UrlShopDetail": "http:\/\/localhost:52099\/shop\/ingame\/stone\/detail", + "UrlShopStoneLimit": "http:\/\/localhost:52099\/shop\/ingame\/stone\/limit", + "UrlSupportIndex": "http:\/\/localhost:52099\/sp_ingame\/support\/index.html" + }, + "DatabaseSetting": { + "Type": 0, + "SqLiteFolder": "\/var\/ddon\/server\/Files\/Database", + "Host": "localhost", + "Port": 3306, + "User": "", + "Password": "", + "Database": "Ddon", + "WipeOnStartup": false + }, + "AssetPath": "\/var\/ddon\/server\/Files\/Assets" +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..2adf609b8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env +WORKDIR /App +COPY . ./ + +RUN dotnet publish Arrowgene.Ddon.Cli/Arrowgene.Ddon.Cli.csproj /p:Version=1.0.0.0 -p:PublishReadyToRun=true /p:DebugType=None /p:DebugSymbols=false -r linux-x64 --self-contained false -c Release -o out + +FROM mcr.microsoft.com/dotnet/aspnet:6.0 +#RUN apt-get update && apt-get install -y apt-transport-https && rm -rf /var/lib/apt/lists/* + +# Database +EXPOSE 3306/tcp +# Game server +EXPOSE 52000/tcp +# Web server +EXPOSE 52099/tcp +# Login server +EXPOSE 52100/tcp +ENV DOTNET_EnableDiagnostics=0 + +WORKDIR /var/ddon/server +COPY --from=build-env /App/out . +RUN adduser --disabled-password --gecos "" ddon_server +RUN chown -R ddon_server:ddon_server . +USER ddon_server + +CMD ["/var/ddon/server/Arrowgene.Ddon.Cli", "server", "start"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..8ffd66331 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,26 @@ +version: '3.8' + +volumes: + ddon-server-database-volume: + +services: + app: + container_name: ddon-server + build: . + restart: no + ports: + # Database + - '3306:3306' + # Game server + - '52000:52000' + # Web server + - '52099:52099' + # Login server + - '52100:52100' + volumes: + - ddon-server-database-volume:/var/ddon/server/Files/Database + - ./Arrowgene.Ddon.config.local_dev.json:/var/ddon/server/Files/Arrowgene.Ddon.config.json:ro + - ./Arrowgene.Ddon.Shared/Files/Assets:/var/ddon/server/Files/Assets:ro + # Workaround: cli expects to be able to process keyboard input + tty: true + command: /var/ddon/server/Arrowgene.Ddon.Cli server start diff --git a/research/GamePackets.md b/research/GamePackets.md index 868ba5839..6aae093d1 100644 --- a/research/GamePackets.md +++ b/research/GamePackets.md @@ -1163,10 +1163,10 @@ |S2C_EQUIP_CHANGE_PAWN_STORAGE_EQUIP_RES|29|5|2|0x7d4dc0|ポーン倉庫装備変更に| |C2S_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_REQ|29|6|1|0x827873|| |S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_RES|29|6|2|0x7d42f0|ジョブ専用アイテム装備変更に| -|S2C_EQUIP_29_6_16_NTC|29|6|16|0x7d4160|None| +|S2C_EQUIP_CHANGE_CHARACTER_EQUIP_JOB_ITEM_NTC|29|6|16|0x7d4160|None| |C2S_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_REQ|29|7|1|0x827b13|| |S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_RES|29|7|2|0x7d4a50|ポーンジョブ専用アイテム装備変更に| -|S2C_EQUIP_29_7_16_NTC|29|7|16|0x7d4920|None| +|S2C_EQUIP_CHANGE_PAWN_EQUIP_JOB_ITEM_NTC|29|7|16|0x7d4920|None| |C2S_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_REQ|29|8|1|0x828473|| |S2C_EQUIP_UPDATE_HIDE_CHARACTER_HEAD_ARMOR_RES|29|8|2|0x7d58e0|頭装備表示切り替えに| |C2S_EQUIP_UPDATE_HIDE_PAWN_HEAD_ARMOR_REQ|29|9|1|0x828633|| @@ -1583,7 +1583,7 @@ |S2C_40_2_2_RES|40|2|2|0x7d2290|None| -### Group: 41 - (CHARACTER) +### Group: 41 - (CHARACTER_EDIT) |Name|GroupID|ID|Sub ID|Code Address|Comment| |---|---|---|---|---|---| |C2S_CHARACTER_EDIT_GET_UNLOCKED_EDIT_PARTS_LIST_REQ|41|0|1||| @@ -1594,12 +1594,12 @@ |S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_RES|41|2|2|0x7c8550|キャラクタエディット更新| |C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_REQ|41|3|1|0x84084e|| |S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_RES|41|3|2|0x7c8c40|ポーンエディット更新| -|S2C_CHARACTER_41_4_16_NTC|41|4|16|0x7c88e0|None| +|S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_NTC|41|4|16|0x7c88e0|None| |C2S_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_REQ|41|5|1|0x8406be|| |S2C_CHARACTER_EDIT_UPDATE_CHARACTER_EDIT_PARAM_EX_RES|41|5|2|0x7c8420|キャラクタエディット拡張更新| |C2S_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_REQ|41|6|1|0x8407ce|| |S2C_CHARACTER_EDIT_UPDATE_PAWN_EDIT_PARAM_EX_RES|41|6|2|0x7c8a50|ポーンエディット拡張更新| -|S2C_CHARACTER_41_7_16_NTC|41|7|16|0x7c8640|None| +|S2C_CHARACTER_EDIT_UPDATE_EDIT_PARAM_EX_NTC|41|7|16|0x7c8640|None| |C2S_CHARACTER_EDIT_GET_SHOP_PRICE_REQ|41|8|1|0x8214b3|| |S2C_CHARACTER_EDIT_GET_SHOP_PRICE_RES|41|8|2|0x7c81e0|美容院と従者の転生の価格の取得|