diff --git a/pkNX.Game/File/GameFile.cs b/pkNX.Game/File/GameFile.cs index 4730b99c..031dd484 100644 --- a/pkNX.Game/File/GameFile.cs +++ b/pkNX.Game/File/GameFile.cs @@ -215,5 +215,9 @@ public enum GameFile AppConfigList, HaShop, + NewHugeGroup, + NewHugeGroupLottery, + NewHugeLottery, + NewHugeTimeLimit, } } diff --git a/pkNX.Game/File/GameFileMapping.cs b/pkNX.Game/File/GameFileMapping.cs index ebab5bda..be7c826f 100644 --- a/pkNX.Game/File/GameFileMapping.cs +++ b/pkNX.Game/File/GameFileMapping.cs @@ -252,6 +252,11 @@ internal void SaveAll() new(GameFile.SizeScaleConfig, ContainerType.SingleFile, "bin", "misc", "app_config", "pokemon_size_category_adjust_scale_config.bin"), new(GameFile.SymbolBehave, ContainerType.SingleFile, "bin", "pokemon", "data", "poke_ai.bin"), + new(GameFile.NewHugeGroup, ContainerType.SingleFile, "bin", "field", "encount", "new_huge_outbreak_group.bin"), + new(GameFile.NewHugeGroupLottery, ContainerType.SingleFile, "bin", "field", "encount", "new_huge_outbreak_group_lottery.bin"), + new(GameFile.NewHugeLottery, ContainerType.SingleFile, "bin", "field", "encount", "new_huge_outbreak_lottery.bin"), + new(GameFile.NewHugeTimeLimit, ContainerType.SingleFile, "bin", "field", "encount", "new_huge_outbreak_time_limit.bin"), + // Cutscenes bin\demo // Models bin\archive\pokemon // pretty much everything is obviously named :) diff --git a/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakGroup8a.cs b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakGroup8a.cs new file mode 100644 index 00000000..7d6ca011 --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakGroup8a.cs @@ -0,0 +1,37 @@ +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; + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakGroupLotteryArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(0)] public NewHugeOutbreakGroupLottery8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakGroupLottery8a +{ + [FlatBufferItem(00)] public ulong Field_00 { get; set; } + [FlatBufferItem(01)] public NewHugeOutbreakGroupLotteryDetail8a[] Table1 { get; set; } = Array.Empty(); + [FlatBufferItem(02)] public NewHugeOutbreakGroupLotteryDetail8a[] Table2 { get; set; } = Array.Empty(); + [FlatBufferItem(03)] public NewHugeOutbreakGroupLotteryDetail8a[] Table3 { get; set; } = Array.Empty(); + [FlatBufferItem(04)] public ulong Field_02 { get; set; } +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakGroupLotteryDetail8a +{ + [FlatBufferItem(00)] public ulong Field_00 { get; set; } + [FlatBufferItem(01)] public int Field_01 { get; set; } +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakGroupLottery8a.cs b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakGroupLottery8a.cs new file mode 100644 index 00000000..00c7cd63 --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakGroupLottery8a.cs @@ -0,0 +1,42 @@ +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; + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakGroupArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(0)] public NewHugeOutbreakGroup8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakGroup8a : IFlatBufferArchive +{ + [FlatBufferItem(00)] public ulong Field_00 { get; set; } + [FlatBufferItem(01)] public NewHugeOutbreakDetail8a[] Table { get; set; } = Array.Empty(); + [FlatBufferItem(02)] public ulong Field_02 { get; set; } +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakDetail8a : IHasCondition8a +{ + [FlatBufferItem(0)] public ConditionType8a ConditionTypeID { get; set; } + [FlatBufferItem(1)] public Condition8a ConditionID { get; set; } + [FlatBufferItem(2)] public string ConditionArg1 { get; set; } = string.Empty; + [FlatBufferItem(3)] public string ConditionArg2 { get; set; } = string.Empty; + [FlatBufferItem(4)] public string ConditionArg3 { get; set; } = string.Empty; + [FlatBufferItem(5)] public string ConditionArg4 { get; set; } = string.Empty; + [FlatBufferItem(6)] public string ConditionArg5 { get; set; } = string.Empty; + [FlatBufferItem(7)] public ulong Field_07 { get; set; } + [FlatBufferItem(8)] public int Rate { get; set; } +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakLottery8a.cs b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakLottery8a.cs new file mode 100644 index 00000000..bea0381b --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakLottery8a.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; + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakLotteryArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(0)] public NewHugeOutbreakLottery8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakLottery8a +{ + [FlatBufferItem(00)] public ulong Hash { get; set; } + [FlatBufferItem(01)] public string Field_01 { get; set; } = string.Empty; + [FlatBufferItem(02)] public int Field_02 { get; set; } + [FlatBufferItem(03)] public int Field_03 { get; set; } + [FlatBufferItem(04)] public int Field_04 { get; set; } + [FlatBufferItem(05)] public int Field_05 { get; set; } + [FlatBufferItem(06)] public int Field_06 { get; set; } + [FlatBufferItem(07)] public int Field_07 { get; set; } + [FlatBufferItem(08)] public int Field_08 { get; set; } + [FlatBufferItem(09)] public int Field_09 { get; set; } + [FlatBufferItem(10)] public int Field_10 { get; set; } + [FlatBufferItem(11)] public int Field_11 { get; set; } + [FlatBufferItem(12)] public int Field_12 { get; set; } + [FlatBufferItem(13)] public int Field_13 { get; set; } + [FlatBufferItem(14)] public int Field_14 { get; set; } + [FlatBufferItem(15)] public string[] Field_15 { get; set; } = Array.Empty(); + [FlatBufferItem(16)] public int[] Field_16 { get; set; } = Array.Empty(); + [FlatBufferItem(17)] public int[] Field_17 { get; set; } = Array.Empty(); +} diff --git a/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakTimeLimit8a.cs b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakTimeLimit8a.cs new file mode 100644 index 00000000..cfa7ffeb --- /dev/null +++ b/pkNX.Structures.FlatBuffers/Arceus/NewHuge/NewHugeOutbreakTimeLimit8a.cs @@ -0,0 +1,29 @@ +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; + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakTimeLimitArchive8a : IFlatBufferArchive +{ + public byte[] Write() => FlatBufferConverter.SerializeFrom(this); + + [FlatBufferItem(0)] public NewHugeOutbreakTimeLimit8a[] Table { get; set; } = Array.Empty(); +} + +[FlatBufferTable, TypeConverter(typeof(ExpandableObjectConverter))] +public class NewHugeOutbreakTimeLimit8a +{ + [FlatBufferItem(00)] public int Field_00 { get; set; } // not sure, is this instead pointing to 0x10 bytes 0-F? + [FlatBufferItem(01)] public int Field_01 { get; set; } + [FlatBufferItem(02)] public int[] Field_02 { get; set; } = Array.Empty(); + [FlatBufferItem(03)] public int[] Field_03 { get; set; } = Array.Empty(); +} diff --git a/pkNX.WinForms/MainEditor/EditorPLA.cs b/pkNX.WinForms/MainEditor/EditorPLA.cs index 99df2094..3ea5eaa3 100644 --- a/pkNX.WinForms/MainEditor/EditorPLA.cs +++ b/pkNX.WinForms/MainEditor/EditorPLA.cs @@ -407,9 +407,19 @@ public void PopFlatConfig(GameFile file, string title) public void EditSize_Scale_Config() => PopFlatConfig(GameFile.SizeScaleConfig, "Size Scale Config Editor"); public void EditOutbreakDetail() - { - PopFlat(GameFile.Outbreak, "Outbreak Proc Editor", z => z.WorkValueName); - } + => PopFlat(GameFile.Outbreak, "Outbreak Proc Editor", z => z.WorkValueName); + + public void EditNewOutbreak_Group() + => PopFlat(GameFile.NewHugeGroup, "New Outbreak Group Editor", z => z.Field_00.ToString("X16")); + + public void EditNewOutbreak_GroupLottery() + => PopFlat(GameFile.NewHugeGroupLottery, "New Outbreak Group Lottery Editor", z => z.Field_00.ToString("X16")); + + public void EditNewOutbreak_Lottery() + => PopFlat(GameFile.NewHugeLottery, "New Outbreak Lottery Editor", z => z.Hash.ToString("X16")); + + public void EditNewOutbreak_TimeLimit() + => PopFlat(GameFile.NewHugeTimeLimit, "New Outbreak Time Limit Editor", z => z.Field_00.ToString()); public void EditSymbolBehave() {