diff --git a/NHSE.Core/Resources/byte/item_kind.bin b/NHSE.Core/Resources/byte/item_kind.bin index c1cc306..cb923ab 100644 Binary files a/NHSE.Core/Resources/byte/item_kind.bin and b/NHSE.Core/Resources/byte/item_kind.bin differ diff --git a/NHSE.Core/Resources/byte/item_menuicon.bin b/NHSE.Core/Resources/byte/item_menuicon.bin index 9fcf28e..5d3305b 100644 Binary files a/NHSE.Core/Resources/byte/item_menuicon.bin and b/NHSE.Core/Resources/byte/item_menuicon.bin differ diff --git a/NHSE.Core/Resources/byte/item_size.bin b/NHSE.Core/Resources/byte/item_size.bin index fbf42b7..657a9ea 100644 Binary files a/NHSE.Core/Resources/byte/item_size.bin and b/NHSE.Core/Resources/byte/item_size.bin differ diff --git a/NHSE.Core/Structures/Item/ItemInfo.cs b/NHSE.Core/Structures/Item/ItemInfo.cs index 7eee5dd..c2d3c60 100644 --- a/NHSE.Core/Structures/Item/ItemInfo.cs +++ b/NHSE.Core/Structures/Item/ItemInfo.cs @@ -98,6 +98,7 @@ public static bool TryGetMaxStackCount(ushort id, out ushort max) {Kind_Megaphone, 00001}, {Kind_SoySet, 00001}, {Kind_MaracasCarnival, 00001}, + {Kind_FlowerShower, 00001}, {Kind_TreeSeedling, 00010}, {Kind_Tree, 00001}, {Kind_BushSeedling, 00010}, diff --git a/NHSE.Core/Structures/Item/ItemKind.cs b/NHSE.Core/Structures/Item/ItemKind.cs index ca2c1a4..c615ced 100644 --- a/NHSE.Core/Structures/Item/ItemKind.cs +++ b/NHSE.Core/Structures/Item/ItemKind.cs @@ -61,6 +61,7 @@ public enum ItemKind : byte Kind_Flower, Kind_FlowerBud, Kind_FlowerSeed, + Kind_FlowerShower, Kind_Fossil, Kind_FossilUnknown, Kind_Fruit, diff --git a/NHSE.Core/Structures/Item/ItemMenuIconType.cs b/NHSE.Core/Structures/Item/ItemMenuIconType.cs index c00e03c..5db0786 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 { + _0x19191B2D, Akoyagai, Amaebi, Anemone0, diff --git a/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs b/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs index 0019787..e127e29 100644 --- a/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs +++ b/NHSE.Core/Structures/Item/Remake/ItemRemakeInfoData.cs @@ -725,6 +725,9 @@ public static class ItemRemakeInfoData {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 {1615, new ItemRemakeInfo(1615, 14340, 2, new byte[] {01, 06, 07, 14, 14, 14, 14, 14}, new byte[] {11, 11, 11, 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)}, // whoopee cushion + {1640, new ItemRemakeInfo(1640, 14476, 2, new byte[] {12, 04, 09, 14, 14, 14, 14, 14}, new byte[] {02, 05, 01, 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)}, // nuptial bell + {1641, new ItemRemakeInfo(1641, 14477, 2, new byte[] {12, 05, 01, 14, 14, 14, 14, 14}, new byte[] {02, 04, 12, 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)}, // nuptial ring pillow + {1642, new ItemRemakeInfo(1642, 14475, 2, new byte[] {02, 05, 01, 14, 14, 14, 14, 14}, new byte[] {12, 04, 12, 14, 14, 14, 14, 14}, new byte[] {14, 14, 14, 14, 14, 14, 14, 14}, new byte[] {12, 12, 12, 14, 14, 14, 14, 14}, false)}, // nuptial doorplate }; } } diff --git a/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs b/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs index 24a0371..d041c5a 100644 --- a/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs +++ b/NHSE.Core/Structures/Item/Remake/ItemRemakeUtil.cs @@ -1139,6 +1139,10 @@ public static class ItemRemakeUtil {14255, 0652}, // Timmy and Tommy's photo {14256, 0652}, // Isabelle's photo {14340, 1615}, // whoopee cushion + {14472, 0652}, // Rover's photo + {14475, 1642}, // nuptial doorplate + {14476, 1640}, // nuptial bell + {14477, 1641}, // nuptial ring pillow }; } } diff --git a/NHSE.Core/Structures/Records/EventFlagLand.cs b/NHSE.Core/Structures/Records/EventFlagLand.cs index 977df1a..7b00cea 100644 --- a/NHSE.Core/Structures/Records/EventFlagLand.cs +++ b/NHSE.Core/Structures/Records/EventFlagLand.cs @@ -316,10 +316,10 @@ public EventFlagLand(short init, short max, ushort index, string name) {0x159, new EventFlagLand(0 , 1 , 0345, "EarthdaySloFirstVisitToday" )}, // 今日がアースデーの初回レイジ来訪日 {0x15A, new EventFlagLand(0 , 1 , 0346, "IsDreamingBed" )}, // ゆめみ用ベッドある? {0x15B, new EventFlagLand(0 , 1 , 0347, "UnlockJuneBrideSeq" )}, // ゲーム進行的にジューンブライド解禁 - {0x15C, new EventFlagLand(0 , -1 , 0348, "RandomKey1" )}, // ランダムキーa - {0x15D, new EventFlagLand(0 , -1 , 0349, "RandomKey2" )}, // ランダムキーb - {0x15E, new EventFlagLand(0 , -1 , 0350, "RandomKey3" )}, // ランダムキーc - {0x15F, new EventFlagLand(0 , -1 , 0351, "RandomKey4" )}, // ランダムキーd + {0x15C, new EventFlagLand(0 , -1 , 0348, "RandomKey1" )}, // ランダムキー1 + {0x15D, new EventFlagLand(0 , -1 , 0349, "RandomKey2" )}, // ランダムキー2 + {0x15E, new EventFlagLand(0 , -1 , 0350, "RandomKey3" )}, // ランダムキー3 + {0x15F, new EventFlagLand(0 , -1 , 0351, "RandomKey4" )}, // ランダムキー4 {0x160, new EventFlagLand(0 , 1 , 0352, "FoxPreVisitAlreadyBuyToday" )}, // つねきち|今日誰かが事前来訪中に美術品を買った {0x161, new EventFlagLand(0 , 1 , 0353, "RcoHasResolvedMoveKitBug" )}, // いせつキットバグを解消したか {0x162, new EventFlagLand(0 , 1 , 0354, "TapDreamEnable" )}, // ゆめみ|ゆめみ機能解禁か? @@ -363,27 +363,36 @@ public EventFlagLand(short init, short max, ushort index, string name) {0x192, new EventFlagLand(0 , 1 , 0402, "GrowUpAfterPatch1_7" )}, // 1.7適用して成長処理をした {0x193, new EventFlagLand(0 , 9999 , 0403, "XmasEveAddBbsYear" )}, // クリスマス予告の掲示板書き込みをした年 {0x194, new EventFlagLand(0 , 1 , 0404, "BCAT_EventFlag_005" )}, // クリスマス準備期間解禁 - {0x195, new EventFlagLand(0 , -1 , 0405, "RandomKey5" )}, // ランダムキーe + {0x195, new EventFlagLand(0 , -1 , 0405, "RandomKey5" )}, // ランダムキー5 {0x196, new EventFlagLand(0 , 1 , 0406, "ShopSocksFlag" )}, // かべかけソックス当選済み {0x197, new EventFlagLand(0 , -1 , 0407, "ShopHeartChocoSelect" )}, // ハートのチョコレート抽選済みカラバリ {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 + {0x199, new EventFlagLand(0 , -1 , 0409, "RandomKey6" )}, // ランダムキー6 + {0x19A, new EventFlagLand(0 , -1 , 0410, "RandomKey7" )}, // ランダムキー7 + {0x19B, new EventFlagLand(0 , -1 , 0411, "RandomKey8" )}, // ランダムキー8 {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適用して成長処理をした {0x1A0, new EventFlagLand(0 , 1 , 0416, "GrowUpAfterPatch1_9" )}, // 1.9適用して成長処理をした - {0x1A1, new EventFlagLand(0 , -1 , 0417, "RandomKey9" )}, // ランダムキーi + {0x1A1, new EventFlagLand(0 , -1 , 0417, "RandomKey9" )}, // ランダムキー9 {0x1A2, new EventFlagLand(0 , 1 , 0418, "BCAT_EventFlag_009" )}, // イースター2年目準備解禁 {0x1A3, new EventFlagLand(0 , 9999 , 0419, "ValentineAddBbsYear" )}, // バレンタイン予告の掲示板書き込みをした年 {0x1A4, new EventFlagLand(0 , 9999 , 0420, "CarnivalAddBbsYear" )}, // カーニバル予告の掲示板書き込みをした年 {0x1A5, new EventFlagLand(0 , 1 , 0421, "CarnivalNpcFeatherColorDecided" )}, // カーニバル|NPCが欲しがる羽の色決定済み {0x1A6, new EventFlagLand(0 , 1 , 0422, "CarnivalEventPlazaNpcWander" )}, // カーニバル|広場行動NPCがぶらつくか {0x1AD, new EventFlagLand(0 , 1 , 0429, "BCAT_EventFlag_010" )}, // イースター2年目本番解禁 - {0x1AE, new EventFlagLand(0 , -1 , 0430, "RandomKey10" )}, // ランダムキーj + {0x1AE, new EventFlagLand(0 , -1 , 0430, "RandomKey10" )}, // ランダムキー10 {0x1B5, new EventFlagLand(0 , 1 , 0437, "AOC_EventFlag_002" )}, // AOC同期フラグ| 002 1.9.0NSO加入特典 + {0x1B6, new EventFlagLand(0 , 1 , 0438, "BCAT_EventFlag_011" )}, // ジューンブライド2年目解禁 + {0x1B7, new EventFlagLand(0 , -1 , 0439, "RandomKey11" )}, // ランダムキー11 + {0x1B8, new EventFlagLand(0 , 50 , 0440, "MuseumArtStampRackLotID1" )}, // 国際ミュージアム|1つ目の美術品のスタンプ台ID + {0x1B9, new EventFlagLand(0 , 50 , 0441, "MuseumArtStampRackLotID2" )}, // 国際ミュージアム|2つ目の美術品のスタンプ台ID + {0x1BA, new EventFlagLand(0 , 50 , 0442, "MuseumArtStampRackLotID3" )}, // 国際ミュージアム|3つ目の美術品のスタンプ台ID + {0x1D2, new EventFlagLand(0 , 1 , 0466, "EventObjFlag1" )}, // イベントオブジェフラグ1 + {0x1D3, new EventFlagLand(0 , 1 , 0467, "EventObjFlag2" )}, // イベントオブジェフラグ2 + {0x1DD, new EventFlagLand(0 , 1 , 0477, "GrowUpAfterPatch1_10" )}, // 1.10適用して成長処理をした + {0x1E3, new EventFlagLand(0 , 9999 , 0483, "MayDayAddBbsYear" )}, // メーデー予告の掲示板書き込みをした年 }; private const string Unknown = "???"; diff --git a/NHSE.Core/Structures/Records/EventFlagPlayer.cs b/NHSE.Core/Structures/Records/EventFlagPlayer.cs index fd21006..2a537b1 100644 --- a/NHSE.Core/Structures/Records/EventFlagPlayer.cs +++ b/NHSE.Core/Structures/Records/EventFlagPlayer.cs @@ -795,7 +795,7 @@ public EventFlagPlayer(short init, short max, ushort index, string name) {0x3B3, new EventFlagPlayer(0 , 1 , 0947, "JuneBridePlacementDataClearFlag" )}, // ジューンブライド|配置データクリア {0x3B4, new EventFlagPlayer(0 , 1 , 0948, "SloGetHedge" )}, // レイジ|レイジから「いけがき」をもらった? {0x3B5, new EventFlagPlayer(0 , 1 , 0949, "XctGerReward" )}, // メーデー|みしらぬネコから報酬をもらった? - {0x3B6, new EventFlagPlayer(0 , 1 , 0950, "SpnJuneBrideClearTalkFrag" )}, // パニエル/ジューンブライド|今日クリア後の会話した? + {0x3B6, new EventFlagPlayer(0 , 1 , 0950, "SpnJuneBrideClearTalkFrag" )}, // パニエル/ジューンブライド|今年クリア後の会話した? {0x3B7, new EventFlagPlayer(0 , 1 , 0951, "AlwJuneBrideTalkBeforeFlag" )}, // リサ/ジューンブライド|面識ある? {0x3B8, new EventFlagPlayer(0 , 1 , 0952, "AlpJuneBrideTalkBeforeFlag" )}, // カイゾー/ジューンブライド|面識ある? {0x3B9, new EventFlagPlayer(0 , 1 , 0953, "SpnJuneBrideTalkEventFrag" )}, // パニエル/ジューンブライド|今年イベント期間中に会話した? @@ -1056,7 +1056,7 @@ public EventFlagPlayer(short init, short max, ushort index, string name) {0x500, new EventFlagPlayer(0 , 1 , 1280, "ChristmasWrappingPresentFlag" )}, // クリスマス|ラッピングを誰かくれようとしたか? {0x501, new EventFlagPlayer(0 , 1 , 1281, "PckRecipeFlag" )}, // カーニバル/べルリーナ|にじいろのはねのレシピもらった? {0x502, new EventFlagPlayer(0 , 1 , 1282, "RcoStorageExpansionReserved" )}, // たぬきち|収納の拡張を予約している - {0x503, new EventFlagPlayer(0 , 1 , 1283, "RcoStorageExpansionLevel" )}, // たぬきち|収納の拡張段階 + {0x503, new EventFlagPlayer(0 , 1 , 1283, "RcoStorageExpansionLevel" )}, // たぬきち|収納の拡張段階('20冬パッチ 1段階のみ) {0x504, new EventFlagPlayer(0 , 1 , 1284, "PlayerMovingReservedStorageExpand" )}, // たぬきち|収納の拡張申し込み当日にPだけ引越しした? {0x505, new EventFlagPlayer(0 , 1 , 1285, "MailSend_NoticeStorageExpansion" )}, // たぬきち|収納の拡張のお知らせ手紙の判定処理したか? {0x506, new EventFlagPlayer(0 , 1 , 1286, "RcoStandbyNoticeStorageExpansion" )}, // たぬきち|収納の拡張について強制会話するか? @@ -1108,13 +1108,33 @@ public EventFlagPlayer(short init, short max, ushort index, string name) {0x542, new EventFlagPlayer(0 , 1 , 1346, "UnlockSanrioCollaboPoster6" )}, // サンリオNPCポスター解禁_けろっぴ {0x543, new EventFlagPlayer(0 , 1 , 1347, "AnnounceEaster" )}, // イースター(2021年)|当日に島内放送で告知した?(2回目放送用) {0x54B, new EventFlagPlayer(0 , 1 , 1355, "AnnounceEasterReady" )}, // イースター(2021年)|準備期間に島内放送で告知した?(2回目放送用) + {0x54C, new EventFlagPlayer(0 , 1 , 1356, "AnnounceJuneBride" )}, // ジューンブライド(2021年)|当日に島内放送で告知した?(2回目放送用) {0x54E, new EventFlagPlayer(0 , 1 , 1358, "PynEvent_SendMailThisYear" )}, // イースター|今年手紙を受け取った? + {0x555, new EventFlagPlayer(0 , 1 , 1365, "OwlArtStampRally1" )}, // フータ/国際ミュージアム|【美術品】スタンプ1つ目を押した? + {0x556, new EventFlagPlayer(0 , 1 , 1366, "OwlArtStampRally2" )}, // フータ/国際ミュージアム|【美術品】スタンプ2つ目を押した? + {0x557, new EventFlagPlayer(0 , 1 , 1367, "OwlArtStampRally3" )}, // フータ/国際ミュージアム|【美術品】スタンプ3つ目を押した? + {0x558, new EventFlagPlayer(0 , 1 , 1368, "OwlStampGotArtReward" )}, // フータ/国際ミュージアム|その日、美術品報酬を貰った + {0x559, new EventFlagPlayer(0 , 1 , 1369, "OwlStampGotArt" )}, // フータ/国際ミュージアム|その日、フータスタンプ(美術品)を押した + {0x55A, new EventFlagPlayer(0 , 1 , 1370, "OwlArtUnfinished" )}, // フータ/国際ミュージアム|初参加時、美術品部屋未完成 {0x55D, new EventFlagPlayer(0 , 1 , 1373, "UnlockSanrioCollabo" )}, // サンリオコラボ解禁_キティ {0x55E, new EventFlagPlayer(0 , 1 , 1374, "UnlockSanrioCollabo2" )}, // サンリオコラボ解禁_プリン {0x55F, new EventFlagPlayer(0 , 1 , 1375, "UnlockSanrioCollabo3" )}, // サンリオコラボ解禁_キキララ {0x560, new EventFlagPlayer(0 , 1 , 1376, "UnlockSanrioCollabo4" )}, // サンリオコラボ解禁_シナモン {0x561, new EventFlagPlayer(0 , 1 , 1377, "UnlockSanrioCollabo5" )}, // サンリオコラボ解禁_マイメロ {0x562, new EventFlagPlayer(0 , 1 , 1378, "UnlockSanrioCollabo6" )}, // サンリオコラボ解禁_けろっぴ + {0x565, new EventFlagPlayer(0 , 4 , 1381, "OwlClearCount" )}, // フータ/国際ミュージアム|クリアした部屋の個数 + {0x567, new EventFlagPlayer(0 , 1 , 1383, "XctGetRewardSec" )}, // メーデー|みしらぬネコから2回目の報酬をもらった? + {0x568, new EventFlagPlayer(0 , 1 , 1384, "OwlStampPlayedThisYear" )}, // フータ/国際ミュージアム|今年サカナのスタンプラリーをクリアした? + {0x569, new EventFlagPlayer(0 , 1 , 1385, "OwlStampPlayedThisYear2" )}, // フータ/国際ミュージアム|今年ムシのスタンプラリーをクリアした? + {0x56A, new EventFlagPlayer(0 , 1 , 1386, "OwlStampPlayedThisYear3" )}, // フータ/国際ミュージアム|今年かせきのスタンプラリーをクリアした? + {0x56B, new EventFlagPlayer(0 , 1 , 1387, "OwlStampPlayedThisYear4" )}, // フータ/国際ミュージアム|今年美術品のスタンプラリーをクリアした? + {0x57C, new EventFlagPlayer(0 , 1 , 1404, "AlpJuneBrideNotGetLoveCrystalFrag" )}, // カイゾー/ジューンブライド|今日あいのけっしょうもらえなかった? + {0x57D, new EventFlagPlayer(0 , 1 , 1405, "AlwJuneBrideExchangeTalkFlag" )}, // リサ/ジューンブライド|今年交換回数制限の説明聞いた? + {0x57E, new EventFlagPlayer(0 , 9999, 1406, "LastPlayMuseumYear" )}, // 国際ミュージアム|最後に遊んだ国際ミュージアムの年 + {0x5B0, new EventFlagPlayer(0 , 1 , 1456, "GetMayDayTicketFirst" )}, // メーデー|1.10.0未満でメーデーりょこうけんを入手したことがあるか? + {0x5B8, new EventFlagPlayer(0 , 1 , 1464, "RcoHeardAboutMayDayTravelTicket" )}, // メーデー|たぬきち|メーデー旅行券の説明聞いたか? + {0x5B9, new EventFlagPlayer(0 , 1 , 1465, "XctGetRewardPast" )}, // メーデー|1.10.0未満でみしらぬネコから報酬をもらった? + {0x5C6, new EventFlagPlayer(0 , 1 , 1478, "AlwJuneBrideNoRemake1stFlag" )}, // リサ/ジューンブライド|今日1回目でリメイク解禁してなかった }; private const string Unknown = "???"; diff --git a/NHSE.Parsing/GameBCSVDumper.cs b/NHSE.Parsing/GameBCSVDumper.cs index aa3c2c7..7156ddf 100644 --- a/NHSE.Parsing/GameBCSVDumper.cs +++ b/NHSE.Parsing/GameBCSVDumper.cs @@ -312,7 +312,7 @@ public static ushort[] GetItemMenuIconArray(string pathBCSV, string fn = "ItemPa type = $"_{type}"; // enum name can't start with number if (!Enum.TryParse(type, out var k)) - throw new InvalidEnumArgumentException($"{type} is not a known enum value @ index {i}. Update the enum index first."); + throw new InvalidEnumArgumentException($"{type} is not a known enum value @ index {i}. Update the {nameof(ItemMenuIconType)} enum index first."); types.Add(ival, k); if (ival > max) diff --git a/NHSE.Tests/DumpTests.cs b/NHSE.Tests/DumpTests.cs index 379fe05..5fd67ac 100644 --- a/NHSE.Tests/DumpTests.cs +++ b/NHSE.Tests/DumpTests.cs @@ -6,8 +6,8 @@ namespace NHSE.Tests 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 = "v19"; + private const string PatchDumpPath = @"D:\Kurt\Desktop\ac\" + PatchFolderName; + private const string PatchFolderName = "v110"; private const string MessageDumpFormat = @"Message\String_{0}"; [Fact]