From 9eda5f2c10e49aa4bf156f79a57024fff2bf3d23 Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 24 Feb 2021 18:44:11 -0800 Subject: [PATCH] Initial v1.8.0 Support (#452) No savefile changes apparently, just adding in new items & handling for them. Probably didn't need to duplicate the Main/Personal offset classes, but whatever. --- NHSE.Core/Hashing/FileHashInfo.cs | 2 + NHSE.Core/Hashing/FileHashRevision.cs | 12 + NHSE.Core/Resources/byte/item_kind.bin | Bin 14279 -> 14279 bytes NHSE.Core/Resources/byte/item_menuicon.bin | Bin 28558 -> 28558 bytes NHSE.Core/Resources/byte/item_size.bin | Bin 14279 -> 14279 bytes .../Resources/text/de/text_body_color_de.txt | 8 + .../Resources/text/de/text_body_parts_de.txt | 3 + NHSE.Core/Resources/text/de/text_item_de.txt | 3915 +++++++++-------- .../Resources/text/en/text_body_color_en.txt | 8 + .../Resources/text/en/text_body_parts_en.txt | 3 + NHSE.Core/Resources/text/en/text_item_en.txt | 149 +- .../Resources/text/es/text_body_color_es.txt | 8 + .../Resources/text/es/text_body_parts_es.txt | 3 + NHSE.Core/Resources/text/es/text_item_es.txt | 151 +- .../Resources/text/fr/text_body_color_fr.txt | 8 + .../Resources/text/fr/text_body_parts_fr.txt | 3 + NHSE.Core/Resources/text/fr/text_item_fr.txt | 151 +- .../Resources/text/it/text_body_color_it.txt | 8 + .../Resources/text/it/text_body_parts_it.txt | 3 + NHSE.Core/Resources/text/it/text_item_it.txt | 151 +- .../Resources/text/jp/text_body_color_jp.txt | 8 + .../Resources/text/jp/text_body_parts_jp.txt | 3 + NHSE.Core/Resources/text/jp/text_item_jp.txt | 151 +- .../Resources/text/ko/text_body_color_ko.txt | 8 + .../Resources/text/ko/text_body_parts_ko.txt | 3 + NHSE.Core/Resources/text/ko/text_item_ko.txt | 149 +- .../text/zhs/text_body_color_zhs.txt | 8 + .../text/zhs/text_body_parts_zhs.txt | 3 + .../Resources/text/zhs/text_item_zhs.txt | 151 +- .../text/zht/text_body_color_zht.txt | 8 + .../text/zht/text_body_parts_zht.txt | 3 + .../Resources/text/zht/text_item_zht.txt | 151 +- NHSE.Core/Save/Meta/RevisionChecker.cs | 4 + NHSE.Core/Save/Offsets/MainSaveOffsets.cs | 1 + NHSE.Core/Save/Offsets/MainSaveOffsets18.cs | 54 + NHSE.Core/Save/Offsets/PersonalOffsets.cs | 1 + NHSE.Core/Save/Offsets/PersonalOffsets18.cs | 48 + .../Item/FieldItem/FieldItemList.cs | 4 +- NHSE.Core/Structures/Item/ItemKind.cs | 1 + NHSE.Core/Structures/Item/ItemMenuIconType.cs | 1 + .../Item/Remake/ItemRemakeInfoData.cs | 3 + .../Structures/Item/Remake/ItemRemakeUtil.cs | 3 + NHSE.Core/Structures/RecipeList.cs | 1 + NHSE.Core/Structures/Records/EventFlagLand.cs | 3 + .../Structures/Records/EventFlagPlayer.cs | 1 + NHSE.Tests/DumpTests.cs | 2 +- NHSE.WinForms/Properties/Settings.Designer.cs | 4 +- 47 files changed, 3072 insertions(+), 2291 deletions(-) create mode 100644 NHSE.Core/Save/Offsets/MainSaveOffsets18.cs create mode 100644 NHSE.Core/Save/Offsets/PersonalOffsets18.cs diff --git a/NHSE.Core/Hashing/FileHashInfo.cs b/NHSE.Core/Hashing/FileHashInfo.cs index beeb5df..0d1ee47 100644 --- a/NHSE.Core/Hashing/FileHashInfo.cs +++ b/NHSE.Core/Hashing/FileHashInfo.cs @@ -7,6 +7,8 @@ public sealed class FileHashInfo { private readonly IReadOnlyDictionary List; + public FileHashInfo(FileHashInfo dupe) : this(dupe.List.Values) { } + public FileHashInfo(IEnumerable hashSets) { var list = new Dictionary(); diff --git a/NHSE.Core/Hashing/FileHashRevision.cs b/NHSE.Core/Hashing/FileHashRevision.cs index 33b4b1c..2af08c8 100644 --- a/NHSE.Core/Hashing/FileHashRevision.cs +++ b/NHSE.Core/Hashing/FileHashRevision.cs @@ -434,5 +434,17 @@ public static class FileHashRevision }); #endregion + + #region REVISION 1.8.0 // Same as 1.7.0 + + internal const int REV_180_MAIN = REV_170_MAIN; + internal const int REV_180_PERSONAL = REV_170_PERSONAL; + internal const int REV_180_POSTBOX = REV_170_POSTBOX; + internal const int REV_180_PHOTO = REV_120_PHOTO; + internal const int REV_180_PROFILE = REV_110_PROFILE; + + public static readonly FileHashInfo REV_180 = new(REV_170); + + #endregion } } diff --git a/NHSE.Core/Resources/byte/item_kind.bin b/NHSE.Core/Resources/byte/item_kind.bin index 9ed832bbe35f797ee4e7952e24c072db459ef5db..47ca2952d3c4bc2ad04f4c3dea1d6c196c7bb2ba 100644 GIT binary patch literal 14279 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 literal 14279 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 BEsg*H literal 28558 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 Ztu1%=d#uq&2estZ%;&x}Ga1<5{sTfx0M7sb diff --git a/NHSE.Core/Resources/byte/item_size.bin b/NHSE.Core/Resources/byte/item_size.bin index 2436f8c6385e4e2ac131fc12ec16e61784bde77d..ca235157eae139e00c76413942f5a7c349cd5868 100644 GIT binary patch delta 138 zcmX?}e>{IfGBYFdOFO%`BepB!Mu z4pdynDn9vxc=zOErfN*g%##gFB-#0xxfqz4IVKx2iA`Q$%*x5Yzzl>8qN0--8RdZ5 fN_e0q0aY=xPQGAvda{B%=j2*LvB~v}JdDf$0xTWx delta 104 zcmX?}e>{IfGBYE? SizeInfo = new[] @@ -64,6 +66,7 @@ public static class RevisionChecker SizesByRevision[5], // 1.5.1 SizesByRevision[6], // 1.6.0 SizesByRevision[7], // 1.7.0 + SizesByRevision[8], // 1.8.0 }; public static readonly IReadOnlyList HashInfo = new[] @@ -85,6 +88,7 @@ public static class RevisionChecker REV_150, // 1.5.1 REV_160, // 1.6.0 REV_170, // 1.7.0 + REV_180, // 1.7.0 }; public static bool IsRevisionKnown(this FileHeaderInfo info) => info.GetKnownRevisionIndex() >= 0; diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs index dc92d87..a2f5dbd 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs @@ -69,6 +69,7 @@ public static MainSaveOffsets GetOffsets(FileHeaderInfo Info) 14 => new MainSaveOffsets15(), 15 => new MainSaveOffsets16(), 16 => new MainSaveOffsets17(), + 17 => new MainSaveOffsets18(), _ => throw new IndexOutOfRangeException("Unknown revision!" + Environment.NewLine + Info), }; } diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets18.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets18.cs new file mode 100644 index 0000000..a8df1a6 --- /dev/null +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets18.cs @@ -0,0 +1,54 @@ +namespace NHSE.Core +{ + /// + /// + /// + /// Same as . + public class MainSaveOffsets18 : MainSaveOffsets + { + #region GSaveLand + public const int GSaveLandStart = 0x110; + public override int Animal => GSaveLandStart + 0x10; + + public override int LandMyDesign => GSaveLandStart + 0x1e2600; + public override int PatternsPRO => LandMyDesign + (PatternCount * DesignPattern.SIZE); + public override int PatternFlag => PatternsPRO + (PatternCount * DesignPatternPRO.SIZE); + public override int PatternTailor => PatternFlag + DesignPattern.SIZE; + + public const int GSaveWeather = GSaveLandStart + 0x1e23B0; + public override int WeatherArea => GSaveWeather + 0x14; // Hemisphere + public override int WeatherRandSeed => GSaveWeather + 0x18; + + public override int EventFlagLand => GSaveLandStart + 0x20a408; + + // GSaveMainField + public const int GSaveMainFieldStart = GSaveLandStart + 0x20ac08; + public override int FieldItem => GSaveMainFieldStart + 0x00000; + public override int LandMakingMap => GSaveMainFieldStart + 0xAAA00; + public override int MainFieldStructure => GSaveMainFieldStart + 0xCF600; + public override int OutsideField => GSaveMainFieldStart + 0xCF998; + public override int MyDesignMap => GSaveMainFieldStart + 0xCFA34; + + public override int PlayerHouseList => GSaveLandStart + 0x2e5634; + public override int NpcHouseList => GSaveLandStart + 0x417634; + + public const int GSaveShop = GSaveLandStart + 0x41887c; + public override int ShopKabu => GSaveShop + 0x2cb0; // part of shop; tailor increased size + public override int Museum => GSaveLandStart + 0x41bba0; + public override int Visitor => GSaveLandStart + 0x41efa4; + public override int SaveFg => GSaveLandStart + 0x41f1d4; + public override int BulletinBoard => GSaveLandStart + 0x41fb18; + public override int AirportThemeColor => GSaveLandStart + 0x500720; + #endregion + + #region GSaveLandOther + public const int GSaveLandOtherStart = 0x504470; + + public override int LostItemBox => GSaveLandOtherStart + 0x340680; + public override int LastSavedTime => GSaveLandOtherStart + 0x344f18; + #endregion + + public override int VillagerSize => Villager2.SIZE; + public override IVillager ReadVillager(byte[] data) => new Villager2(data); + } +} diff --git a/NHSE.Core/Save/Offsets/PersonalOffsets.cs b/NHSE.Core/Save/Offsets/PersonalOffsets.cs index d0adb53..6b2bad2 100644 --- a/NHSE.Core/Save/Offsets/PersonalOffsets.cs +++ b/NHSE.Core/Save/Offsets/PersonalOffsets.cs @@ -61,6 +61,7 @@ public static PersonalOffsets GetOffsets(FileHeaderInfo Info) 14 => new PersonalOffsets15(), 15 => new PersonalOffsets16(), 16 => new PersonalOffsets17(), + 17 => new PersonalOffsets18(), _ => throw new IndexOutOfRangeException("Unknown revision!" + Environment.NewLine + Info), }; } diff --git a/NHSE.Core/Save/Offsets/PersonalOffsets18.cs b/NHSE.Core/Save/Offsets/PersonalOffsets18.cs new file mode 100644 index 0000000..0a94a98 --- /dev/null +++ b/NHSE.Core/Save/Offsets/PersonalOffsets18.cs @@ -0,0 +1,48 @@ +namespace NHSE.Core +{ + /// + /// + /// + /// Same as . + public sealed class PersonalOffsets18 : PersonalOffsets + { + private const int Player = 0x110; + + public override int PersonalId => Player + 0xAFA8; + public override int EventFlagsPlayer => Player + 0xAFE0; + + private const int GSaveLifeSupport = Player + 0xBFE0; + public override int CountAchievement => GSaveLifeSupport + 0xE98; // CountAchievement + + public override int NowPoint => GSaveLifeSupport + 0x5498; // Nook Miles + public override int TotalPoint => NowPoint + 8; // Total Nook Miles Earned + public override int Birthday => Player + 0x1228c; + + public override int ProfileMain => Player + 0x122a0; + public override int ProfilePhoto => ProfileMain + 0x14; + public override int ProfileBirthday => ProfileMain + 0x23058; + public override int ProfileFruit => ProfileMain + 0x2305C; + public override int ProfileTimestamp => ProfileMain + 0x230CC; + public override int ProfileIsMakeVillage => ProfileMain + 0x230D0; + + // end player + + private const int PlayerOther = 0x36a50; + + public override int Pockets1 => PlayerOther + 0x10; + public override int Pockets2 => Pockets1 + (8 * Pockets1Count) + 0x18; + public override int Wallet => Pockets2 + (8 * Pockets2Count) + 0x18; + public override int ItemChest => PlayerOther + 0x18C; + public override int ItemCollectBit => PlayerOther + 0xA058; + public override int ItemRemakeCollectBit => PlayerOther + 0xA7AC; + public override int Manpu => PlayerOther + 0xAF7C; + public override int Bank => PlayerOther + 0x22594; + public override int Recipes => Bank + 0x10; + + public override int MaxRecipeID => 0x308; + public override int MaxRemakeBitFlag => 0x7D0 * 32; + + public override IReactionStore ReadReactions(byte[] data) => data.Slice(Manpu, GSavePlayerManpu15.SIZE).ToStructure(); + public override void SetReactions(byte[] data, IReactionStore value) => ((GSavePlayerManpu15)value).ToBytes().CopyTo(data, Manpu); + } +} \ No newline at end of file diff --git a/NHSE.Core/Structures/Item/FieldItem/FieldItemList.cs b/NHSE.Core/Structures/Item/FieldItem/FieldItemList.cs index 9a87b27..9756f6b 100644 --- a/NHSE.Core/Structures/Item/FieldItem/FieldItemList.cs +++ b/NHSE.Core/Structures/Item/FieldItem/FieldItemList.cs @@ -423,12 +423,10 @@ public static ItemKind GetFieldItemKind(ushort id) {0xED06, new FieldItemDefinition(60678, 12489, 65534, "PltBushCamellia4Red" , FieldItemKind.PltBushCamellia )}, // ツバキ赤(成木花) {0xED07, new FieldItemDefinition(60679, 12489, 65534, "PltBushCamellia5Red" , FieldItemKind.PltBushCamellia )}, // ツバキ赤(成木花なし) {0xED08, new FieldItemDefinition(60680, 65534, 12758, "FenceIkegaki" , FieldItemKind.FenceIkegaki )}, // いけがきの柵 - {0xED0B, new FieldItemDefinition(60683, 65534, 2213 , "FenceJuneBride3" , FieldItemKind.FenceJuneBride )}, // ジューンブライドな柵緑 {0xED0C, new FieldItemDefinition(60684, 65534, 12630, "FenceEasterEgg" , FieldItemKind.FenceEasterEgg )}, // イースターの柵 {0xED0D, new FieldItemDefinition(60685, 65534, 12894, "FenceJuneBride" , FieldItemKind.FenceJuneBride )}, // ジューンブライドな柵 - {0xED0E, new FieldItemDefinition(60686, 65534, 2213 , "FenceJuneBride1" , FieldItemKind.FenceJuneBride )}, // ジューンブライドな柵ピンク {0xED16, new FieldItemDefinition(60694, 2799 , 65534, "PltTreeEasterEgg" , FieldItemKind.PltTreeOak )}, // イースターのタマゴの木 - {0xED21, new FieldItemDefinition(60705, 65534, 2213 , "FenceMermaid" , FieldItemKind.FenceMermaid )}, // マーメイドな柵 + {0xED21, new FieldItemDefinition(60705, 65534, 14278, "FenceMermaid" , FieldItemKind.FenceMermaid )}, // マーメイドな柵 {0xED25, new FieldItemDefinition(60709, 65534, 13275, "FenceHalloween" , FieldItemKind.FenceHalloween )}, // ハロウィンのさく {0xED3F, new FieldItemDefinition(60735, 3052 , 65534, "PltVgtSquash0" , FieldItemKind.PltVgtPumpkin )}, // カボチャ(苗) {0xED40, new FieldItemDefinition(60736, 3053 , 65534, "PltVgtSquash1" , FieldItemKind.PltVgtPumpkin )}, // カボチャ(成長1) diff --git a/NHSE.Core/Structures/Item/ItemKind.cs b/NHSE.Core/Structures/Item/ItemKind.cs index 9806cfd..ca2c1a4 100644 --- a/NHSE.Core/Structures/Item/ItemKind.cs +++ b/NHSE.Core/Structures/Item/ItemKind.cs @@ -128,6 +128,7 @@ public enum ItemKind : byte Kind_SequenceOnly, Kind_ShellDrift, Kind_ShellFish, + Kind_Shoes, Kind_Shovel, Kind_Slingshot, Kind_SlopeItem, diff --git a/NHSE.Core/Structures/Item/ItemMenuIconType.cs b/NHSE.Core/Structures/Item/ItemMenuIconType.cs index fbb6abd..7d39f1d 100644 --- a/NHSE.Core/Structures/Item/ItemMenuIconType.cs +++ b/NHSE.Core/Structures/Item/ItemMenuIconType.cs @@ -5,6 +5,7 @@ namespace NHSE.Core /// public enum ItemMenuIconType : ushort { + _0xE40569D4, Akoyagai, Amaebi, Anemone0, diff --git a/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs b/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs index 4b83819..76f1865 100644 --- a/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs +++ b/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs @@ -717,7 +717,10 @@ public static class ItemRemakeInfoData {1508, new ItemRemakeInfo(1508, 13820, 1, new byte[] {00, 06, 14, 14, 14, 14, 14, 14}, new byte[] {12, 12, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // Turkey Day table setting {1509, new ItemRemakeInfo(1509, 13818, 1, new byte[] {12, 06, 14, 14, 14, 14, 14, 14}, new byte[] {00, 06, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // Turkey Day casserole {1510, new ItemRemakeInfo(1510, 13819, 1, new byte[] {09, 07, 14, 14, 14, 14, 14, 14}, new byte[] {08, 06, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // Turkey Day wheat decor + {1511, new ItemRemakeInfo(1511, 13829, 1, new byte[] {06, 01, 14, 14, 14, 14, 14, 14}, new byte[] {08, 08, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // Shell {1516, new ItemRemakeInfo(1516, 13488, 3, new byte[] {09, 10, 12, 02, 14, 14, 14, 14}, new byte[] {01, 07, 04, 05, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // chocolate heart + {1522, new ItemRemakeInfo(1522, 13831, 2, new byte[] {01, 04, 06, 14, 14, 14, 14, 14}, new byte[] {08, 08, 08, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // large Mushroom Platform + {1523, new ItemRemakeInfo(1523, 13832, 2, new byte[] {07, 02, 06, 14, 14, 14, 14, 14}, new byte[] {08, 08, 08, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // small Mushroom Platform {1524, new ItemRemakeInfo(1524, 13930, 5, new byte[] {13, 02, 04, 11, 01, 11, 14, 14}, new byte[] {13, 12, 05, 04, 12, 08, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // set of stockings {1546, new ItemRemakeInfo(1546, 14029, 5, new byte[] {01, 02, 07, 03, 12, 10, 14, 14}, new byte[] {12, 12, 00, 12, 06, 11, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, false)}, // heart-shaped bouquet }; diff --git a/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs b/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs index 78465d8..e47fb7e 100644 --- a/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs +++ b/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs @@ -1122,6 +1122,9 @@ public static class ItemRemakeUtil {13818, 1509}, // Turkey Day casserole {13819, 1510}, // Turkey Day wheat decor {13820, 1508}, // Turkey Day table setting + {13829, 1511}, // Shell + {13831, 1522}, // large Mushroom Platform + {13832, 1523}, // small Mushroom Platform {13862, 0652}, // Jingle's photo {13930, 1524}, // set of stockings {14029, 1546}, // heart-shaped bouquet diff --git a/NHSE.Core/Structures/RecipeList.cs b/NHSE.Core/Structures/RecipeList.cs index cd00a7d..7c0ce1d 100644 --- a/NHSE.Core/Structures/RecipeList.cs +++ b/NHSE.Core/Structures/RecipeList.cs @@ -644,6 +644,7 @@ public static class RecipeList {0x2F0, 13603}, // falling-snow wall {0x2F3, 03548}, // rainbow feather {0x2F5, 12217}, // summer-shell rug + {0x306, 14239}, // shamrock wand {0x308, 14278}, // mermaid fence }; } diff --git a/NHSE.Core/Structures/Records/EventFlagLand.cs b/NHSE.Core/Structures/Records/EventFlagLand.cs index 1f6d77e..f22f7bc 100644 --- a/NHSE.Core/Structures/Records/EventFlagLand.cs +++ b/NHSE.Core/Structures/Records/EventFlagLand.cs @@ -369,8 +369,11 @@ public EventFlagLand(short init, short max, ushort index, string name) {0x198, new EventFlagLand(0 , -1 , 0408, "ShopHeartFlowerSelect" )}, // ハートのバラブーケ抽選済みカラバリ {0x199, new EventFlagLand(0 , -1 , 0409, "RandomKey6" )}, // ランダムキーf {0x19A, new EventFlagLand(0 , -1 , 0410, "RandomKey7" )}, // ランダムキーg + {0x19B, new EventFlagLand(0 , -1 , 0411, "RandomKey8" )}, // ランダムキーh {0x19C, new EventFlagLand(0 , 1 , 0412, "BCAT_EventFlag_006" )}, // クリスマスイブ解禁 {0x19D, new EventFlagLand(0 , 1 , 0413, "BCAT_EventFlag_007" )}, // カーニバル本番、バレンタイン本番解禁 + {0x19E, new EventFlagLand(0 , 1 , 0414, "BCAT_EventFlag_008" )}, // マリオコラボ解禁 + {0x19F, new EventFlagLand(0 , 1 , 0415, "GrowUpAfterPatch1_8" )}, // 1.8適用して成長処理をした {0x1A3, new EventFlagLand(0 , 9999 , 0419, "ValentineAddBbsYear" )}, // バレンタイン予告の掲示板書き込みをした年 {0x1A4, new EventFlagLand(0 , 9999 , 0420, "CarnivalAddBbsYear" )}, // カーニバル予告の掲示板書き込みをした年 {0x1A5, new EventFlagLand(0 , 1 , 0421, "CarnivalNpcFeatherColorDecided" )}, // カーニバル|NPCが欲しがる羽の色決定済み diff --git a/NHSE.Core/Structures/Records/EventFlagPlayer.cs b/NHSE.Core/Structures/Records/EventFlagPlayer.cs index 2dd63aa..aa9326b 100644 --- a/NHSE.Core/Structures/Records/EventFlagPlayer.cs +++ b/NHSE.Core/Structures/Records/EventFlagPlayer.cs @@ -1090,6 +1090,7 @@ public EventFlagPlayer(short init, short max, ushort index, string name) {0x537, new EventFlagPlayer(0 , 1 , 1335, "RcmChkReactionBook" )}, // カーニバル用リアクション本をチェックした {0x538, new EventFlagPlayer(0 , 1 , 1336, "RcmChkCarnivalFtr" )}, // まめきち|カーニバル家具チェックした? {0x539, new EventFlagPlayer(0 , 1 , 1337, "AnnounceCarnival" )}, // カーニバル|当日に島内放送で告知した? + {0x53A, new EventFlagPlayer(0 , 1 , 1338, "ShootDownShamrockRecipeBalloon" )}, // シャムロックデー|今日、シャムロックステッキのレシピ風船を撃ち落としたか }; private const string Unknown = "???"; diff --git a/NHSE.Tests/DumpTests.cs b/NHSE.Tests/DumpTests.cs index 5183fe9..815786d 100644 --- a/NHSE.Tests/DumpTests.cs +++ b/NHSE.Tests/DumpTests.cs @@ -7,7 +7,7 @@ public static class DumpTests { private const string RepoPath = @"C:\Users\Kurt\Documents\GitHub"; private const string PatchDumpPath = @"D:\Kurt\Desktop\" + PatchFolderName; - private const string PatchFolderName = "v17"; + private const string PatchFolderName = "v18"; private const string MessageDumpFormat = @"Message\String_{0}"; [Fact] diff --git a/NHSE.WinForms/Properties/Settings.Designer.cs b/NHSE.WinForms/Properties/Settings.Designer.cs index 031d2e3..55ff5ff 100644 --- a/NHSE.WinForms/Properties/Settings.Designer.cs +++ b/NHSE.WinForms/Properties/Settings.Designer.cs @@ -73,7 +73,7 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2906423256")] + [global::System.Configuration.DefaultSettingValueAttribute("0")] public uint SysBotPouchOffset { get { return ((uint)(this["SysBotPouchOffset"])); @@ -85,7 +85,7 @@ internal sealed partial class Settings : global::System.Configuration.Applicatio [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("2906423256")] + [global::System.Configuration.DefaultSettingValueAttribute("0")] public uint SysBotGenericOffset { get { return ((uint)(this["SysBotGenericOffset"]));