From 9567667ec7044843eddaef31af4bf2ff9dc30ed2 Mon Sep 17 00:00:00 2001 From: Jelle <60387522+JelleInfinity@users.noreply.github.com> Date: Tue, 18 Oct 2022 21:22:38 +0200 Subject: [PATCH] Feature update Add a whole bunch of extra editors Set some default parameters Add some drop downs Add a whole bunch of hashes (Thanks to @mvit) --- pkNX.Game/File/GameFile.cs | 17 + pkNX.Game/File/GameFileMapping.cs | 48 +- pkNX.Game/GameManagerPLA.cs | 133 ++- .../Arceus/Poke/Model Set/PokeModelSet8a.cs | 32 + .../Arceus/Poke/Model Set/PokeModelType8a.cs | 792 +++++++++--------- .../Poke/Model Set/PokeResidentType8a.cs | 6 +- .../Arceus/Poke/PokeAIArchive8a.cs | 90 +- .../Arceus/Poke/PokeBattleSpawnArchive8a.cs | 34 + .../Arceus/Poke/PokeBodyParticleArchive8a.cs | 43 + .../Poke/PokeCaptureCollisionArchive8a.cs | 44 + .../Poke/PokeDefaultLocatorArchive8a.cs | 33 + .../Arceus/Pokedex/PokedexResearchTable.cs | 29 +- .../Arceus/Util/ArchiveContents8a.cs | 26 +- .../Converters/AIBehaviourConverter.cs | 39 + pkNX.WinForms/MainEditor/EditorPLA.cs | 33 + 15 files changed, 946 insertions(+), 453 deletions(-) create mode 100644 pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBattleSpawnArchive8a.cs create mode 100644 pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBodyParticleArchive8a.cs create mode 100644 pkNX.Structures.FlatBuffers/Arceus/Poke/PokeCaptureCollisionArchive8a.cs create mode 100644 pkNX.Structures.FlatBuffers/Arceus/Poke/PokeDefaultLocatorArchive8a.cs create mode 100644 pkNX.Structures/Converters/AIBehaviourConverter.cs diff --git a/pkNX.Game/File/GameFile.cs b/pkNX.Game/File/GameFile.cs index 9f53d8b4..94e0b22b 100644 --- a/pkNX.Game/File/GameFile.cs +++ b/pkNX.Game/File/GameFile.cs @@ -179,8 +179,11 @@ public enum GameFile /// Symbol Behavior Definition SymbolBehave, + ArchiveFolder, + /// Area Resident Archive Resident, + archive_contents, /// "PokeEncount" Rate Multipler Archive EncounterRateTable, @@ -196,6 +199,7 @@ public enum GameFile /// All pokedex research tasks DexResearch, + DexFormStorage, DexRank, ThrowParam, @@ -336,5 +340,18 @@ public enum GameFile WaterMotion, PokemonResourceList, + PokeBodyParticle, + PokeCaptureCollision, PokemonResourceTable, + PokeBattleSpawn, + PokeDefaultLocator, + PokeEatingHabits, + MoveObstructionLegend, + MoveObstructionLegendEffect, + MoveObstructionSE, + MoveObstructionWild, + MoveObstructionWildEffect, + MoveObstructionWater, + MoveObstructionWaterEffect, + NushiBattleSettings, } diff --git a/pkNX.Game/File/GameFileMapping.cs b/pkNX.Game/File/GameFileMapping.cs index 79a1ad1c..0612e5c2 100644 --- a/pkNX.Game/File/GameFileMapping.cs +++ b/pkNX.Game/File/GameFileMapping.cs @@ -1,9 +1,9 @@ +using pkNX.Containers; +using pkNX.Structures; using System; using System.Collections.Generic; using System.Linq; using System.Threading; -using pkNX.Containers; -using pkNX.Structures; namespace pkNX.Game; @@ -212,13 +212,16 @@ internal void SaveAll() new(GameFile.StoryText8, 9, "bin", "message", "Simp_Chinese", "script"), new(GameFile.StoryText9, 10, "bin", "message", "Trad_Chinese", "script"), + new(GameFile.DexFormStorage , ContainerType.SingleFile, "bin", "appli", "pokedex", "res_table", "pokedex_form_storage_index_table.bin"), new(GameFile.DexRank , ContainerType.SingleFile, "bin", "appli", "pokedex", "res_table", "pokedex_rank_table.bin"), new(GameFile.DexResearch , ContainerType.SingleFile, "bin", "appli", "pokedex", "res_table", "pokedex_research_task_table.bin"), new(GameFile.PokemonResourceList , ContainerType.SingleFile, "bin", "appli", "res_pokemon", "list", "pokemon_info_list.bin"), new(GameFile.MoveShop , ContainerType.SingleFile, "bin", "appli", "wazaremember", "bin", "wazashop_table.bin"), new(GameFile.HaShop , ContainerType.SingleFile, "bin", "appli", "shop", "bin", "ha_shop_data.bin"), + new(GameFile.ArchiveFolder , "bin", "archive"), new(GameFile.Resident , ContainerType.GFPack , "bin", "archive", "field", "resident_release.gfpak"), + new(GameFile.archive_contents , ContainerType.SingleFile, "bin", "archive", "archive_contents.bin"), new(GameFile.ThrowParam , ContainerType.SingleFile, "bin", "capture", "throw_param_table.bin"), new(GameFile.ThrowPermissionSet , ContainerType.SingleFile, "bin", "capture", "throw_permissionset_dictionary.bin"), @@ -342,22 +345,35 @@ internal void SaveAll() new(GameFile.SoundConfig , ContainerType.SingleFile, "bin", "misc", "app_config", "sound_config.bin"), new(GameFile.WaterMotion , ContainerType.SingleFile, "bin", "misc", "app_config", "water_motion.bin"), - new(GameFile.MoveStats , "bin", "pml", "waza"), - new(GameFile.ItemStats , ContainerType.SingleFile, "bin", "pml", "item", "item.dat"), - new(GameFile.Evolutions , ContainerType.SingleFile, "bin", "pml", "evolution", "evolution_data_total.evobin"), - new(GameFile.PersonalStats , ContainerType.SingleFile, "bin", "pml", "personal", "personal_data_total.perbin"), - new(GameFile.Learnsets , ContainerType.SingleFile, "bin", "pml", "waza_oboe", "waza_oboe_total.wazaoboe"), + new(GameFile.MoveStats , "bin", "pml", "waza"), + new(GameFile.ItemStats , ContainerType.SingleFile, "bin", "pml", "item", "item.dat"), + new(GameFile.Evolutions , ContainerType.SingleFile, "bin", "pml", "evolution", "evolution_data_total.evobin"), + new(GameFile.PersonalStats , ContainerType.SingleFile, "bin", "pml", "personal", "personal_data_total.perbin"), + new(GameFile.Learnsets , ContainerType.SingleFile, "bin", "pml", "waza_oboe", "waza_oboe_total.wazaoboe"), - new(GameFile.EncounterGift , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_add.bin"), - new(GameFile.SymbolBehave , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_ai.bin"), - new(GameFile.FieldDrops , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_drop_item.bin"), - new(GameFile.BattleDrops , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_drop_item_battle.bin"), - new(GameFile.EncounterRateTable , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_encount.bin"), - new(GameFile.EncounterStatic , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_event_encount.bin"), - new(GameFile.PokeMisc , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_misc.bin"), - new(GameFile.PokemonResourceTable , ContainerType.SingleFile, "bin", "pokemon", "table", "poke_resource_table.trpmcatalog"), + new(GameFile.EncounterGift , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_add.bin"), + new(GameFile.SymbolBehave , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_ai.bin"), + new(GameFile.PokeBattleSpawn , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_battle_spawn.bin"), + new(GameFile.PokeBodyParticle , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_body_particle.bin"), + new(GameFile.PokeCaptureCollision , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_capture_collision.bin"), + new(GameFile.PokeDefaultLocator , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_default_locator.trloc"), + new(GameFile.FieldDrops , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_drop_item.bin"), + new(GameFile.BattleDrops , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_drop_item_battle.bin"), + new(GameFile.PokeEatingHabits , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_eating_habits.bin"), + new(GameFile.EncounterRateTable , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_encount.bin"), + new(GameFile.EncounterStatic , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_event_encount.bin"), + new(GameFile.MoveObstructionLegend , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_ns_legend.bin"), + new(GameFile.MoveObstructionLegendEffect , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_ns_legend_effect.bin"), + new(GameFile.MoveObstructionSE , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_se.bin"), + new(GameFile.MoveObstructionWild , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_wild.bin"), + new(GameFile.MoveObstructionWildEffect , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_wild_effect.bin"), + new(GameFile.MoveObstructionWater , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_wild_water.bin"), + new(GameFile.MoveObstructionWaterEffect , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_field_obstruction_waza_wild_water_effect.bin"), + new(GameFile.PokeMisc , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_misc.bin"), + new(GameFile.NushiBattleSettings , ContainerType.SingleFile, "bin", "pokemon", "data", "poke_nushi_battle_setting.bin"), + new(GameFile.PokemonResourceTable , ContainerType.SingleFile, "bin", "pokemon", "table", "poke_resource_table.trpmcatalog"), - new(GameFile.EncounterTrade , ContainerType.SingleFile, "bin", "script_event_data", "field_trade.bin"), // Incorrect? + new(GameFile.EncounterTrade , ContainerType.SingleFile, "bin", "script_event_data", "field_trade.bin"), // Incorrect? // Cutscenes bin\demo // Models bin\archive\pokemon diff --git a/pkNX.Game/GameManagerPLA.cs b/pkNX.Game/GameManagerPLA.cs index c258eebe..d4b13578 100644 --- a/pkNX.Game/GameManagerPLA.cs +++ b/pkNX.Game/GameManagerPLA.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using pkNX.Containers; @@ -39,6 +40,135 @@ public override void Initialize() ResetData(); ItemConverter.ItemNames = GetStrings(TextName.ItemNames); + + // TODO: Get these from files + AIBehaviourConverter.BehaviourNames = new HashSet { + "", + "group_leader_wild_poke_coward_lv1", + "group_leader_wild_poke_coward_lv1_fish_pm0550", + "group_leader_wild_poke_coward_lv1_ghost", + "group_leader_wild_poke_coward_lv2", + "group_leader_wild_poke_coward_lv2_dist", + "group_leader_wild_poke_coward_lv3", + "group_leader_wild_poke_coward_pm0063", + "group_leader_wild_poke_coward_pm0133", + "group_leader_wild_poke_coward_siren", + "group_leader_wild_poke_fortress_ew053_to_warlike", + "group_leader_wild_poke_fortress_pm0224_to_warlike", + "group_leader_wild_poke_mild", + "group_leader_wild_poke_mild_koduck", + "group_leader_wild_poke_mild_lv1_barrier", + "group_leader_wild_poke_mild_lv1_to_coward", + "group_leader_wild_poke_mild_lv1_to_coward_fish_vanish", + "group_leader_wild_poke_mild_lv1_to_coward_pm0113", + "group_leader_wild_poke_mild_lv1_to_coward_pm0363", + "group_leader_wild_poke_mild_lv1_to_coward_tamazarashi", + "group_leader_wild_poke_mild_lv1_to_warlike", + "group_leader_wild_poke_mild_lv1_to_warlike_pm0100", + "group_leader_wild_poke_mild_lv2_to_coward", + "group_leader_wild_poke_mild_lv2_to_warlike", + "group_leader_wild_poke_mild_lv3_to_coward_shaymin", + "group_leader_wild_poke_mild_lv3_to_warlike", + "group_leader_wild_poke_mild_pm0129", + "group_leader_wild_poke_mild_pm0299", + "group_leader_wild_poke_warlike_dive_lv2", + "group_leader_wild_poke_warlike_fish_oyabun", + "group_leader_wild_poke_warlike_fortress", + "group_leader_wild_poke_warlike_fortress_fish", + "group_leader_wild_poke_warlike_ghost_callhelp", + "group_leader_wild_poke_warlike_lv1", + "group_leader_wild_poke_warlike_lv1_fish_vanish", + "group_leader_wild_poke_warlike_lv1_ghost", + "group_leader_wild_poke_warlike_lv1_pm0075", + "group_leader_wild_poke_warlike_lv2", + "group_leader_wild_poke_warlike_lv2_callhelp", + "group_leader_wild_poke_warlike_lv2_sly", + "group_leader_wild_poke_warlike_lv3", + "group_leader_wild_poke_warlike_lv3_pm0059", + "group_leader_wild_poke_warlike_lv3_pm0445", + "group_leader_wild_poke_warlike_lv3_pm0549", + "group_leader_wild_poke_warlike_lv3_pm0899", + "group_leader_wild_poke_warlike_lv3_pm0900", + "group_leader_wild_poke_warlike_lv3_pm0901", + "group_leader_wild_poke_warlike_lv3_quick", + "group_leader_wild_poke_warlike_lv3_quick_uma", + "group_leader_wild_poke_warlike_lv3_slow", + "group_leader_wild_poke_warlike_lv3_slow_sleep", + "group_leader_wild_poke_warlike_oyabun", + "group_leader_wild_poke_warlike_oyabun_pm0059", + "group_leader_wild_poke_warlike_oyabun_pm0063", + "group_leader_wild_poke_warlike_oyabun_pm0299", + "group_leader_wild_poke_warlike_oyabun_pm0445", + "group_leader_wild_poke_warlike_oyabun_pm0549", + "group_leader_wild_poke_warlike_oyabun_pm0899", + "group_leader_wild_poke_warlike_oyabun_pm0900", + "group_leader_wild_poke_warlike_oyabun_pm0901", + "group_leader_wild_poke_warlike_pm0490", + "group_leader_wild_poke_warlike_pm0550_fish", + "group_leader_wild_poke_warlike_siren", + "group_leader_wild_poke_warlike_swamp", + "group_wild_poke_coward_callhelp_leader", + "group_wild_poke_coward_lv1", + "group_wild_poke_coward_lv1_fish_pm0550", + "group_wild_poke_coward_lv1_ghost", + "group_wild_poke_coward_lv2", + "group_wild_poke_coward_lv3", + "group_wild_poke_coward_pm0063", + "group_wild_poke_coward_pm0133", + "group_wild_poke_coward_siren", + "group_wild_poke_fortress_ew053_to_warlike", + "group_wild_poke_fortress_pm0224_to_warlike", + "group_wild_poke_mild", + "group_wild_poke_mild_lv1_barrier", + "group_wild_poke_mild_lv1_koduck", + "group_wild_poke_mild_lv1_to_coward", + "group_wild_poke_mild_lv1_to_coward_fish_vanish", + "group_wild_poke_mild_lv1_to_coward_pm0113", + "group_wild_poke_mild_lv1_to_coward_pm0363", + "group_wild_poke_mild_lv1_to_warlike", + "group_wild_poke_mild_lv1_to_warlike_pm0100", + "group_wild_poke_mild_lv2_to_coward", + "group_wild_poke_mild_lv2_to_warlike", + "group_wild_poke_mild_lv3_to_warlike", + "group_wild_poke_mild_pm0129", + "group_wild_poke_mild_pm0299", + "group_wild_poke_warlike_fortress", + "group_wild_poke_warlike_fortress_fish", + "group_wild_poke_warlike_lv1", + "group_wild_poke_warlike_lv1_fish_vanish", + "group_wild_poke_warlike_lv1_ghost", + "group_wild_poke_warlike_lv1_ghost_callhelp_leader", + "group_wild_poke_warlike_lv1_pm0075", + "group_wild_poke_warlike_lv2", + "group_wild_poke_warlike_lv3_pm0059", + "group_wild_poke_warlike_lv3_pm0445", + "group_wild_poke_warlike_lv3_pm0549", + "group_wild_poke_warlike_lv3_pm0899", + "group_wild_poke_warlike_lv3_pm0900", + "group_wild_poke_warlike_lv3_pm0901", + "group_wild_poke_warlike_lv3_quick", + "group_wild_poke_warlike_lv3_slow", + "group_wild_poke_warlike_lv3_slow_sleep", + "group_wild_poke_warlike_pm0489", + "group_wild_poke_warlike_pm0550_fish", + "group_wild_poke_warlike_siren", + "group_wild_poke_warlike_swamp", + "nsi_poke_2", + "nsi_poke_3", + "nsi_poke_4", + "nsi_poke_5", + "nsi_poke_6", + "nsi_poke_7", + "nsi_poke_8", + "nsi_poke_9", + "semi_legend_poke_pm0485", + "semi_legend_poke_pm0488", + "semi_legend_poke_pm0491", + "semi_legend_poke_pm0641", + "semi_legend_poke_pm0642", + "semi_legend_poke_pm0645", + "semi_legend_poke_pm0905", + }; } private void ResetData() @@ -63,8 +193,7 @@ private void ResetData() private DataCache GetMoves() { - var move = this[GameFile.MoveStats]; - ((FolderContainer)move).Initialize(); + var move = GetFilteredFolder(GameFile.MoveStats); return new DataCache(move) { Create = FlatBufferConverter.DeserializeFrom, diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelSet8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelSet8a.cs index 78901f03..65b76304 100644 --- a/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelSet8a.cs +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelSet8a.cs @@ -1,7 +1,10 @@ using FlatSharp.Attributes; +using pkNX.Containers; using System; using System.Collections.Generic; using System.ComponentModel; +using System.Diagnostics; +using System.Linq; using System.Text; namespace pkNX.Structures.FlatBuffers; @@ -12,6 +15,35 @@ public class PokeModelSet8a : IFlatBufferArchive { public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + public PokeModelSetEntry8a GetEntry(ushort species) + { + return Table.FirstOrDefault(z => z.Species == species) ?? + new PokeModelSetEntry8a { }; + } + + public bool HasEntry(ushort species) + { + return Table.Any(x => x.Species == species); + } + + public PokeModelSetEntry8a AddEntry(ushort species, ushort form) + { + Debug.Assert(!HasEntry(species), "The resource info table already contains an entry for the same species!"); + + var entry = new PokeModelSetEntry8a + { + PokeModelHash = (PokeModelType8a)FnvHash.HashFnv1a_64(""), + Species = species, + Form = form, + }; + + Table = Table.Append(entry) + .OrderBy(x => x.Species) + .ThenBy(x => x.Form) + .ToArray(); + return entry; + } + [FlatBufferItem(00)] public PokeModelSetEntry8a[] Table { get; set; } = Array.Empty(); } diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelType8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelType8a.cs index 46f32c4b..8602065c 100644 --- a/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelType8a.cs +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeModelType8a.cs @@ -5,405 +5,405 @@ namespace pkNX.Structures.FlatBuffers; [FlatBufferEnum(typeof(ulong))] public enum PokeModelType8a : ulong { - Unk_0x4202065E4900E5E6 = 0x4202065E4900E5E6, - Unk_0x90C6018B1C83C999 = 0x90C6018B1C83C999, - Unk_0xA5EC1270693E5554 = 0xA5EC1270693E5554, - Unk_0xAA24EE0FC9930161 = 0xAA24EE0FC9930161, - Unk_0x738D45B3FCCD8683 = 0x738D45B3FCCD8683, - Unk_0x7874900CA52EAAC4 = 0x7874900CA52EAAC4, - Unk_0xC5B7CDC56F890702 = 0xC5B7CDC56F890702, - Unk_0xC672CDBC18D185EE = 0xC672CDBC18D185EE, - Unk_0x295E0F613E5B2E99 = 0x295E0F613E5B2E99, - Unk_0xA03A90A554738B04 = 0xA03A90A554738B04, - Unk_0xFEC35D67DB8FB3F7 = 0xFEC35D67DB8FB3F7, - Unk_0x74B4B2C7F9D82197 = 0x74B4B2C7F9D82197, - Unk_0x329D6D72A5EE893E = 0x329D6D72A5EE893E, - Unk_0x3B24B21F94D759CC = 0x3B24B21F94D759CC, - Unk_0x0E8AF24E711420B5 = 0x0E8AF24E711420B5, - Unk_0x3C3D26BA3C4D928B = 0x3C3D26BA3C4D928B, - Unk_0xBD9D0E1275E19DC3 = 0xBD9D0E1275E19DC3, - Unk_0x780CF5544A1BA14E = 0x780CF5544A1BA14E, - Unk_0x3994B8E5146DF87A = 0x3994B8E5146DF87A, - Unk_0x3BFE00C60AAA4629 = 0x3BFE00C60AAA4629, - Unk_0xE2FD1EBB1CFC547D = 0xE2FD1EBB1CFC547D, - Unk_0x8F5F9697B53FA69A = 0x8F5F9697B53FA69A, - Unk_0x310A3E4E64072A45 = 0x310A3E4E64072A45, - Unk_0xE165FD88E9D8F4E8 = 0xE165FD88E9D8F4E8, - Unk_0xDD8D4287CD69B2B1 = 0xDD8D4287CD69B2B1, - Unk_0x0ADC40FE7471C28F = 0x0ADC40FE7471C28F, - Unk_0xAE26E44B48B9C1A0 = 0xAE26E44B48B9C1A0, - Unk_0x39DA6B4E0445AF7C = 0x39DA6B4E0445AF7C, - Unk_0x2FAF26C61D6B8371 = 0x2FAF26C61D6B8371, - Unk_0xAF552936A4E91A20 = 0xAF552936A4E91A20, - Unk_0x893A2307830B3947 = 0x893A2307830B3947, - Unk_0xD259B1492CBB69EE = 0xD259B1492CBB69EE, - Unk_0x0C7783C2EAD1F11F = 0x0C7783C2EAD1F11F, - Unk_0x4066F0333032E760 = 0x4066F0333032E760, - Unk_0x69824E27FD3241CD = 0x69824E27FD3241CD, - Unk_0xF44EA11B1C09F9E6 = 0xF44EA11B1C09F9E6, - Unk_0x9AE6B7DA086DF529 = 0x9AE6B7DA086DF529, - Unk_0xE7A76BB22F55DCCD = 0xE7A76BB22F55DCCD, - Unk_0x9AEBB2EBE8A0E277 = 0x9AEBB2EBE8A0E277, - Unk_0xFE46ADD5A3C9E59D = 0xFE46ADD5A3C9E59D, - Unk_0xA9240BDFF13535FF = 0xA9240BDFF13535FF, - Unk_0xF0CC2D7DBA68D605 = 0xF0CC2D7DBA68D605, - Unk_0xF76AB6EFC7B2EF31 = 0xF76AB6EFC7B2EF31, - Unk_0xB06192701C4CD0BF = 0xB06192701C4CD0BF, - Unk_0xA253E743C3DFFCFA = 0xA253E743C3DFFCFA, - Unk_0xAA8FCBBCAF4CC477 = 0xAA8FCBBCAF4CC477, - Unk_0x1C971DC264EE265C = 0x1C971DC264EE265C, - Unk_0x4ADFF188FA2CC2BF = 0x4ADFF188FA2CC2BF, - Unk_0xCC8C967D0984A782 = 0xCC8C967D0984A782, - Unk_0x5DFED77E3EF484E6 = 0x5DFED77E3EF484E6, - Unk_0xD11CA01879E2560E = 0xD11CA01879E2560E, - Unk_0xF439879C2A32AC27 = 0xF439879C2A32AC27, - Unk_0x71A6B1803B68A0DF = 0x71A6B1803B68A0DF, - Unk_0x1CCD92966FC276B2 = 0x1CCD92966FC276B2, - Unk_0x4D7DD48708B9B178 = 0x4D7DD48708B9B178, - Unk_0xEF917720395BFB4B = 0xEF917720395BFB4B, - Unk_0x3D953062B5D32036 = 0x3D953062B5D32036, - Unk_0x3FAAA2AB2B669F0F = 0x3FAAA2AB2B669F0F, - Unk_0x6684C6B1DE87286A = 0x6684C6B1DE87286A, - Unk_0xF7D3DEDBA87A5A7B = 0xF7D3DEDBA87A5A7B, - Unk_0x56BFDBA5BF372818 = 0x56BFDBA5BF372818, - Unk_0x37E6296E94F84FC2 = 0x37E6296E94F84FC2, - Unk_0x15BD8A0A55DF6F9B = 0x15BD8A0A55DF6F9B, - Unk_0xC2B88644957DF334 = 0xC2B88644957DF334, - Unk_0xCE684213D609E4D0 = 0xCE684213D609E4D0, - Unk_0x89D4AB3B91E4193E = 0x89D4AB3B91E4193E, - Unk_0xB0E870D70AF6C856 = 0xB0E870D70AF6C856, - Unk_0x4FB5FDD592E5C19C = 0x4FB5FDD592E5C19C, - Unk_0x884CAE4F264E7C53 = 0x884CAE4F264E7C53, - Unk_0x2F3677ACAD0B264F = 0x2F3677ACAD0B264F, - Unk_0xFFCFC4B53B6CEB73 = 0xFFCFC4B53B6CEB73, - Unk_0x55E136321BD4820B = 0x55E136321BD4820B, - Unk_0x69C60410B32CFA7C = 0x69C60410B32CFA7C, - Unk_0x56EBF2B961D8C2F0 = 0x56EBF2B961D8C2F0, - Unk_0xBD638443042BA775 = 0xBD638443042BA775, - Unk_0x04EFF829AE5A9CAE = 0x04EFF829AE5A9CAE, - Unk_0xB924FA5E88CBF499 = 0xB924FA5E88CBF499, - Unk_0x983CBC0A01DBCE18 = 0x983CBC0A01DBCE18, - Unk_0x0789E7AD3B62AE98 = 0x0789E7AD3B62AE98, - Unk_0x11A4B28C3399FCAE = 0x11A4B28C3399FCAE, - Unk_0xB23DD104F7E3E7B4 = 0xB23DD104F7E3E7B4, - Unk_0xAC41D5A69B91BDAB = 0xAC41D5A69B91BDAB, - Unk_0x20E1A4325B9B726C = 0x20E1A4325B9B726C, - Unk_0xBF886D72A5EB4BFD = 0xBF886D72A5EB4BFD, - Unk_0x9602FE3839CA4144 = 0x9602FE3839CA4144, - Unk_0x7EB49AC6E76098FF = 0x7EB49AC6E76098FF, - Unk_0x73DE6E93E4244BA6 = 0x73DE6E93E4244BA6, - Unk_0x0B6DBBC6F0E94019 = 0x0B6DBBC6F0E94019, - Unk_0xF9B45DF47EC0E120 = 0xF9B45DF47EC0E120, - Unk_0x313CF262DB0926BB = 0x313CF262DB0926BB, - Unk_0xCEBA0A3E967DCE42 = 0xCEBA0A3E967DCE42, - Unk_0xB6F99FCA4E14B215 = 0xB6F99FCA4E14B215, - Unk_0x088F9B28A225E77C = 0x088F9B28A225E77C, - Unk_0x0614F4AB758CA4EC = 0x0614F4AB758CA4EC, - Unk_0x0C0EABF9C83A6645 = 0x0C0EABF9C83A6645, - Unk_0x276F6051571BDC6E = 0x276F6051571BDC6E, - Unk_0xAA3B9A7B0AC22E07 = 0xAA3B9A7B0AC22E07, - Unk_0x1A82687E9C21FC88 = 0x1A82687E9C21FC88, - Unk_0x2011F8FC2EAF5BC1 = 0x2011F8FC2EAF5BC1, - Unk_0xE7B2049B04BC0D8A = 0xE7B2049B04BC0D8A, - Unk_0x4C385FB04D7D4E83 = 0x4C385FB04D7D4E83, - Unk_0xECF48E67086948B4 = 0xECF48E67086948B4, - Unk_0xC27F8EE33D371BAD = 0xC27F8EE33D371BAD, - Unk_0x35B1F3EAFB73E6BD = 0x35B1F3EAFB73E6BD, - Unk_0x0649E4802BBCA904 = 0x0649E4802BBCA904, - Unk_0x4759AB9110BC0EBF = 0x4759AB9110BC0EBF, - Unk_0xF93D4C6B30D60166 = 0xF93D4C6B30D60166, - Unk_0x1C75AA69FDB3BAD9 = 0x1C75AA69FDB3BAD9, - Unk_0x2AA9B9D0303F75E0 = 0x2AA9B9D0303F75E0, - Unk_0xF32E56B416E23C7B = 0xF32E56B416E23C7B, - Unk_0x522BF06C1BD0F102 = 0x522BF06C1BD0F102, - Unk_0xC4DB525F8E431D41 = 0xC4DB525F8E431D41, - Unk_0x18223B561661AFAA = 0x18223B561661AFAA, - Unk_0x27198363BE073D43 = 0x27198363BE073D43, - Unk_0xC3AA40619506B41E = 0xC3AA40619506B41E, - Unk_0x5C57D1B11EF558EA = 0x5C57D1B11EF558EA, - Unk_0xAE6050F3E9BEADF7 = 0xAE6050F3E9BEADF7, - Unk_0x4DC996846E32E10F = 0x4DC996846E32E10F, - Unk_0x64EA03C28BB0A824 = 0x64EA03C28BB0A824, - Unk_0x3A685B964260E751 = 0x3A685B964260E751, - Unk_0xD566A415A1D96AC6 = 0xD566A415A1D96AC6, - Unk_0xE0C3B017F309DB7F = 0xE0C3B017F309DB7F, - Unk_0xFE62D6A9E1C90FA0 = 0xFE62D6A9E1C90FA0, - Unk_0x6EB817B2E5CE41A1 = 0x6EB817B2E5CE41A1, - Unk_0xC513F3A8B387CE60 = 0xC513F3A8B387CE60, - Unk_0x00FFEC5427C03217 = 0x00FFEC5427C03217, - Unk_0x263AAFAD40F6F534 = 0x263AAFAD40F6F534, - Unk_0x557EA5E216D1EB04 = 0x557EA5E216D1EB04, - Unk_0x5B10EEB3C42F6EF3 = 0x5B10EEB3C42F6EF3, - Unk_0xA4B557C69DC53B4C = 0xA4B557C69DC53B4C, - Unk_0x171318BDE5AFB37F = 0x171318BDE5AFB37F, - Unk_0xF5117E70DB5C0CDD = 0xF5117E70DB5C0CDD, - Unk_0xB70B74B682AEDDC0 = 0xB70B74B682AEDDC0, - Unk_0x5A0C4392036A5A42 = 0x5A0C4392036A5A42, - Unk_0x707D85F01E28F5F9 = 0x707D85F01E28F5F9, - Unk_0x6E67F96382437D3E = 0x6E67F96382437D3E, - Unk_0x754C295FB5F44D9B = 0x754C295FB5F44D9B, - Unk_0xC5F20F76E7A93719 = 0xC5F20F76E7A93719, - Unk_0xA763E53AE978AB27 = 0xA763E53AE978AB27, - Unk_0xB6CBA708417AC6DC = 0xB6CBA708417AC6DC, - Unk_0xF7D10E1E3D07DF2F = 0xF7D10E1E3D07DF2F, - Unk_0xF4441F03DDB7443F = 0xF4441F03DDB7443F, - Unk_0x61424A6B6B33EF06 = 0x61424A6B6B33EF06, - Unk_0x1335E7CF78B73FD4 = 0x1335E7CF78B73FD4, - Unk_0xA0553AA5DAAD1093 = 0xA0553AA5DAAD1093, - Unk_0x21CFEF4845D0131B = 0x21CFEF4845D0131B, - Unk_0x5DFEF42CC1CFDDDA = 0x5DFEF42CC1CFDDDA, - Unk_0xD3DA7E5EE9860CFC = 0xD3DA7E5EE9860CFC, - Unk_0xBF2D97F2A6E9C72D = 0xBF2D97F2A6E9C72D, - Unk_0x91C4588D028D31BC = 0x91C4588D028D31BC, - Unk_0x733DF163257691E4 = 0x733DF163257691E4, - Unk_0xC16DA720E3FF43B1 = 0xC16DA720E3FF43B1, - Unk_0x7A99A59187C4FEB5 = 0x7A99A59187C4FEB5, - Unk_0xF75D819C39B27EC6 = 0xF75D819C39B27EC6, - Unk_0x7F59A6B1A057AAEC = 0x7F59A6B1A057AAEC, - Unk_0xAE3C6A3413ACD75E = 0xAE3C6A3413ACD75E, - Unk_0x0E3F241026905B7F = 0x0E3F241026905B7F, - Unk_0x57BA84BA67C80340 = 0x57BA84BA67C80340, - Unk_0x9E3D34369C67DB99 = 0x9E3D34369C67DB99, - Unk_0xC416B116EAA6D876 = 0xC416B116EAA6D876, - Unk_0x5933EFC31901ADBF = 0x5933EFC31901ADBF, - Unk_0x9D068E51A9F2B451 = 0x9D068E51A9F2B451, - Unk_0x66A9CB7F10A10C9B = 0x66A9CB7F10A10C9B, - Unk_0xE4860525BC865A83 = 0xE4860525BC865A83, - Unk_0xB1BA5D4013E6B112 = 0xB1BA5D4013E6B112, - Unk_0x0737E620799C467D = 0x0737E620799C467D, - Unk_0x1C0192447952EEF2 = 0x1C0192447952EEF2, - Unk_0x89D04AD6EC6542B5 = 0x89D04AD6EC6542B5, - Unk_0xDD7ECD313002CC84 = 0xDD7ECD313002CC84, - Unk_0xE35A7D27BA3D0026 = 0xE35A7D27BA3D0026, - Unk_0x9491991D82A95AB9 = 0x9491991D82A95AB9, - Unk_0x7E3796C48490E2F4 = 0x7E3796C48490E2F4, - Unk_0xA9BAEC93EB49A97B = 0xA9BAEC93EB49A97B, - Unk_0x5F4117769E95A4E2 = 0x5F4117769E95A4E2, - Unk_0x27600C74B64ECBF1 = 0x27600C74B64ECBF1, - Unk_0x8C77F0DA56F7DE7C = 0x8C77F0DA56F7DE7C, - Unk_0xA1BB2DD9130A46F2 = 0xA1BB2DD9130A46F2, - Unk_0xDD75C52F7283E9BB = 0xDD75C52F7283E9BB, - Unk_0xC8F7D5BF4173CE93 = 0xC8F7D5BF4173CE93, - Unk_0xE9E6C6B33718E60E = 0xE9E6C6B33718E60E, - Unk_0xBF27AC1629E90381 = 0xBF27AC1629E90381, - Unk_0xF0F994239E2F346F = 0xF0F994239E2F346F, // Kricketot (Famale) and Kriketune (Famale) both have this entry - Unk_0x2D773D3EE1C014F6 = 0x2D773D3EE1C014F6, - Unk_0x96C22933A5E58E3B = 0x96C22933A5E58E3B, - Unk_0x168A00F24E6405B7 = 0x168A00F24E6405B7, - Unk_0xFA5643FB989B3B1E = 0xFA5643FB989B3B1E, - Unk_0x984D50F262AFCEAF = 0x984D50F262AFCEAF, - Unk_0x22F84F7815153DD6 = 0x22F84F7815153DD6, - Unk_0x7F6D9F484D4C0EA6 = 0x7F6D9F484D4C0EA6, - Unk_0x0C13D8D28EC907E5 = 0x0C13D8D28EC907E5, - Unk_0x9ECE3FC55775155F = 0x9ECE3FC55775155F, - Unk_0x93ABEE50A1E49467 = 0x93ABEE50A1E49467, - Unk_0x7370532B23D76DAA = 0x7370532B23D76DAA, - Unk_0x47AE1BFCD6B42B84 = 0x47AE1BFCD6B42B84, - Unk_0x4AE56FF6E6334961 = 0x4AE56FF6E6334961, - Unk_0xB509DB56AEE937C2 = 0xB509DB56AEE937C2, - Unk_0xF4E140FB3B645905 = 0xF4E140FB3B645905, - Unk_0xA94E411B4AED0770 = 0xA94E411B4AED0770, - Unk_0x8F6AE63389246593 = 0x8F6AE63389246593, - Unk_0x7974384D9B4C2FB6 = 0x7974384D9B4C2FB6, - Unk_0x14019D9941038DFD = 0x14019D9941038DFD, - Unk_0x6ABFCC37361003B4 = 0x6ABFCC37361003B4, - Unk_0x4CDAC9407BF83AF7 = 0x4CDAC9407BF83AF7, - Unk_0x4BB7814C7C192D19 = 0x4BB7814C7C192D19, - Unk_0xF1127750E1886890 = 0xF1127750E1886890, - Unk_0x25964C22FD8497F7 = 0x25964C22FD8497F7, - Unk_0xAE27E66F62B5A72D = 0xAE27E66F62B5A72D, - Unk_0xE597BC60EC178830 = 0xE597BC60EC178830, - Unk_0x5AD9AD5A8D788501 = 0x5AD9AD5A8D788501, - Unk_0xDD355F94F2313486 = 0xDD355F94F2313486, - Unk_0x6BF855FAE859F756 = 0x6BF855FAE859F756, - Unk_0x220FCB19BE6F4AD1 = 0x220FCB19BE6F4AD1, - Unk_0x219A868593E0F143 = 0x219A868593E0F143, - Unk_0x8E22980132312750 = 0x8E22980132312750, - Unk_0x2C54942E5AC186C5 = 0x2C54942E5AC186C5, - Unk_0x4F33189725E4177E = 0x4F33189725E4177E, - Unk_0x3E9C477265BDCCFB = 0x3E9C477265BDCCFB, - Unk_0x2CFB32D06BB0ABCE = 0x2CFB32D06BB0ABCE, - Unk_0x36A980CFC8258668 = 0x36A980CFC8258668, - Unk_0x3A220AFBFED99063 = 0x3A220AFBFED99063, - Unk_0x3D972A66844FA833 = 0x3D972A66844FA833, - Unk_0xC917F1220D646DBE = 0xC917F1220D646DBE, - Unk_0x3F6DE4B7DD492468 = 0x3F6DE4B7DD492468, - Unk_0x20D99D21DD492357 = 0x20D99D21DD492357, - Unk_0xC460FB2533D4748D = 0xC460FB2533D4748D, - Unk_0xCD7032496A7C365A = 0xCD7032496A7C365A, - Unk_0x5C60998F55A4C354 = 0x5C60998F55A4C354, - Unk_0x313B485EBC2171CD = 0x313B485EBC2171CD, - Unk_0x78ACE351AD05FBD4 = 0x78ACE351AD05FBD4, - Unk_0x9328F61FB61F13E5 = 0x9328F61FB61F13E5, - Unk_0xD055895E765EEC2F = 0xD055895E765EEC2F, - Unk_0x4199B6BDAAAD449E = 0x4199B6BDAAAD449E, - Unk_0x032B6F5BC52B5EFD = 0x032B6F5BC52B5EFD, - Unk_0xF3D0F56A34A59780 = 0xF3D0F56A34A59780, - Unk_0x0FD922D98261F028 = 0x0FD922D98261F028, - Unk_0x19EE4EA3ADF0B902 = 0x19EE4EA3ADF0B902, - Unk_0x584AF50A97D6E1D6 = 0x584AF50A97D6E1D6, - Unk_0xB03300749E45BB04 = 0xB03300749E45BB04, - Unk_0xFB9DAD7C0A306304 = 0xFB9DAD7C0A306304, - Unk_0xB8497707B9AFFFC3 = 0xB8497707B9AFFFC3, - Unk_0xE7676C20D594CB1D = 0xE7676C20D594CB1D, - Unk_0x28C7077067B3CBC1 = 0x28C7077067B3CBC1, - Unk_0x6F92EA1DC51CABCF = 0x6F92EA1DC51CABCF, - Unk_0x11BA4D9585AACE22 = 0x11BA4D9585AACE22, - Unk_0xF894F0AAA6DF1348 = 0xF894F0AAA6DF1348, - Unk_0x0E7DBE6B422BF617 = 0x0E7DBE6B422BF617, - Unk_0x625850C05A022E48 = 0x625850C05A022E48, - Unk_0x2B17D38BA6A71C75 = 0x2B17D38BA6A71C75, - Unk_0x8FD0138AED004409 = 0x8FD0138AED004409, - Unk_0x5FFAD59344D84D98 = 0x5FFAD59344D84D98, - Unk_0xA0047EEB132ED1D6 = 0xA0047EEB132ED1D6, - Unk_0x906BBDF18FDA41D7 = 0x906BBDF18FDA41D7, - Unk_0x17D0C6D90344C370 = 0x17D0C6D90344C370, - Unk_0x079843AF139A4302 = 0x079843AF139A4302, - Unk_0x4A086453137B138D = 0x4A086453137B138D, - Unk_0x1955D84E92121D4D = 0x1955D84E92121D4D, - Unk_0x372A069678F1F45C = 0x372A069678F1F45C, - Unk_0x3E4BDFC71176F055 = 0x3E4BDFC71176F055, - Unk_0x8F2F65B0686BDBC0 = 0x8F2F65B0686BDBC0, - Unk_0x317C95E85C275D22 = 0x317C95E85C275D22, - Unk_0x74DAFA4E821C0EDB = 0x74DAFA4E821C0EDB, - Unk_0xE614F33C0065709B = 0xE614F33C0065709B, - Unk_0xC181CFE9A52A6D56 = 0xC181CFE9A52A6D56, - Unk_0x945188E7CDB5341A = 0x945188E7CDB5341A, - Unk_0x3A5895D1101F9037 = 0x3A5895D1101F9037, - Unk_0x30721017FA97EC02 = 0x30721017FA97EC02, - Unk_0xA01FDF8F36D4C849 = 0xA01FDF8F36D4C849, - Unk_0x94D65F44E4DB603A = 0x94D65F44E4DB603A, - Unk_0x9E23D7B27A3550BA = 0x9E23D7B27A3550BA, - Unk_0xC1C9454686BF4F77 = 0xC1C9454686BF4F77, - Unk_0x980E30C4962AF568 = 0x980E30C4962AF568, - Unk_0x2620F9FA5756901A = 0x2620F9FA5756901A, - Unk_0xA329B2071F86D54D = 0xA329B2071F86D54D, - Unk_0x98B23602AC81C150 = 0x98B23602AC81C150, - Unk_0xA74E932CFE83EAE7 = 0xA74E932CFE83EAE7, - Unk_0xCEEB29248D1FA839 = 0xCEEB29248D1FA839, - Unk_0x8D15EF082F42FC05 = 0x8D15EF082F42FC05, - Unk_0x469278A74D72F144 = 0x469278A74D72F144, - Unk_0x2C2A4B83CF084B3B = 0x2C2A4B83CF084B3B, - Unk_0x34DDE3ADD16B4F75 = 0x34DDE3ADD16B4F75, - Unk_0xB568913D0AC707CE = 0xB568913D0AC707CE, - Unk_0xFA9958E9109B302F = 0xFA9958E9109B302F, - Unk_0xA8ED6A8D845C7B48 = 0xA8ED6A8D845C7B48, - Unk_0x42C7F372045E2459 = 0x42C7F372045E2459, - Unk_0x42A006A7E230D188 = 0x42A006A7E230D188, - Unk_0xC68BD7FDEAACED3A = 0xC68BD7FDEAACED3A, - Unk_0x9C12AB8FB6B90E68 = 0x9C12AB8FB6B90E68, - Unk_0x5877A05E2FBA2709 = 0x5877A05E2FBA2709, - Unk_0x386D73EBE6A7B8F4 = 0x386D73EBE6A7B8F4, - Unk_0x306E81A939CB3993 = 0x306E81A939CB3993, - Unk_0xC08438286952740C = 0xC08438286952740C, - Unk_0x5E5D71F3E0CBE9DC = 0x5E5D71F3E0CBE9DC, - Unk_0xDC018AA5878C8807 = 0xDC018AA5878C8807, - Unk_0x6DE0698BBCB2CA2C = 0x6DE0698BBCB2CA2C, - Unk_0x7B36F7A58164D977 = 0x7B36F7A58164D977, - Unk_0x9E8D599701378583 = 0x9E8D599701378583, - Unk_0x6862791F06B78BDE = 0x6862791F06B78BDE, - Unk_0xFBBC6B6C015DC941 = 0xFBBC6B6C015DC941, - Unk_0xB95C351BE7E9F834 = 0xB95C351BE7E9F834, - Unk_0xD6EA55B5B5D9744F = 0xD6EA55B5B5D9744F, - Unk_0xC56571B25632522A = 0xC56571B25632522A, - Unk_0x97CC9929EDDBD5F8 = 0x97CC9929EDDBD5F8, - Unk_0x8C9946681252830B = 0x8C9946681252830B, - Unk_0xA8EF99AAF7F5F7C5 = 0xA8EF99AAF7F5F7C5, - Unk_0x106E7182195C260F = 0x106E7182195C260F, - Unk_0xA055D9B805436A0C = 0xA055D9B805436A0C, - Unk_0x206088562697898E = 0x206088562697898E, - Unk_0xBFA4299E98FB33D9 = 0xBFA4299E98FB33D9, - Unk_0x23026AD6C36A3435 = 0x23026AD6C36A3435, - Unk_0x2E7B41BCE75826F6 = 0x2E7B41BCE75826F6, - Unk_0x97E7ED85C87A3DB6 = 0x97E7ED85C87A3DB6, - Unk_0x4E0596A7E5646341 = 0x4E0596A7E5646341, - Unk_0x4535E33F5E564902 = 0x4535E33F5E564902, - Unk_0x983A46CEAB2742D7 = 0x983A46CEAB2742D7, - Unk_0x8E7C1BF15AA87E41 = 0x8E7C1BF15AA87E41, - Unk_0x586CE849A27477A0 = 0x586CE849A27477A0, - Unk_0xB7ECCDAE6F5707D2 = 0xB7ECCDAE6F5707D2, - Unk_0x38B4B39EC0768C67 = 0x38B4B39EC0768C67, - Unk_0x7600DD72ED3B4920 = 0x7600DD72ED3B4920, - Unk_0xBB368794840D45A5 = 0xBB368794840D45A5, - Unk_0xFF87AC2753F1C9C6 = 0xFF87AC2753F1C9C6, - Unk_0x4CA11DC3DAF364CB = 0x4CA11DC3DAF364CB, - Unk_0x0615848DE67F0FB4 = 0x0615848DE67F0FB4, - Unk_0x6FEF6D44ECB59C69 = 0x6FEF6D44ECB59C69, - Unk_0x7E7D8A31F8F21EEA = 0x7E7D8A31F8F21EEA, - Unk_0x2F0E2FB68A052C5F = 0x2F0E2FB68A052C5F, - Unk_0xDC6E25257282CB55 = 0xDC6E25257282CB55, - Unk_0x40D7A8B92AF09D90 = 0x40D7A8B92AF09D90, - Unk_0x4B8A666460A38C97 = 0x4B8A666460A38C97, - Unk_0x25FABC2DDC931F82 = 0x25FABC2DDC931F82, - Unk_0xB312234D6E8F40D9 = 0xB312234D6E8F40D9, - Unk_0x7725EA3FCD8EFBE4 = 0x7725EA3FCD8EFBE4, - Unk_0x0FE7C88F0C511E3B = 0x0FE7C88F0C511E3B, - Unk_0x666B55C4B5063836 = 0x666B55C4B5063836, - Unk_0xAF4985CD1D218AFC = 0xAF4985CD1D218AFC, - Unk_0x4A4A7B20881294E4 = 0x4A4A7B20881294E4, - Unk_0x84FE2D0C81A88918 = 0x84FE2D0C81A88918, - Unk_0xF74BB7703FA523A3 = 0xF74BB7703FA523A3, - Unk_0x0EBA8CE66319FEFA = 0x0EBA8CE66319FEFA, - Unk_0x865F5B29F7D3F6AF = 0x865F5B29F7D3F6AF, - Unk_0x4C497F2A0096EEFB = 0x4C497F2A0096EEFB, - Unk_0x630448CC6C50E58A = 0x630448CC6C50E58A, - Unk_0xC41B98740AB889EB = 0xC41B98740AB889EB, - Unk_0xD1DDBC2BA3D9DE20 = 0xD1DDBC2BA3D9DE20, - Unk_0xDABA16B3B282D08F = 0xDABA16B3B282D08F, - Unk_0xB006977E13C42A32 = 0xB006977E13C42A32, - Unk_0x4984C3C7710B2AFC = 0x4984C3C7710B2AFC, - Unk_0x9ECC7B26EA9E99A0 = 0x9ECC7B26EA9E99A0, - Unk_0x761DBBDEC4BAFC5E = 0x761DBBDEC4BAFC5E, - Unk_0xC445D3C3B5C7F567 = 0xC445D3C3B5C7F567, - Unk_0x73CD7670DE50BF92 = 0x73CD7670DE50BF92, - Unk_0x50042EF6FFC50F49 = 0x50042EF6FFC50F49, - Unk_0x302B5F4800F44C2C = 0x302B5F4800F44C2C, - Unk_0xC5EA76327F79BF9B = 0xC5EA76327F79BF9B, - Unk_0xF39C3111234AA504 = 0xF39C3111234AA504, - Unk_0x4504FED3686326BA = 0x4504FED3686326BA, - Unk_0x109714EC91FC123D = 0x109714EC91FC123D, - Unk_0x92AE783A3DD4F467 = 0x92AE783A3DD4F467, - Unk_0x26BD2AA2A097117C = 0x26BD2AA2A097117C, - Unk_0x86369F877D6A715A = 0x86369F877D6A715A, - Unk_0x00177EC637E0F547 = 0x00177EC637E0F547, - Unk_0xA7370AC81DEE9DA3 = 0xA7370AC81DEE9DA3, - Unk_0x016B2219F2C34655 = 0x016B2219F2C34655, - Unk_0x62F9C9295910928D = 0x62F9C9295910928D, - Unk_0x5E18A362DB785C35 = 0x5E18A362DB785C35, - Unk_0x1BBFAF0587DD34D2 = 0x1BBFAF0587DD34D2, - Unk_0x1F2BC2563CDEBE0A = 0x1F2BC2563CDEBE0A, - Unk_0x5CB5954C8863A223 = 0x5CB5954C8863A223, - Unk_0x1A09CC57C175EF9B = 0x1A09CC57C175EF9B, - Unk_0xE4AC9550E5F1457C = 0xE4AC9550E5F1457C, - Unk_0x31B695D92696C535 = 0x31B695D92696C535, - Unk_0x5ABD56E662A3AF06 = 0x5ABD56E662A3AF06, - Unk_0x91202B07BCD8488F = 0x91202B07BCD8488F, - Unk_0x906E97236B575388 = 0x906E97236B575388, - Unk_0xDBE39C496C3FE76F = 0xDBE39C496C3FE76F, - Unk_0x3A491A32B94D2E10 = 0x3A491A32B94D2E10, - Unk_0x30215DFE4B009037 = 0x30215DFE4B009037, - Unk_0x0414E6EA64920553 = 0x0414E6EA64920553, - Unk_0x0A09CFACC06039F6 = 0x0A09CFACC06039F6, - Unk_0x2BC88AEF207952D8 = 0x2BC88AEF207952D8, - Unk_0xC198D435BB6CE1B3 = 0xC198D435BB6CE1B3, - Unk_0x5757780F91E52E20 = 0x5757780F91E52E20, - Unk_0xABE2F65B74FBFCF0 = 0xABE2F65B74FBFCF0, - Unk_0xDA85A46835474EC3 = 0xDA85A46835474EC3, - Unk_0xE84B34AB4E79AA10 = 0xE84B34AB4E79AA10, - Unk_0xF5C64BF800CA5BC9 = 0xF5C64BF800CA5BC9, - Unk_0xC70206D6B252D40D = 0xC70206D6B252D40D, - Unk_0x119437A2C563161A = 0x119437A2C563161A, - Unk_0xB496C9BC67BD78CE = 0xB496C9BC67BD78CE, + pm_025_0_m_PIKATYUU = 0x4202065E4900E5E6, + pm_025_0_f_PIKATYUU = 0x90C6018B1C83C999, + pm_026_0_m_RAITYUU = 0xA5EC1270693E5554, + pm_026_0_f_RAITYUU = 0xAA24EE0FC9930161, + pm_035_0_PIPPI = 0x738D45B3FCCD8683, + pm_035_0_PIPPI_SUB073 = 0x7874900CA52EAAC4, + pm_036_0_PIKUSII = 0xC5B7CDC56F890702, + pm_037_0_ROKON = 0xC672CDBC18D185EE, + pm_037_1_ROKON = 0x295E0F613E5B2E99, + pm_038_0_KYUUKON = 0xA03A90A554738B04, + pm_038_1_KYUUKON = 0xFEC35D67DB8FB3F7, + pm_041_0_m_ZUBATTO = 0x74B4B2C7F9D82197, + pm_041_0_f_ZUBATTO = 0x329D6D72A5EE893E, + pm_042_0_m_GORUBATTO = 0x3B24B21F94D759CC, + pm_042_0_f_GORUBATTO = 0x0E8AF24E711420B5, + pm_046_0_PARASU = 0x3C3D26BA3C4D928B, + pm_047_0_PARASEKUTO = 0xBD9D0E1275E19DC3, + pm_054_0_KODAKKU = 0x780CF5544A1BA14E, + pm_055_0_GORUDAKKU = 0x3994B8E5146DF87A, + pm_063_0_KEESHI = 0x3BFE00C60AAA4629, + pm_064_0_m_YUNGERAA = 0xE2FD1EBB1CFC547D, + pm_064_0_f_YUNGERAA = 0x8F5F9697B53FA69A, + pm_065_0_m_HUUDHIN = 0x310A3E4E64072A45, + pm_065_0_f_HUUDHIN = 0xE165FD88E9D8F4E8, + pm_066_0_WANRIKII = 0xDD8D4287CD69B2B1, + pm_067_0_GOORIKII = 0x0ADC40FE7471C28F, + pm_068_0_KAIRIKII = 0xAE26E44B48B9C1A0, + pm_072_0_MENOKURAGE = 0x39DA6B4E0445AF7C, + pm_073_0_DOKUKURAGE = 0x2FAF26C61D6B8371, + pm_074_0_ISITUBUTE = 0xAF552936A4E91A20, + pm_075_0_GOROON = 0x893A2307830B3947, + pm_076_0_GOROONYA = 0xD259B1492CBB69EE, + pm_077_0_PONIITA = 0x0C7783C2EAD1F11F, + pm_077_0_PONIITA_RARE = 0x4066F0333032E760, + pm_078_0_GYAROPPU = 0x69824E27FD3241CD, + pm_081_0_KOIRU = 0xF44EA11B1C09F9E6, + pm_082_0_REAKOIRU = 0x9AE6B7DA086DF529, + pm_092_0_GOOSU = 0xE7A76BB22F55DCCD, + pm_093_0_GOOSUTO = 0x9AEBB2EBE8A0E277, + pm_094_0_GENGAA = 0xFE46ADD5A3C9E59D, + pm_095_0_IWAAKU = 0xA9240BDFF13535FF, + pm_095_0_IWAAKU_SUB258 = 0xF0CC2D7DBA68D605, + pm_108_0_BERORINGA = 0xF76AB6EFC7B2EF31, + pm_111_0_m_SAIHOON = 0xB06192701C4CD0BF, + pm_111_0_f_SAIHOON = 0xA253E743C3DFFCFA, + pm_112_0_m_SAIDON = 0xAA8FCBBCAF4CC477, + pm_112_0_f_SAIDON = 0x1C971DC264EE265C, + pm_113_0_RAKKII = 0x4ADFF188FA2CC2BF, + pm_114_0_MONZYARA = 0xCC8C967D0984A782, + pm_122_0_BARIYAADO = 0x5DFED77E3EF484E6, + pm_123_0_m_SUTORAIKU = 0xD11CA01879E2560E, + pm_123_0_f_SUTORAIKU = 0xF439879C2A32AC27, + pm_125_0_EREBUU = 0x71A6B1803B68A0DF, + pm_126_0_BUUBAA = 0x1CCD92966FC276B2, + pm_129_0_m_KOIKINGU = 0x4D7DD48708B9B178, + pm_129_0_f_KOIKINGU = 0xEF917720395BFB4B, + pm_130_0_m_GYARADOSU = 0x3D953062B5D32036, + pm_130_0_f_GYARADOSU = 0x3FAAA2AB2B669F0F, + pm_133_0_m_IIBUI = 0x6684C6B1DE87286A, + pm_133_0_f_IIBUI = 0xF7D3DEDBA87A5A7B, + pm_134_0_SYAWAAZU = 0x56BFDBA5BF372818, + pm_135_0_SANDAASU = 0x37E6296E94F84FC2, + pm_136_0_BUUSUTAA = 0x15BD8A0A55DF6F9B, + pm_137_0_PORIGON = 0xC2B88644957DF334, + pm_143_0_KABIGON = 0xCE684213D609E4D0, + pm_155_0_HINOARASI = 0x89D4AB3B91E4193E, + pm_156_0_MAGUMARASI = 0xB0E870D70AF6C856, + pm_169_0_KUROBATTO = 0x4FB5FDD592E5C19C, + pm_169_0_KUROBATTO_EVENT = 0x884CAE4F264E7C53, + pm_172_0_PITYUU = 0x2F3677ACAD0B264F, + pm_173_0_PHI = 0xFFCFC4B53B6CEB73, + pm_175_0_TOGEPII = 0x55E136321BD4820B, + pm_176_0_TOGETIKKU = 0x69C60410B32CFA7C, + pm_185_0_m_USOKKII = 0x56EBF2B961D8C2F0, + pm_185_0_f_USOKKII = 0xBD638443042BA775, + pm_190_0_m_EIPAMU = 0x04EFF829AE5A9CAE, + pm_190_0_f_EIPAMU = 0xB924FA5E88CBF499, + pm_193_0_YANYANMA = 0x983CBC0A01DBCE18, + pm_196_0_EEFI = 0x0789E7AD3B62AE98, + pm_197_0_BURAKKII = 0x11A4B28C3399FCAE, + pm_198_0_m_YAMIKARASU = 0xB23DD104F7E3E7B4, + pm_198_0_f_YAMIKARASU = 0xAC41D5A69B91BDAB, + pm_200_0_MUUMA = 0x20E1A4325B9B726C, + pm_201_0_ANNOON = 0xBF886D72A5EB4BFD, + pm_201_1_ANNOON = 0x9602FE3839CA4144, + pm_201_2_ANNOON = 0x7EB49AC6E76098FF, + pm_201_3_ANNOON = 0x73DE6E93E4244BA6, + pm_201_4_ANNOON = 0x0B6DBBC6F0E94019, + pm_201_5_ANNOON = 0xF9B45DF47EC0E120, + pm_201_6_ANNOON = 0x313CF262DB0926BB, + pm_201_7_ANNOON = 0xCEBA0A3E967DCE42, + pm_201_8_ANNOON = 0xB6F99FCA4E14B215, + pm_201_9_ANNOON = 0x088F9B28A225E77C, + pm_201_10_ANNOON = 0x0614F4AB758CA4EC, + pm_201_11_ANNOON = 0x0C0EABF9C83A6645, + pm_201_12_ANNOON = 0x276F6051571BDC6E, + pm_201_13_ANNOON = 0xAA3B9A7B0AC22E07, + pm_201_14_ANNOON = 0x1A82687E9C21FC88, + pm_201_15_ANNOON = 0x2011F8FC2EAF5BC1, + pm_201_16_ANNOON = 0xE7B2049B04BC0D8A, + pm_201_17_ANNOON = 0x4C385FB04D7D4E83, + pm_201_18_ANNOON = 0xECF48E67086948B4, + pm_201_19_ANNOON = 0xC27F8EE33D371BAD, + pm_201_20_ANNOON = 0x35B1F3EAFB73E6BD, + pm_201_21_ANNOON = 0x0649E4802BBCA904, + pm_201_22_ANNOON = 0x4759AB9110BC0EBF, + pm_201_23_ANNOON = 0xF93D4C6B30D60166, + pm_201_24_ANNOON = 0x1C75AA69FDB3BAD9, + pm_201_25_ANNOON = 0x2AA9B9D0303F75E0, + pm_201_26_ANNOON = 0xF32E56B416E23C7B, + pm_201_27_ANNOON = 0x522BF06C1BD0F102, + pm_207_0_m_GURAIGAA = 0xC4DB525F8E431D41, + pm_207_0_f_GURAIGAA = 0x18223B561661AFAA, + pm_208_0_m_HAGANEERU = 0x27198363BE073D43, + pm_208_0_f_HAGANEERU = 0xC3AA40619506B41E, + pm_212_0_m_HASSAMU = 0x5C57D1B11EF558EA, + pm_212_0_f_HASSAMU = 0xAE6050F3E9BEADF7, + pm_214_0_m_HERAKUROSU = 0x4DC996846E32E10F, + pm_214_0_f_HERAKUROSU = 0x64EA03C28BB0A824, + pm_215_0_m_NYUURA = 0x3A685B964260E751, + pm_215_0_f_NYUURA = 0xD566A415A1D96AC6, + pm_216_0_HIMEGUMA = 0xE0C3B017F309DB7F, + pm_217_0_m_RINGUMA = 0xFE62D6A9E1C90FA0, + pm_217_0_f_RINGUMA = 0x6EB817B2E5CE41A1, + pm_220_0_URIMUU = 0xC513F3A8B387CE60, + pm_221_0_m_INOMUU = 0x00FFEC5427C03217, + pm_221_0_f_INOMUU = 0x263AAFAD40F6F534, + pm_223_0_TEPPOUO = 0x557EA5E216D1EB04, + pm_224_0_m_OKUTAN = 0x5B10EEB3C42F6EF3, + pm_224_0_f_OKUTAN = 0xA4B557C69DC53B4C, + pm_226_0_MANTAIN = 0x171318BDE5AFB37F, + pm_233_0_PORIGON2 = 0xF5117E70DB5C0CDD, + pm_234_0_ODOSISI = 0xB70B74B682AEDDC0, + pm_239_0_EREKIDDO = 0x5A0C4392036A5A42, + pm_240_0_BUBHI = 0x707D85F01E28F5F9, + pm_242_0_HAPINASU = 0x6E67F96382437D3E, + pm_265_0_KEMUSSO = 0x754C295FB5F44D9B, + pm_266_0_KARASARISU = 0xC5F20F76E7A93719, + pm_267_0_m_AGEHANTO = 0xA763E53AE978AB27, + pm_267_0_f_AGEHANTO = 0xB6CBA708417AC6DC, + pm_268_0_MAYURUDO = 0xF7D10E1E3D07DF2F, + pm_269_0_m_DOKUKEIRU = 0xF4441F03DDB7443F, + pm_269_0_f_DOKUKEIRU = 0x61424A6B6B33EF06, + pm_280_0_RARUTOSU = 0x1335E7CF78B73FD4, + pm_281_0_KIRURIA = 0xA0553AA5DAAD1093, + pm_282_0_SAANAITO = 0x21CFEF4845D0131B, + pm_299_0_NOZUPASU = 0x5DFEF42CC1CFDDDA, + pm_315_0_m_ROZERIA = 0xD3DA7E5EE9860CFC, + pm_315_0_f_ROZERIA = 0xBF2D97F2A6E9C72D, + pm_339_0_DOZYOTTI = 0x91C4588D028D31BC, + pm_340_0_NAMAZUN = 0x733DF163257691E4, + pm_355_0_YOMAWARU = 0xC16DA720E3FF43B1, + pm_356_0_SAMAYOORU = 0x7A99A59187C4FEB5, + pm_358_0_TIRIIN = 0xF75D819C39B27EC6, + pm_361_0_YUKIWARASI = 0x7F59A6B1A057AAEC, + pm_362_0_ONIGOORI = 0xAE3C6A3413ACD75E, + unk_e3f241026905b7f = 0x0E3F241026905B7F, + pm_363_0_TAMAZARASI = 0x57BA84BA67C80340, + pm_363_0_TAMAZARASI_SUB099 = 0x9E3D34369C67DB99, + pm_364_0_TODOGURAA = 0xC416B116EAA6D876, + pm_365_0_TODOZERUGA = 0x5933EFC31901ADBF, + pm_387_0_NAETORU = 0x9D068E51A9F2B451, + pm_388_0_HAYASIGAME = 0x66A9CB7F10A10C9B, + pm_389_0_DODAITOSU = 0xE4860525BC865A83, + pm_390_0_HIKOZARU = 0xB1BA5D4013E6B112, + pm_391_0_MOUKAZARU = 0x0737E620799C467D, + pm_392_0_GOUKAZARU = 0x1C0192447952EEF2, + pm_393_0_POTTYAMA = 0x89D04AD6EC6542B5, + pm_394_0_POTTAISI = 0xDD7ECD313002CC84, + pm_395_0_ENPERUTO = 0xE35A7D27BA3D0026, + pm_396_0_m_MUKKURU = 0x9491991D82A95AB9, + pm_396_0_f_MUKKURU = 0x7E3796C48490E2F4, + pm_397_0_m_MUKUBAADO = 0xA9BAEC93EB49A97B, + pm_397_0_f_MUKUBAADO = 0x5F4117769E95A4E2, + pm_398_0_m_MUKUHOOKU = 0x27600C74B64ECBF1, + pm_398_0_f_MUKUHOOKU = 0x8C77F0DA56F7DE7C, + pm_399_0_m_BIPPA = 0xA1BB2DD9130A46F2, + pm_399_0_f_BIPPA = 0xDD75C52F7283E9BB, + pm_400_0_m_BIIDARU = 0xC8F7D5BF4173CE93, + pm_400_0_f_BIIDARU = 0xE9E6C6B33718E60E, + pm_401_0_m_KOROBOOSI = 0xBF27AC1629E90381, + pm_402_0_f_KOROTOKKU = 0xF0F994239E2F346F, + pm_402_0_m_KOROTOKKU = 0x2D773D3EE1C014F6, + pm_402_0_m_KOROTOKKU_OYABUN = 0x96C22933A5E58E3B, + pm_403_0_m_KORINKU = 0x168A00F24E6405B7, + pm_403_0_f_KORINKU = 0xFA5643FB989B3B1E, + pm_404_0_m_RUKUSIO = 0x984D50F262AFCEAF, + pm_404_0_f_RUKUSIO = 0x22F84F7815153DD6, + pm_405_0_m_RENTORAA = 0x7F6D9F484D4C0EA6, + pm_405_0_f_RENTORAA = 0x0C13D8D28EC907E5, + pm_406_0_SUBOMII = 0x9ECE3FC55775155F, + pm_407_0_m_ROZUREIDO = 0x93ABEE50A1E49467, + pm_407_0_f_ROZUREIDO = 0x7370532B23D76DAA, + pm_408_0_m_ZUGAIDOSU = 0x47AE1BFCD6B42B84, + pm_409_0_f_RAMUPARUDO = 0x4AE56FF6E6334961, + pm_410_0_TATETOPUSU = 0xB509DB56AEE937C2, + pm_411_0_TORIDEPUSU = 0xF4E140FB3B645905, + pm_412_0_MINOMUTTI = 0xA94E411B4AED0770, + pm_412_1_MINOMUTTI = 0x8F6AE63389246593, + unk_7974384d9b4c2fb6 = 0x7974384D9B4C2FB6, + pm_413_0_MINOMADAMU = 0x14019D9941038DFD, + pm_413_1_MINOMADAMU = 0x6ABFCC37361003B4, + unk_4cdac9407bf83af7 = 0x4CDAC9407BF83AF7, + pm_414_0_GAAMEIRU = 0x4BB7814C7C192D19, + pm_414_1_GAAMEIRU = 0xF1127750E1886890, + unk_25964c22fd8497f7 = 0x25964C22FD8497F7, + pm_415_0_m_MITUHANII = 0xAE27E66F62B5A72D, + pm_415_0_f_MITUHANII = 0xE597BC60EC178830, + pm_416_0_BIIKUIN = 0x5AD9AD5A8D788501, + pm_416_1_BIIKUIN = 0xDD355F94F2313486, + pm_417_0_m_PATIRISU = 0x6BF855FAE859F756, + pm_417_0_f_PATIRISU = 0x220FCB19BE6F4AD1, + pm_418_0_m_BUIZERU_SUB004 = 0x219A868593E0F143, + pm_418_0_m_BUIZERU = 0x8E22980132312750, + pm_418_0_f_BUIZERU = 0x2C54942E5AC186C5, + pm_419_0_m_HUROOZERU = 0x4F33189725E4177E, + pm_419_0_f_HUROOZERU = 0x3E9C477265BDCCFB, + pm_420_0_THERINBO = 0x2CFB32D06BB0ABCE, + pm_421_0_THERIMU = 0x36A980CFC8258668, + pm_421_1_THERIMU = 0x3A220AFBFED99063, + pm_422_0_KARANAKUSI = 0x3D972A66844FA833, + pm_422_1_KARANAKUSI = 0xC917F1220D646DBE, + pm_423_0_TORITODON = 0x3F6DE4B7DD492468, + pm_423_1_TORITODON = 0x20D99D21DD492357, + pm_424_0_m_ETEBOOSU = 0xC460FB2533D4748D, + pm_424_0_f_ETEBOOSU = 0xCD7032496A7C365A, + pm_425_0_HUWANTE = 0x5C60998F55A4C354, + pm_426_0_HUWARAIDO = 0x313B485EBC2171CD, + pm_427_0_MIMIRORU = 0x78ACE351AD05FBD4, + pm_428_0_MIMIROPPU = 0x9328F61FB61F13E5, + pm_429_0_MUUMAAZI = 0xD055895E765EEC2F, + pm_430_0_DONKARASU = 0x4199B6BDAAAD449E, + pm_431_0_NYARUMAA = 0x032B6F5BC52B5EFD, + pm_432_0_BUNYATTO = 0xF3D0F56A34A59780, + pm_433_0_RIISYAN = 0x0FD922D98261F028, + pm_434_0_SUKANPUU = 0x19EE4EA3ADF0B902, + pm_435_0_SUKATANKU = 0x584AF50A97D6E1D6, + pm_436_0_DOOMIRAA = 0xB03300749E45BB04, + pm_437_0_DOOTAKUN = 0xFB9DAD7C0A306304, + pm_438_0_USOHATI = 0xB8497707B9AFFFC3, + pm_439_0_MANENE = 0xE7676C20D594CB1D, + pm_440_0_PINPUKU = 0x28C7077067B3CBC1, + pm_441_0_PERAPPU = 0x6F92EA1DC51CABCF, + pm_442_0_MIKARUGE = 0x11BA4D9585AACE22, + pm_443_0_m_HUKAMARU = 0xF894F0AAA6DF1348, + pm_443_0_f_HUKAMARU = 0x0E7DBE6B422BF617, + pm_444_0_m_GABAITO = 0x625850C05A022E48, + pm_444_0_f_GABAITO = 0x2B17D38BA6A71C75, + pm_445_0_m_GABURIASU = 0x8FD0138AED004409, + pm_445_0_f_GABURIASU = 0x5FFAD59344D84D98, + pm_446_0_GONBE = 0xA0047EEB132ED1D6, + pm_447_0_RIORU = 0x906BBDF18FDA41D7, + pm_448_0_RUKARIO = 0x17D0C6D90344C370, + pm_449_0_m_HIPOPOTASU = 0x079843AF139A4302, + pm_449_0_f_HIPOPOTASU = 0x4A086453137B138D, + pm_450_0_m_KABARUDON = 0x1955D84E92121D4D, + pm_450_0_f_KABARUDON = 0x372A069678F1F45C, + pm_451_0_SUKORUPI = 0x3E4BDFC71176F055, + pm_452_0_DORAPION = 0x8F2F65B0686BDBC0, + pm_453_0_m_GUREGGURU = 0x317C95E85C275D22, + pm_453_0_f_GUREGGURU = 0x74DAFA4E821C0EDB, + pm_454_0_m_DOKUROGGU = 0xE614F33C0065709B, + pm_454_0_f_DOKUROGGU = 0xC181CFE9A52A6D56, + pm_455_0_MASUKIPPA = 0x945188E7CDB5341A, + pm_456_0_m_KEIKOUO = 0x3A5895D1101F9037, + pm_456_0_f_KEIKOUO = 0x30721017FA97EC02, + pm_457_0_m_NEORANTO = 0xA01FDF8F36D4C849, + pm_457_0_f_NEORANTO = 0x94D65F44E4DB603A, + pm_458_0_TAMANTA = 0x9E23D7B27A3550BA, + pm_459_0_m_YUKIKABURI = 0xC1C9454686BF4F77, + pm_459_0_f_YUKIKABURI = 0x980E30C4962AF568, + pm_460_0_m_YUKINOOO = 0x2620F9FA5756901A, + pm_460_0_f_YUKINOOO = 0xA329B2071F86D54D, + pm_461_0_m_MANYUURA = 0x98B23602AC81C150, + pm_461_0_f_MANYUURA = 0xA74E932CFE83EAE7, + pm_462_0_ZIBAKOIRU = 0xCEEB29248D1FA839, + pm_463_0_BEROBERUTO = 0x8D15EF082F42FC05, + pm_464_0_m_DOSAIDON = 0x469278A74D72F144, + pm_464_0_f_DOSAIDON = 0x2C2A4B83CF084B3B, + pm_465_0_m_MOZYANBO = 0x34DDE3ADD16B4F75, + pm_465_0_f_MOZYANBO = 0xB568913D0AC707CE, + pm_466_0_EREKIBURU = 0xFA9958E9109B302F, + pm_467_0_BUUBAAN = 0xA8ED6A8D845C7B48, + pm_468_0_TOGEKISSU = 0x42C7F372045E2459, + pm_469_0_MEGAYANMA = 0x42A006A7E230D188, + pm_470_0_RIIFIA = 0xC68BD7FDEAACED3A, + pm_471_0_GUREISIA = 0x9C12AB8FB6B90E68, + pm_472_0_GURAION = 0x5877A05E2FBA2709, + pm_473_0_m_MANMUU = 0x386D73EBE6A7B8F4, + pm_473_0_f_MANMUU = 0x306E81A939CB3993, + pm_474_0_PORIGONz = 0xC08438286952740C, + pm_475_0_ERUREIDO = 0x5E5D71F3E0CBE9DC, + pm_476_0_DAINOOZU = 0xDC018AA5878C8807, + pm_477_0_YONOWAARU = 0x6DE0698BBCB2CA2C, + pm_478_0_YUKIMENOKO = 0x7B36F7A58164D977, + pm_479_0_ROTOMU = 0x9E8D599701378583, + pm_479_1_ROTOMU = 0x6862791F06B78BDE, + pm_479_2_ROTOMU = 0xFBBC6B6C015DC941, + pm_479_3_ROTOMU = 0xB95C351BE7E9F834, + pm_479_4_ROTOMU = 0xD6EA55B5B5D9744F, + pm_479_5_ROTOMU = 0xC56571B25632522A, + pm_480_0_YUKUSII = 0x97CC9929EDDBD5F8, + pm_481_0_EMURITTO = 0x8C9946681252830B, + pm_482_0_AGUNOMU = 0xA8EF99AAF7F5F7C5, + pm_483_0_DHIARUGA = 0x106E7182195C260F, + pm_484_0_PARUKIA = 0xA055D9B805436A0C, + pm_485_0_HIIDORAN = 0x206088562697898E, + pm_486_0_REZIGIGASU = 0xBFA4299E98FB33D9, + pm_487_0_GIRATHINA = 0x23026AD6C36A3435, + pm_487_1_GIRATHINA = 0x2E7B41BCE75826F6, + pm_488_0_KURESERIA = 0x97E7ED85C87A3DB6, + pm_489_0_FIONE = 0x4E0596A7E5646341, + pm_490_0_MANAFI = 0x4535E33F5E564902, + pm_491_0_DAAKURAI = 0x983A46CEAB2742D7, + pm_492_0_SHEIMI = 0x8E7C1BF15AA87E41, + pm_492_1_SHEIMI = 0x586CE849A27477A0, + pm_493_0_ARUSEUSU = 0xB7ECCDAE6F5707D2, + pm_493_1_ARUSEUSU = 0x38B4B39EC0768C67, + pm_493_2_ARUSEUSU = 0x7600DD72ED3B4920, + pm_493_3_ARUSEUSU = 0xBB368794840D45A5, + pm_493_4_ARUSEUSU = 0xFF87AC2753F1C9C6, + pm_493_5_ARUSEUSU = 0x4CA11DC3DAF364CB, + pm_493_6_ARUSEUSU = 0x0615848DE67F0FB4, + pm_493_7_ARUSEUSU = 0x6FEF6D44ECB59C69, + pm_493_8_ARUSEUSU = 0x7E7D8A31F8F21EEA, + pm_493_9_ARUSEUSU = 0x2F0E2FB68A052C5F, + pm_493_10_ARUSEUSU = 0xDC6E25257282CB55, + pm_493_11_ARUSEUSU = 0x40D7A8B92AF09D90, + pm_493_12_ARUSEUSU = 0x4B8A666460A38C97, + pm_493_13_ARUSEUSU = 0x25FABC2DDC931F82, + pm_493_14_ARUSEUSU = 0xB312234D6E8F40D9, + pm_493_15_ARUSEUSU = 0x7725EA3FCD8EFBE4, + pm_493_16_ARUSEUSU = 0x0FE7C88F0C511E3B, + pm_493_17_ARUSEUSU = 0x666B55C4B5063836, + pm_501_0_MIZYUMARU = 0xAF4985CD1D218AFC, + pm_502_0_HUTATIMARU = 0x4A4A7B20881294E4, + pm_548_0_TYURINE = 0x84FE2D0C81A88918, + pm_627_0_WASIBON = 0xF74BB7703FA523A3, + pm_641_0_TORUNEROSU = 0x0EBA8CE66319FEFA, + pm_641_1_TORUNEROSU = 0x865F5B29F7D3F6AF, + pm_642_0_BORUTOROSU = 0x4C497F2A0096EEFB, + pm_642_1_BORUTOROSU = 0x630448CC6C50E58A, + pm_645_0_RANDOROSU = 0xC41B98740AB889EB, + pm_645_1_RANDOROSU = 0xD1DDBC2BA3D9DE20, + pm_700_0_NINFIA = 0xDABA16B3B282D08F, + pm_704_0_NUMERA = 0xB006977E13C42A32, + pm_712_0_KATIKOORU = 0x4984C3C7710B2AFC, + pm_722_0_MOKUROO = 0x9ECC7B26EA9E99A0, + pm_723_0_HUKUSUROO = 0x761DBBDEC4BAFC5E, + pm_899_0_ODOSISI2 = 0xC445D3C3B5C7F567, + unk_73cd7670de50bf92 = 0x73CD7670DE50BF92, + pm_900_0_SUTORAIKU2 = 0x50042EF6FFC50F49, + pm_900_1_SUTORAIKU2 = 0x302B5F4800F44C2C, + pm_903_0_rNYUURA2 = 0xC5EA76327F79BF9B, + pm_903_0_rNYUURA2_EVENT = 0xF39C3111234AA504, + unk_4504fed3686326ba = 0x4504FED3686326BA, + unk_109714ec91fc123d = 0x109714EC91FC123D, + pm_905_0_FEATOROSU = 0x92AE783A3DD4F467, + pm_905_1_FEATOROSU = 0x26BD2AA2A097117C, + pm_904_0_rHARISEN2 = 0x86369F877D6A715A, + pm_904_0_rHARISEN2_OYABUN = 0x00177EC637E0F547, + pm_902_0_m_rBASURAO2 = 0xA7370AC81DEE9DA3, + unk_16b2219f2c34655 = 0x016B2219F2C34655, + unk_62f9c9295910928d = 0x62F9C9295910928D, + pm_901_0_HIMEGUMA3 = 0x5E18A362DB785C35, + unk_1bbfaf0587dd34d2 = 0x1BBFAF0587DD34D2, + pm_483_1_DHIARUGA = 0x1F2BC2563CDEBE0A, + pm_484_1_PARUKIA = 0x5CB5954C8863A223, + pm_058_1_GAADHI = 0x1A09CC57C175EF9B, + pm_058_2_GAADHI = 0xE4AC9550E5F1457C, + pm_058_3_GAADHI = 0x31B695D92696C535, + pm_058_4_GAADHI = 0x5ABD56E662A3AF06, + pm_059_1_UINDHI = 0x91202B07BCD8488F, + pm_059_2_UINDHI = 0x906E97236B575388, + pm_100_1_BIRIRIDAMA = 0xDBE39C496C3FE76F, + pm_101_1_MARUMAIN = 0x3A491A32B94D2E10, + pm_101_1_MARUMAIN_EVENT = 0x30215DFE4B009037, + unk_414e6ea64920553 = 0x0414E6EA64920553, + pm_157_1_BAKUHUUN = 0x0A09CFACC06039F6, + pm_215_1_NYUURA = 0x2BC88AEF207952D8, + pm_211_1_HARIISEN = 0xC198D435BB6CE1B3, + pm_503_1_DAIKENKI = 0x5757780F91E52E20, + pm_549_1_DOREDHIA = 0xABE2F65B74FBFCF0, + unk_da85a46835474ec3 = 0xDA85A46835474EC3, + pm_550_2_BASURAO = 0xE84B34AB4E79AA10, + pm_570_1_ZOROA = 0xF5C64BF800CA5BC9, + pm_571_1_ZOROAAKU = 0xC70206D6B252D40D, + pm_571_1_ZOROAAKU_OYABUN = 0x119437A2C563161A, + pm_628_1_WHOOGURU = 0xB496C9BC67BD78CE, Unk_0xAF53D8D0F230E305 = 0xAF53D8D0F230E305, - Unk_0x6916B336961C2FA0 = 0x6916B336961C2FA0, + pm_713_1_KUREBEESU = 0x6916B336961C2FA0, Unk_0x709A1C8060864479 = 0x709A1C8060864479, - Unk_0x41ACC4325A7D85DE = 0x41ACC4325A7D85DE, - Unk_0x119E0E76033FCD57 = 0x119E0E76033FCD57, - Unk_0x581F53B307DAB7BF = 0x581F53B307DAB7BF, - Unk_0xB480F619B5F3AE80 = 0xB480F619B5F3AE80, - Unk_0xC5E1F48622CDF5FB = 0xC5E1F48622CDF5FB, + pm_713_2_KUREBEESU_OYABUN = 0x41ACC4325A7D85DE, + pm_705_1_NUMEIRU = 0x119E0E76033FCD57, + pm_706_1_NUMERUGON = 0x581F53B307DAB7BF, + pm_706_1_NUMERUGON_OYABUN = 0xB480F619B5F3AE80, + pm_724_1_ZYUNAIPAA = 0xC5E1F48622CDF5FB, Unk_0x470C3CBEC51541FD = 0x470C3CBEC51541FD, Unk_0x138F48FE9DB8EDF2 = 0x138F48FE9DB8EDF2, Unk_0x6BF4C2BBB3238803 = 0x6BF4C2BBB3238803, - Unk_0x8E3A34C6BD7D3D0D = 0x8E3A34C6BD7D3D0D, + pm_493_18_ARUSEUSU = 0x8E3A34C6BD7D3D0D, }; diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeResidentType8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeResidentType8a.cs index f9bdc0c8..3dad3ebd 100644 --- a/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeResidentType8a.cs +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/Model Set/PokeResidentType8a.cs @@ -6,7 +6,7 @@ namespace pkNX.Structures.FlatBuffers; public enum PokeResidentType8a : ulong { enigma = 0xC75DDBE25402B11C, - unk_01 = 0xE0F6613235D0AEEE, - unk_02 = 0xE0F9DF3235D3BADF, - unk_03 = 0xE0F6623235D0B0A1, + residents_188 = 0xE0F6613235D0AEEE, + residents_189 = 0xE0F6623235D0B0A1, + residents_190 = 0xE0F9DF3235D3BADF, }; diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeAIArchive8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeAIArchive8a.cs index e677faa8..44a5be9e 100644 --- a/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeAIArchive8a.cs +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeAIArchive8a.cs @@ -51,21 +51,21 @@ public class PokeAI8a [FlatBufferItem(00)] public int Species { get; set; } // int [FlatBufferItem(01)] public int Form { get; set; } // int [FlatBufferItem(02)] public bool IsAlpha { get; set; } // bool - [FlatBufferItem(03)] public string Behavior1 { get; set; } = string.Empty; - [FlatBufferItem(04)] public string Behavior2 { get; set; } = string.Empty; - [FlatBufferItem(05)] public string Behavior3 { get; set; } = string.Empty; + [FlatBufferItem(03)][TypeConverter(typeof(AIBehaviourConverter))] public string Behavior1 { get; set; } = string.Empty; + [FlatBufferItem(04)][TypeConverter(typeof(AIBehaviourConverter))] public string Behavior2 { get; set; } = string.Empty; + [FlatBufferItem(05)][TypeConverter(typeof(AIBehaviourConverter))] public string Behavior3 { get; set; } = string.Empty; [FlatBufferItem(06)] public bool Field_06 { get; set; } // bool [FlatBufferItem(07)] public ulong Field_07 { get; set; } // ulong 2458747221614355867 [FlatBufferItem(08)] public bool Field_08 { get; set; } = true; // bool, always true - [FlatBufferItem(09)] public PokeAI8a_F09 Field_09 { get; set; } = new(); + [FlatBufferItem(09)] public PokeAI8a_F09 Field_09 { get; set; } = PokeAI8a_F09.DefaultBehaviour_F09; [FlatBufferItem(10)] public bool Field_10 { get; set; } = true; // bool, always true - [FlatBufferItem(11)] public PokeAI8a_F09 Field_11 { get; set; } = new(); + [FlatBufferItem(11)] public PokeAI8a_F09 Field_11 { get; set; } = PokeAI8a_F09.DefaultBehaviour_F11; [FlatBufferItem(12)] public bool Field_12 { get; set; } = true; // bool, always true except for Darkrai - [FlatBufferItem(13)] public PokeAI8a_F09 Field_13 { get; set; } = new(); + [FlatBufferItem(13)] public PokeAI8a_F09 Field_13 { get; set; } = PokeAI8a_F09.DefaultBehaviour02; [FlatBufferItem(14)] public bool Field_14 { get; set; } = true; // bool, always true - [FlatBufferItem(15)] public PokeAI8a_F09 Field_15 { get; set; } = new(); + [FlatBufferItem(15)] public PokeAI8a_F09 Field_15 { get; set; } = PokeAI8a_F09.DefaultBehaviour05; [FlatBufferItem(16)] public bool Field_16 { get; set; } = true; // bool, always true - [FlatBufferItem(17)] public PokeAI8a_F09 Field_17 { get; set; } = new(); + [FlatBufferItem(17)] public PokeAI8a_F09 Field_17 { get; set; } = PokeAI8a_F09.DefaultBehaviour05; [FlatBufferItem(18)] public PokeAI8a_F18 Field_18 { get; set; } = new(); // only used by Kleavor-1 [FlatBufferItem(19)] public PokeAI8a_F18 Field_19 { get; set; } = new(); // assumed same as above, none use [FlatBufferItem(20)] public PokeAI8a_F18 Field_20 { get; set; } = new(); // assumed same as above, none use @@ -104,26 +104,68 @@ public class PokeAI8a_F18 [FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] public class PokeAI8a_F09 { - [FlatBufferItem(00)] public PokeAIBehaviour Field_00 { get; set; } = new(); - [FlatBufferItem(01)] public PokeAIBehaviour Field_01 { get; set; } = new(); - [FlatBufferItem(02)] public PokeAIBehaviour Field_02 { get; set; } = new(); - [FlatBufferItem(03)] public PokeAIBehaviour Field_03 { get; set; } = new(); - [FlatBufferItem(04)] public PokeAIBehaviour Field_04 { get; set; } = new PokeAIBehaviour { Hash = 1234775724179408742, Parameters = new string[] { "3", "5", "60", "90", "4", "run", "Normal" } }; - [FlatBufferItem(05)] public PokeAIBehaviour Field_05 { get; set; } = new(); - [FlatBufferItem(06)] public PokeAIBehaviour Field_06 { get; set; } = new(); - [FlatBufferItem(07)] public PokeAIBehaviour Field_07 { get; set; } = new(); - [FlatBufferItem(08)] public PokeAIBehaviour Field_08 { get; set; } = new(); + public static readonly PokeAI8a_F09 DefaultBehaviour02 = new(); + + public static readonly PokeAI8a_F09 DefaultBehaviour_F09 = new() + { + Field_00 = PokeAIBehaviour.DefaultBehaviour02, + Field_01 = PokeAIBehaviour.Behaviour_X_Params, + Field_02 = PokeAIBehaviour.DefaultBehaviour02, + Field_03 = PokeAIBehaviour.DefaultBehaviour02, + Field_04 = PokeAIBehaviour.Behaviour_04_Params, + Field_05 = PokeAIBehaviour.DefaultBehaviour02, + Field_06 = PokeAIBehaviour.DefaultBehaviour02, + Field_07 = PokeAIBehaviour.DefaultBehaviour02, + Field_08 = PokeAIBehaviour.Behaviour_X2_Params, + }; + + public static readonly PokeAI8a_F09 DefaultBehaviour_F11 = new() + { + Field_00 = PokeAIBehaviour.DefaultBehaviour02_20, + Field_01 = PokeAIBehaviour.Behaviour_04_Params, + Field_02 = PokeAIBehaviour.DefaultBehaviour02, + Field_03 = PokeAIBehaviour.DefaultBehaviour02, + Field_04 = PokeAIBehaviour.Behaviour_04_Params, + Field_05 = PokeAIBehaviour.DefaultBehaviour02, + Field_06 = PokeAIBehaviour.DefaultBehaviour02, + Field_07 = PokeAIBehaviour.DefaultBehaviour02, + Field_08 = PokeAIBehaviour.DefaultBehaviour02, + }; + + public static readonly PokeAI8a_F09 DefaultBehaviour05 = new() + { + Field_00 = PokeAIBehaviour.DefaultBehaviour05, + Field_01 = PokeAIBehaviour.DefaultBehaviour05, + Field_02 = PokeAIBehaviour.DefaultBehaviour05, + Field_03 = PokeAIBehaviour.DefaultBehaviour05, + Field_04 = PokeAIBehaviour.Behaviour_04_Params, + Field_05 = PokeAIBehaviour.DefaultBehaviour05, + Field_06 = PokeAIBehaviour.DefaultBehaviour05, + Field_07 = PokeAIBehaviour.DefaultBehaviour05, + Field_08 = PokeAIBehaviour.DefaultBehaviour05, + }; + + [FlatBufferItem(00)] public PokeAIBehaviour Field_00 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(01)] public PokeAIBehaviour Field_01 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(02)] public PokeAIBehaviour Field_02 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(03)] public PokeAIBehaviour Field_03 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(04)] public PokeAIBehaviour Field_04 { get; set; } = PokeAIBehaviour.Behaviour_04_Params; + [FlatBufferItem(05)] public PokeAIBehaviour Field_05 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(06)] public PokeAIBehaviour Field_06 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(07)] public PokeAIBehaviour Field_07 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; + [FlatBufferItem(08)] public PokeAIBehaviour Field_08 { get; set; } = PokeAIBehaviour.DefaultBehaviour02; } [FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] public class PokeAIBehaviour { - // Hash 9252365659083253459 = new string[] { "0.2", "35" }; - // Hash 17205188591700921149 = new string[] { "10", "3", "run", "Normal" }; - // Hash 17205188591700921149 = new string[] { "10", "0.5", "run", "Normal" }; - // Hash 1234775724179408742 = new string[] { "3", "5", "60", "90", "4", "run", "Normal" }; + public static readonly PokeAIBehaviour DefaultBehaviour02 = new() { BehaviourHash = 9252365659083253459, Parameters = new string[] { "0.2", "35" } }; + public static readonly PokeAIBehaviour DefaultBehaviour02_20 = new() { BehaviourHash = 9252365659083253459, Parameters = new string[] { "0.2", "20" } }; + public static readonly PokeAIBehaviour DefaultBehaviour05 = new() { BehaviourHash = 9252365659083253459, Parameters = new string[] { "0.5", "35" } }; + public static readonly PokeAIBehaviour Behaviour_X_Params = new() { BehaviourHash = 17205188591700921149, Parameters = new string[] { "10", "3", "run", "Normal" } }; + public static readonly PokeAIBehaviour Behaviour_X2_Params = new() { BehaviourHash = 17205188591700921149, Parameters = new string[] { "10", "0.5", "run", "Normal" } }; + public static readonly PokeAIBehaviour Behaviour_04_Params = new() { BehaviourHash = 1234775724179408742, Parameters = new string[] { "3", "5", "60", "90", "4", "run", "Normal" } }; - [FlatBufferItem(00)] public ulong Hash { get; set; } = 9252365659083253459; - [FlatBufferItem(01)] public string[] Parameters { get; set; } = new string[] { "0.2", "35" }; + [FlatBufferItem(00)] public ulong BehaviourHash { get; set; } = 9252365659083253459; + [FlatBufferItem(01)] public string[] Parameters { get; set; } = new string[] { "0.5", "35" }; } - diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBattleSpawnArchive8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBattleSpawnArchive8a.cs new file mode 100644 index 00000000..430037d6 --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBattleSpawnArchive8a.cs @@ -0,0 +1,34 @@ +using System; +using System.ComponentModel; +using FlatSharp.Attributes; + +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable ClassNeverInstantiated.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedType.Global +// ReSharper disable UnusedMember.Global +// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global + +namespace pkNX.Structures.FlatBuffers; + +/// +/// Seems to be a file left over from development. Only has test entries +/// +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeBattleSpawnArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(00)] public PokeBattleSpawn8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeBattleSpawn8a +{ + [FlatBufferItem(00)] public string Field_00 { get; set; } = string.Empty; + [FlatBufferItem(01)] public string[] Field_01 { get; set; } = Array.Empty(); + [FlatBufferItem(02)] public string[] Field_02 { get; set; } = Array.Empty(); + [FlatBufferItem(03)] public float Field_03 { get; set; } + [FlatBufferItem(04)] public float Field_04 { get; set; } + [FlatBufferItem(05)] public float Field_05 { get; set; } +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBodyParticleArchive8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBodyParticleArchive8a.cs new file mode 100644 index 00000000..2f4566d2 --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeBodyParticleArchive8a.cs @@ -0,0 +1,43 @@ +using System; +using System.ComponentModel; +using FlatSharp.Attributes; + +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable ClassNeverInstantiated.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedType.Global +// ReSharper disable UnusedMember.Global +// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global + +namespace pkNX.Structures.FlatBuffers; + +/// +/// Seems to be a file left over from development. Only has test entries +/// +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeBodyParticleArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(00)] public PokeBodyParticle8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeBodyParticle8a +{ + [FlatBufferItem(00)] public uint Species { get; set; } + [FlatBufferItem(01)] public uint Form { get; set; } + [FlatBufferItem(02)] public bool Flag_02 { get; set; } + [FlatBufferItem(03)] public PokeBodyParticle8a_F03[] Field_03 { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeBodyParticle8a_F03 +{ + [FlatBufferItem(00)] public bool Flag_00 { get; set; } + [FlatBufferItem(01)] public bool Flag_01 { get; set; } + [FlatBufferItem(02)] public string Field_02 { get; set; } = string.Empty; + [FlatBufferItem(03)] public string Field_03 { get; set; } = string.Empty; + [FlatBufferItem(04)] public string Field_04 { get; set; } = string.Empty; + [FlatBufferItem(05)] public string Field_05 { get; set; } = string.Empty; +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeCaptureCollisionArchive8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeCaptureCollisionArchive8a.cs new file mode 100644 index 00000000..6f55412a --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeCaptureCollisionArchive8a.cs @@ -0,0 +1,44 @@ +using System; +using System.ComponentModel; +using FlatSharp.Attributes; + +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable ClassNeverInstantiated.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedType.Global +// ReSharper disable UnusedMember.Global +// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global + +namespace pkNX.Structures.FlatBuffers; + +/// +/// Seems to be a file left over from development. Only has test entries +/// +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeCaptureCollisionArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(00)] public PokeCaptureCollision8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeCaptureCollision8a +{ + [FlatBufferItem(00)] public uint Species { get; set; } + [FlatBufferItem(01)] public uint Form { get; set; } + [FlatBufferItem(02)] public PokeCaptureCollider[] Colliders { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeCaptureCollider +{ + [FlatBufferItem(00)] public string SocketName { get; set; } = string.Empty; + [FlatBufferItem(01)] public string Shape { get; set; } = string.Empty; + [FlatBufferItem(02)] public float[] ShapeParameters { get; set; } = Array.Empty(); + [FlatBufferItem(03)] public float OffsetX { get; set; } + [FlatBufferItem(04)] public float OffsetY { get; set; } + [FlatBufferItem(05)] public float OffsetZ { get; set; } + [FlatBufferItem(06)] public string Type { get; set; } = string.Empty; + [FlatBufferItem(07)] public string Field_07 { get; set; } = string.Empty; +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeDefaultLocatorArchive8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeDefaultLocatorArchive8a.cs new file mode 100644 index 00000000..f551fff6 --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/Poke/PokeDefaultLocatorArchive8a.cs @@ -0,0 +1,33 @@ +using System; +using System.ComponentModel; +using FlatSharp.Attributes; + +// ReSharper disable UnusedAutoPropertyAccessor.Global +// ReSharper disable ClassNeverInstantiated.Global +// ReSharper disable MemberCanBePrivate.Global +// ReSharper disable UnusedType.Global +// ReSharper disable UnusedMember.Global +// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global + +namespace pkNX.Structures.FlatBuffers; + +/// +/// Seems to be a file left over from development. Only has test entries +/// +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeDefaultLocatorArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(00)] public PokeDefaultLocator8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class PokeDefaultLocator8a +{ + [FlatBufferItem(00)] public string Locator { get; set; } = string.Empty; + [FlatBufferItem(01)] public string Socket { get; set; } = string.Empty; + [FlatBufferItem(02)] public Vec3f Position { get; set; } = Vec3f.Zero; + [FlatBufferItem(03)] public Vec3f Rotation { get; set; } = Vec3f.Zero; + [FlatBufferItem(04)] public Vec3f Scale { get; set; } = Vec3f.One; +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/Pokedex/PokedexResearchTable.cs b/pkNX.Structures.FlatBuffers/Arceus/Pokedex/PokedexResearchTable.cs index 8e0525f8..c403214f 100644 --- a/pkNX.Structures.FlatBuffers/Arceus/Pokedex/PokedexResearchTable.cs +++ b/pkNX.Structures.FlatBuffers/Arceus/Pokedex/PokedexResearchTable.cs @@ -51,16 +51,16 @@ public class PokedexResearchTask [FlatBufferItem(03)] public int Move { get; set; } [FlatBufferItem(04)] public int MoveType { get; set; } [FlatBufferItem(05)] public int TimeOfDay { get; set; } - [FlatBufferItem(06)] public ulong Hash_06 { get; set; } - [FlatBufferItem(07)] public ulong Hash_07 { get; set; } - [FlatBufferItem(08)] public ulong Hash_08 { get; set; } - [FlatBufferItem(09)] public int Threshold1 { get; set; } - [FlatBufferItem(10)] public int Threshold2 { get; set; } - [FlatBufferItem(11)] public int Threshold3 { get; set; } - [FlatBufferItem(12)] public int Threshold4 { get; set; } - [FlatBufferItem(13)] public int Threshold5 { get; set; } - [FlatBufferItem(14)] public int PointsSingle { get; set; } - [FlatBufferItem(15)] public int PointsBonus { get; set; } + [FlatBufferItem(06)] public ulong Hash_06 { get; set; } = 14695981039346656837; + [FlatBufferItem(07)] public ulong Hash_07 { get; set; } = 14695981039346656837; + [FlatBufferItem(08)] public ulong Hash_08 { get; set; } = 14695981039346656837; + [FlatBufferItem(09)] public int Threshold1 { get; set; } = 1; + [FlatBufferItem(10)] public int Threshold2 { get; set; } = 2; + [FlatBufferItem(11)] public int Threshold3 { get; set; } = 4; + [FlatBufferItem(12)] public int Threshold4 { get; set; } = 6; + [FlatBufferItem(13)] public int Threshold5 { get; set; } = 10; + [FlatBufferItem(14)] public int PointsSingle { get; set; } = 10; + [FlatBufferItem(15)] public int PointsBonus { get; set; } = 0; [FlatBufferItem(16)] public bool RequiredForCompletion { get; set; } // Unused but referenced by code (bool is set to != 0) } @@ -78,4 +78,13 @@ public enum ResearchTaskType Unknown_8, Unknown_9, Unknown_10, + Unknown_11, + Unknown_12, + Unknown_13, + Unknown_14, + Unknown_15, + Unknown_16, + Unknown_17, + Unknown_18, + Unknown_19, } diff --git a/pkNX.Structures.FlatBuffers/Arceus/Util/ArchiveContents8a.cs b/pkNX.Structures.FlatBuffers/Arceus/Util/ArchiveContents8a.cs index 30c11be0..f2f85992 100644 --- a/pkNX.Structures.FlatBuffers/Arceus/Util/ArchiveContents8a.cs +++ b/pkNX.Structures.FlatBuffers/Arceus/Util/ArchiveContents8a.cs @@ -1,6 +1,8 @@ using System; using System.ComponentModel; +using System.Linq; using FlatSharp.Attributes; +using pkNX.Containers; // ReSharper disable UnusedAutoPropertyAccessor.Global // ReSharper disable ClassNeverInstantiated.Global @@ -17,11 +19,31 @@ public class ArchiveContents8a : IFlatBufferArchive public byte[] Write() => FlatBufferConverter.SerializeFrom(this); [FlatBufferItem(0)] public ArchiveContent8a[] Table { get; set; } = Array.Empty(); + + public ArchiveContent8a AddEntry() + { + var entry = new ArchiveContent8a { }; + + Table = Table.Append(entry); + return entry; + } + + public ArchiveContent8a AddEntry(string archiveFile, string[] internalArchiveFiles) + { + var entry = new ArchiveContent8a + { + ArchivePathHash = FnvHash.HashFnv1a_64(archiveFile), + ArchiveContentPathHashes = internalArchiveFiles.Select(p => FnvHash.HashFnv1a_64(p)).ToArray(), + }; + + Table = Table.Append(entry); + return entry; + } } [FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] public class ArchiveContent8a { - [FlatBufferItem(00)] public ulong Field_00 { get; set; } - [FlatBufferItem(01)] public ulong[] Field_01 { get; set; } = Array.Empty(); + [FlatBufferItem(00)] public ulong ArchivePathHash { get; set; } // Eg. `bin/archive/pokemon/pm0025_00_00.gfpak` -> 0x9F0F82B368411FF + [FlatBufferItem(01)] public ulong[] ArchiveContentPathHashes { get; set; } = Array.Empty(); // Eg. `bin/pokemon/pm0025/pm0025_00_00/pm0025_00_00.trpokecfg` -> 0x132C0BBD4E633C28 } diff --git a/pkNX.Structures/Converters/AIBehaviourConverter.cs b/pkNX.Structures/Converters/AIBehaviourConverter.cs new file mode 100644 index 00000000..9ff0048b --- /dev/null +++ b/pkNX.Structures/Converters/AIBehaviourConverter.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Globalization; +using System.Linq; + +namespace pkNX.Structures; + +public class AIBehaviourConverter : TypeConverter +{ + public static HashSet BehaviourNames = new(); + + public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) + { + return sourceType == typeof(string); + } + + public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) + { + if (value is string s) + { + return BehaviourNames.FirstOrDefault(x => x.StartsWith(s)); + } + + return base.ConvertFrom(context, culture, value); + } + + public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) + { + return base.ConvertTo(context, culture, value, destinationType); + } + + public override bool GetStandardValuesSupported(ITypeDescriptorContext context) => true; + + public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) + { + return new StandardValuesCollection(BehaviourNames.ToArray()); + } +} diff --git a/pkNX.WinForms/MainEditor/EditorPLA.cs b/pkNX.WinForms/MainEditor/EditorPLA.cs index f3346835..2eda1970 100644 --- a/pkNX.WinForms/MainEditor/EditorPLA.cs +++ b/pkNX.WinForms/MainEditor/EditorPLA.cs @@ -230,6 +230,13 @@ void Randomize(IEnumerable arr) } } + [EditorCallable(EditorCategory.Pokemon)] + public void EditPokeCaptureCollision() + { + var names = ROM.GetStrings(TextName.SpeciesNames); + PopFlat(GameFile.PokeCaptureCollision, "Pokemon Capture Collision Editor", (z, _) => $"{names[z.Species]}{(z.Form == 0 ? "" : $"-{z.Form}")}"); + } + [EditorCallable(EditorCategory.Pokemon)] public void EditBuddyBattleConfig() => PopFlatConfig(GameFile.BuddyBattleConfig, "Buddy Battle Config Editor"); [EditorCallable(EditorCategory.Pokemon)] public void EditBuddyConfig() => PopFlatConfig(GameFile.BuddyConfig, "Buddy Config Editor"); [EditorCallable(EditorCategory.Pokemon)] public void EditBuddyDirectItemConfig() => PopFlatConfig(GameFile.BuddyDirectItemConfig, "Buddy Direct Item Config Editor"); @@ -551,6 +558,12 @@ public void EditPokemonResourceList() PopFlat(GameFile.PokemonResourceList, "Pokemon Resource List", (z, _) => $"{names[z.Species]}"); } + [EditorCallable(EditorCategory.Graphics)] + public void EditPokeBodyParticle() + { + var names = ROM.GetStrings(TextName.SpeciesNames); + PopFlat(GameFile.PokeBodyParticle, "Pokemon Body Particle Editor", (z, _) => $"{names[z.Species]}{(z.Form == 0 ? "" : $"-{z.Form}")}"); + } #endregion #region Items Editors @@ -665,6 +678,20 @@ public void EditAppConfigList() PopFlat(GameFile.AppConfigList, "App Config List", (z, _) => z.OriginalPath); } + [EditorCallable(EditorCategory.Misc)] + public void EditArchiveContents() + { + var ArchiveFolder = ROM.GetFilteredFolder(GameFile.ArchiveFolder); + + var paths = ArchiveFolder.GetPaths() + .Select(p => Path.GetRelativePath(ROM.PathRomFS, p).Replace('\\', '/')) + .ToDictionary(p => FnvHash.HashFnv1a_64(p)); + + PopFlat(GameFile.archive_contents, "Archive Contents Editor", + (z, _) => paths.GetValueOrDefault(z.ArchivePathHash) ?? z.ArchivePathHash.ToString("X16"), + addEntryCallback: x => x.AddEntry()); + } + [EditorCallable(EditorCategory.Misc)] public void EditPokedexRankTable() { @@ -677,6 +704,12 @@ public void EditPokedexFormStorage() //PopFlat(GameFile.DexFormStorage, "Pokedex Form Storage Editor", z => z.Rank.ToString()); } + [EditorCallable(EditorCategory.Misc)] + public void EditPokeDefaultLocator() + { + PopFlat(GameFile.PokeDefaultLocator, "Poke Default Locator Editor", (z, _) => z.Locator); + } + [EditorCallable(EditorCategory.Misc)] public void EditAppliStaffrollConfig() => PopFlatConfig(GameFile.AppliStaffrollConfig, "Appli Staffroll Config Editor"); [EditorCallable(EditorCategory.Misc)] public void EditCommonGeneralConfig() => PopFlatConfig(GameFile.CommonGeneralConfig, "Common General Config Editor"); [EditorCallable(EditorCategory.Misc)] public void EditDemoConfig() => PopFlatConfig(GameFile.DemoConfig, "Demo Config Editor");