Initial changes

not working yet, need save disassembly for correct offsets and need to update strings
This commit is contained in:
Kurt 2020-09-29 18:49:18 -07:00
parent 51db362913
commit b319defe75
14 changed files with 242 additions and 4 deletions

View File

@ -269,5 +269,58 @@ public static class FileHashRevision
});
#endregion
#region REVISION 1.4.0
private const int REV_150_MAIN_SAVE_SIZE = 0xB20750;
private const int REV_150_PERSONAL_SAVE_SIZE = 0x76390;
private const int REV_150_POSTBOX_SAVE_SIZE = REV_110_POSTBOX_SAVE_SIZE;
private const int REV_150_PHOTO_STUDIO_ISLAND_SIZE = REV_120_PHOTO_STUDIO_ISLAND_SIZE;
private const int REV_150_PROFILE_SIZE = REV_110_PROFILE_SIZE;
public static readonly FileHashInfo REV_150 = new FileHashInfo(new[]
{
new FileHashDetails("main.dat", REV_150_MAIN_SAVE_SIZE, new[]
{
new FileHashRegion(0x000110, 0x1e215c),
new FileHashRegion(0x1e2270, 0x323f6c),
new FileHashRegion(0x5062f0, 0x03693c),
new FileHashRegion(0x53cc30, 0x03f93c),
new FileHashRegion(0x57c680, 0x03693c),
new FileHashRegion(0x5b2fc0, 0x03f93c),
new FileHashRegion(0x5f2a10, 0x03693c),
new FileHashRegion(0x629350, 0x03f93c),
new FileHashRegion(0x668da0, 0x03693c),
new FileHashRegion(0x69f6e0, 0x03f93c),
new FileHashRegion(0x6df130, 0x03693c),
new FileHashRegion(0x715a70, 0x03f93c),
new FileHashRegion(0x7554c0, 0x03693c),
new FileHashRegion(0x78be00, 0x03f93c),
new FileHashRegion(0x7cb850, 0x03693c),
new FileHashRegion(0x802190, 0x03f93c),
new FileHashRegion(0x841be0, 0x03693c),
new FileHashRegion(0x878520, 0x03f93c),
new FileHashRegion(0x8b7e60, 0x2688ec)
}),
new FileHashDetails("personal.dat", REV_150_PERSONAL_SAVE_SIZE, new[]
{
new FileHashRegion(0x00110, 0x3693c),
new FileHashRegion(0x36a50, 0x3f93c)
}),
new FileHashDetails("postbox.dat", REV_150_POSTBOX_SAVE_SIZE, new[]
{
new FileHashRegion(0x000100, 0xB4448C)
}),
new FileHashDetails("photo_studio_island.dat", REV_150_PHOTO_STUDIO_ISLAND_SIZE, new[]
{
new FileHashRegion(0x000100, 0x2C8BC)
}),
new FileHashDetails("profile.dat", REV_150_PROFILE_SIZE, new[]
{
new FileHashRegion(0x000100, 0x6945C)
}),
});
#endregion
}
}

View File

@ -16,6 +16,7 @@ public static class RevisionChecker
new SaveFileSizes(0xACECD0, 0x6D6C0, 0x2C9C0, 0xB44590, 0x69560), // 1.2.0
new SaveFileSizes(0xACED80, 0x6D6D0, 0x2C9C0, 0xB44590, 0x69560), // 1.3.0
new SaveFileSizes(0xB05790, 0x74420, 0x2C9C0, 0xB44590, 0x69560), // 1.4.0
new SaveFileSizes(0xB20750, 0x76390, 0x2C9C0, 0xB44590, 0x69560), // 1.5.0
};
private static readonly FileHeaderInfo[] RevisionInfo =
@ -33,6 +34,7 @@ public static class RevisionChecker
new FileHeaderInfo { Major = 0x50001, Minor = 0x5000B, HeaderRevision = 0, Unk1 = 2, SaveRevision = 10, Unk2 = 2 }, // 1.4.0
new FileHeaderInfo { Major = 0x50001, Minor = 0x5000B, HeaderRevision = 0, Unk1 = 2, SaveRevision = 11, Unk2 = 2 }, // 1.4.1
new FileHeaderInfo { Major = 0x50001, Minor = 0x5000B, HeaderRevision = 0, Unk1 = 2, SaveRevision = 12, Unk2 = 2 }, // 1.4.2
new FileHeaderInfo { Major = 0x60001, Minor = 0x6000C, HeaderRevision = 0, Unk1 = 2, SaveRevision = 13, Unk2 = 2 }, // 1.5.0
};
public static readonly IReadOnlyList<SaveFileSizes> SizeInfo = new[]
@ -50,6 +52,7 @@ public static class RevisionChecker
SizesByRevision[4], // 1.4.0
SizesByRevision[4], // 1.4.1
SizesByRevision[4], // 1.4.2
SizesByRevision[5], // 1.5.0
};
public static readonly IReadOnlyList<FileHashInfo> HashInfo = new[]
@ -67,6 +70,7 @@ public static class RevisionChecker
FileHashRevision.REV_140, // 1.4.0
FileHashRevision.REV_140, // 1.4.1
FileHashRevision.REV_140, // 1.4.2
FileHashRevision.REV_150, // 1.5.0
};
public static bool IsRevisionKnown(this FileHeaderInfo info) => info.GetKnownRevisionIndex() >= 0;

View File

@ -62,6 +62,7 @@ public static MainSaveOffsets GetOffsets(FileHeaderInfo Info)
10 => new MainSaveOffsets14(),
11 => new MainSaveOffsets14(),
12 => new MainSaveOffsets14(),
13 => new MainSaveOffsets15(),
_ => throw new IndexOutOfRangeException("Unknown revision!"),
};
}

View File

@ -0,0 +1,50 @@
namespace NHSE.Core
{
/// <summary>
/// <inheritdoc cref="MainSaveOffsets"/>
/// </summary>
public class MainSaveOffsets15 : MainSaveOffsets
{
#region GSaveLand
public const int GSaveLandStart = 0x110;
public override int Animal => GSaveLandStart + 0x10;
public override int LandMyDesign => GSaveLandStart + 0x1D7200;
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 + 0x1D6FB0;
public override int WeatherArea => GSaveWeather + 0x14; // Hemisphere
public override int WeatherRandSeed => GSaveWeather + 0x18;
public override int EventFlagLand => GSaveLandStart + 0x20100C;
// GSaveMainField
public const int GSaveMainFieldStart = GSaveLandStart + 0x20180C;
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 + 0x2DC238;
public override int NpcHouseList => GSaveLandStart + 0x40E238;
public const int GSaveShop = GSaveLandStart + 0x40F480;
public override int ShopKabu => GSaveShop + 0x2AD0; // part of shop
public override int Museum => GSaveLandStart + 0x4124C4;
public override int Visitor => GSaveLandStart + 0x4158C8;
public override int SaveFg => GSaveLandStart + 0x415AF8;
public override int BulletinBoard => GSaveLandStart + 0x416440;
public override int AirportThemeColor => GSaveLandStart + 0x4F7048;
#endregion
#region GSaveLandOther
public const int GSaveLandOtherStart = 0x4FADA0;
public override int LostItemBox => GSaveLandOtherStart + 0x605E70;
public override int LastSavedTime => GSaveLandOtherStart + 0x60A708;
#endregion
}
}

View File

@ -57,6 +57,7 @@ public static PersonalOffsets GetOffsets(FileHeaderInfo Info)
10 => new PersonalOffsets14(),
11 => new PersonalOffsets14(),
12 => new PersonalOffsets14(),
13 => new PersonalOffsets15(),
_ => throw new IndexOutOfRangeException("Unknown revision!"),
};
}

View File

@ -0,0 +1,44 @@
namespace NHSE.Core
{
/// <summary>
/// <inheritdoc cref="PersonalOffsets"/>
/// </summary>
public sealed class PersonalOffsets15 : 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 + 0x1168C;
public override int ProfileMain => Player + 0x116A0;
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 = 0x35E40;
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 + 0x350C4;
public override int Recipes => Bank + 0x10;
public override int MaxRecipeID => 0x2DA;
public override int MaxRemakeBitFlag => 0x7D0 * 32;
}
}

View File

@ -192,7 +192,8 @@ public static class GameLists
};
public static readonly IReadOnlyList<ushort> Fossils = new ushort[]
{00169, // ankylo skull
{
00169, // ankylo skull
00170, // ankylo torso
00171, // ankylo tail
00177, // archelon skull
@ -233,7 +234,7 @@ public static class GameLists
00227, // stego torso
00228, // stego tail
00234, // plesio skull
00235, // plesio body
00235, // plesio torso
00236, // plesio tail
00238, // T. rex skull
00239, // T. rex torso

View File

@ -9,6 +9,7 @@ public enum FieldItemKind : byte
FenceChinese,
FenceDriedStraw,
FenceEasterEgg,
FenceHalloween,
FenceHorizontalLog,
FenceHorizontalWood,
FenceIkegaki,
@ -46,6 +47,7 @@ public enum FieldItemKind : byte
PltTreeCedarDeco,
PltTreeOak,
PltTreePalm,
PltVgtPumpkin,
PltWeedAut0,
PltWeedAut1,
PltWeedAut2,

View File

@ -29,6 +29,7 @@ public enum ItemKind : byte
Kind_Bromide,
Kind_Bush,
Kind_BushSeedling,
Kind_Candy,
Kind_Cap,
Kind_ChangeStick,
Kind_CliffMaker,
@ -137,7 +138,9 @@ public enum ItemKind : byte
Kind_TurnipExpired,
Kind_Uchiwa,
Kind_Umbrella,
Kind_VegeSeedling,
Kind_Vegetable,
Kind_VegeTree,
Kind_Watering,
Kind_Weed,
Kind_Windmill,

View File

@ -158,8 +158,16 @@ public static class RecipeList
{0x0C7, 04104}, // frying pan
{0x0C8, 05150}, // shell speaker
{0x0C9, 03439}, // wooden table
{0x0CA, 04090}, //
{0x0CB, 04066}, // illuminated tree
{0x0CC, 03406}, // beekeeper's hive
{0x0CD, 04083}, //
{0x0CE, 04084}, //
{0x0CF, 04086}, //
{0x0D0, 04087}, //
{0x0D1, 04088}, //
{0x0D2, 04089}, //
{0x0D4, 04092}, //
{0x0D5, 03588}, // signpost
{0x0D6, 03785}, // potted ivy
{0x0D7, 01058}, // music stand
@ -616,6 +624,12 @@ public static class RecipeList
{0x2D8, 12563}, // mermaid rug
{0x2D9, 12566}, // mermaid wall
{0x2DA, 12568}, // mermaid flooring
{0x2DC, 12951}, //
{0x2DD, 12949}, //
{0x2DE, 13222}, //
{0x2DF, 13223}, //
{0x2E0, 13237}, //
{0x2E1, 13275}, //
};
}
}

View File

@ -330,8 +330,13 @@ public EventFlagLand(short init, short max, ushort index, string name)
{0x16B, new EventFlagLand(0 , 1 , 0363, "JohnnyInvisible" )}, // ジョニー非表示状態か
{0x16C, new EventFlagLand(0 , 1 , 0364, "DreamUploadPlayerHaveCreaterID" )}, // ゆめみ|夢の最終更新者がMyDesignショーケースの作者IDを持ってるか
{0x16D, new EventFlagLand(0 , 5000 , 0365, "DiveFishNetHostCatchNumResult" )}, // 通信開始時にネットホストのプレイヤーが今までに捕まえた海の幸の数
{0x16E, new EventFlagLand(0 , 9999 , 0366, "HalloweenSloVisitYear" )}, // ハロウィンの初回レイジを予約した年
{0x16F, new EventFlagLand(0 , 1 , 0367, "HalloweenSloVisitToday" )}, // 今日がハロウィンのレイジ来訪日
{0x171, new EventFlagLand(0 , 1 , 0369, "GrowUpAfterPatch1_5" )}, // 1.5適用して成長処理をした
{0x172, new EventFlagLand(0 , 1 , 0370, "NeedUpdatePassword" )}, // セーブデータ復元後のパスワード更新必要
{0x173, new EventFlagLand(0 , 1 , 0371, "IsHalloweenLessThanThreeDays" )}, // ハロウィン3日前以内か?
{0x176, new EventFlagLand(0 , 1 , 0374, "EventObjFlag0" )}, // イベントオブジェフラグ0
{0x17B, new EventFlagLand(0 , 1 , 0379, "SecondPublicAnnouncement" )}, // 2回目島内放送の発生が必要か
};
private const string Unknown = "???";

View File

@ -849,7 +849,7 @@ public EventFlagPlayer(short init, short max, ushort index, string name)
{0x407, new EventFlagPlayer(0 , 1 , 1031, "SpnJuneBrideNotGetFenceTodayFrag" )}, // パニエル/ジューンブライド|今日柵もらえなかった?
{0x408, new EventFlagPlayer(0 , 1 , 1032, "JuneBrideBGMHasUnlocked" )}, // ジューンブライド|今年BGMが解禁されているか
{0x40A, new EventFlagPlayer(0 , 1 , 1034, "XctFirstTalk" )}, // みしらぬネコ/メーデー|面識ある?
{0x40B, new EventFlagPlayer(0 , 1 , 1035, "PAnnounceJuneBride" )}, // 島内放送|ジューンブライド初回ログイン時の放送を聞いた?
{0x40B, new EventFlagPlayer(0 , 1 , 1035, "PAnnounceJuneBride" )}, // 島内放送|今年ジューンブライド初回ログイン時の放送を聞いた?
{0x40C, new EventFlagPlayer(0 , 1 , 1036, "StandByPhoneCallJuneBrideSpn" )}, // 電話デモ|今年パニエルからジューンブライド告知された?
{0x40D, new EventFlagPlayer(0 , 1 , 1037, "AlpJuneBrideGetStickFrag" )}, // カイゾー/ジューンブライド|今年ステッキもらった?
{0x40F, new EventFlagPlayer(0 , 10 , 1039, "LastApproachVillagerIndex" )}, // 最後にアプローチ会話をしたNPCの住人番号
@ -902,8 +902,15 @@ public EventFlagPlayer(short init, short max, ushort index, string name)
{0x447, new EventFlagPlayer(0 , 1 , 1095, "TapULFirstExplain" )}, // ゆめみ|ULの初回説明読んだ
{0x449, new EventFlagPlayer(0 , 1 , 1097, "TapDreamUploadToday" )}, // ゆめみ|今日夢をアップロードした
{0x44A, new EventFlagPlayer(0 , 1 , 1098, "TapDreamDeleteToday" )}, // ゆめみ|今日夢を削除した
{0x44B, new EventFlagPlayer(0 , 1 , 1099, "PknTalkBeforeFlag" )}, // パンプキング/ハロウィン|面識ある?
{0x44C, new EventFlagPlayer(0 , 1 , 1100, "PknTalkTodayFlag" )}, // パンプキング/ハロウィン|今日会話した?
{0x44D, new EventFlagPlayer(0 , 64 , 1101, "PknGiveCandyCount" )}, // パンプキング/ハロウィン|アメをあげた回数
{0x44E, new EventFlagPlayer(0 , 1 , 1102, "PknGetCarriageFlag" )}, // パンプキング/ハロウィン|かぼちゃのばしゃもらった?
{0x44F, new EventFlagPlayer(0 , 1 , 1103, "PknGetBromideFlag" )}, // パンプキング/ハロウィン|ブロマイドもらった?
{0x450, new EventFlagPlayer(0 , 1 , 1104, "PknGetCarriageRecipeFlag" )}, // パンプキング/ハロウィン|かぼちゃのばしゃのレシピもらった?
{0x451, new EventFlagPlayer(0 , 1 , 1105, "OwlPaintingDiveFish" )}, // フータのうみのさちチュートリアル聞いた?
{0x452, new EventFlagPlayer(0 , 1 , 1106, "PAnnounceFireworksSza1" )}, // 島内放送|花火大会しずえ1回目の放送を聞いた
{0x454, new EventFlagPlayer(0 , 1 , 1108, "RcmBoughtCandyTodayFlag" )}, // まめきち/ハロウィン|今日アメ買った?
{0x457, new EventFlagPlayer(0 , 1 , 1111, "FoxFirstTalkFireworksFlag" )}, // つねきち|花火大会で会話したことある?
{0x458, new EventFlagPlayer(0 , 1 , 1112, "CharacterCreationFlag" )}, // 夏パッチ以降でキャラメイク完了したか?
{0x459, new EventFlagPlayer(0 , 1 , 1113, "PublicAnnouncement_DiveFish" )}, // 泳ぎ解禁の島内放送聞いたか?手紙だす?
@ -917,21 +924,65 @@ public EventFlagPlayer(short init, short max, ushort index, string name)
{0x461, new EventFlagPlayer(0 , 1 , 1121, "PlayerHouseBuiltToday" )}, // 今日自宅が完成した(今日テント→家になった)
{0x462, new EventFlagPlayer(0 , 1 , 1122, "ReceiveTapBedLetter" )}, // ゆめみからベッド付き手紙を受け取った
{0x463, new EventFlagPlayer(0 , 1 , 1123, "FoxTalkOnlyStandShopFlag" )}, // つねきち|屋台でしか会話したことがない?
{0x464, new EventFlagPlayer(0 , 1 , 1124, "NpcGetCandyTodayFlag" )}, // 一般NPC/ハロウィン|今日アメもらった?
{0x465, new EventFlagPlayer(0 , 1 , 1125, "DiveFish_FirstDonation" )}, // 海の幸を初寄贈した
{0x466, new EventFlagPlayer(0 , 1 , 1126, "TapSendThankyouLetter" )}, // ゆめみ|翌日、夢をアップしたお礼の手紙が届くか?
{0x467, new EventFlagPlayer(0 , 9999, 1127, "PickUpDIYGoldCount" )}, // ver1.4.0以降、拾われたことがない金鉱石を拾った回数
{0x468, new EventFlagPlayer(0 , 1 , 1128, "FireworkCannotGetNnpcItemFlag" )}, // 花火大会|一般NPCから受け取り損ねたアイテムがある
{0x46B, new EventFlagPlayer(0 , 7 , 1131, "SurpriseVisitCount" )}, // 突撃訪問発生までのカウント
{0x46C, new EventFlagPlayer(0 , 1 , 1132, "SurpriseVisitDone" )}, // 突撃訪問された事があるか
{0x46D, new EventFlagPlayer(0 , 1 , 1133, "GetHalloweenRag" )}, // 一般NPC/ハロウィン|ラグもらった?
{0x46E, new EventFlagPlayer(0 , 1 , 1134, "GetHalloweenWallPaper" )}, // 一般NPC/ハロウィン|かべがみもらった?
{0x46F, new EventFlagPlayer(0 , 1 , 1135, "GetHalloweenFloor" )}, // 一般NPC/ハロウィン|ゆかもらった?
{0x470, new EventFlagPlayer(0 , 1 , 1136, "GetHalloweenStickRecipe" )}, // パンプキング/ハロウィン|ステッキ(レシピ)もらった?
{0x471, new EventFlagPlayer(0 , 1 , 1137, "GetHalloweenGarland" )}, // 一般NPC/ハロウィン|ガーランドもらった?
{0x473, new EventFlagPlayer(0 , 1 , 1139, "GetHalloweenTableSetting" )}, // 一般NPC/ハロウィン|テーブルセッティングもらった?
{0x475, new EventFlagPlayer(0 , 1 , 1141, "GetHalloweenBag" )}, // 今年ハロウィンのはねをもらった
{0x476, new EventFlagPlayer(0 , 1 , 1142, "AddBodyColor" )}, // タヌポート|追加ボディカラー解禁
{0x477, new EventFlagPlayer(0 , 1 , 1143, "AddEyeColor" )}, // タヌポート|追加アイカラー解禁
{0x478, new EventFlagPlayer(0 , 1 , 1144, "AddCheekColor" )}, // タヌポート|追加チークカラー解禁
{0x479, new EventFlagPlayer(0 , 1 , 1145, "SaveDataRestoringSettingNotice" )}, // セーブデータ復元|設定異常検知
{0x47A, new EventFlagPlayer(0 , 1 , 1146, "TapTalkAboutMydesignShowcase" )}, // ゆめみ|マイデザインショーケースについて説明聞いた
{0x47B, new EventFlagPlayer(0 , 1 , 1147, "NpcHalloweenTrickFlag" )}, // ハロウィン|今日イタズラされた?
{0x47C, new EventFlagPlayer(0 , 1 , 1148, "TapFirstDreamIn" )}, // ゆめみ|夢の中に入ったことがある?
{0x47D, new EventFlagPlayer(0 , 1 , 1149, "TapFirstCheckMydesingShowcase" )}, // ゆめみ|夢の中のマイデザインショーケース端末にアクセスしたことがある?
{0x47E, new EventFlagPlayer(0 , 1 , 1150, "SeekingQuestFirst" )}, // かくれんぼ|かくれんをした事がある
{0x47F, new EventFlagPlayer(0 , 1 , 1151, "SpecialMakeChanged" )}, // プレイヤが特殊メイクに変更した
{0x480, new EventFlagPlayer(0 , 1 , 1152, "TalkMakeTodayAnyone" )}, // 今日誰かにメイク会話を聞いたか
{0x481, new EventFlagPlayer(0 , 1 , 1153, "RcmExplainCandyFlag" )}, // まめきち/ハロウィン|今年アメの説明聞いた?
{0x482, new EventFlagPlayer(0 , 1 , 1154, "RcmExplainPumpkinFlag" )}, // まめきち/ハロウィン|今日かぼちゃの苗の説明聞いた?
{0x483, new EventFlagPlayer(0 , 1 , 1155, "SzaFireworksSubmitMyDesignToday" )}, // 花火大会しずえ|今日マイデザイン花火を提出した?
{0x484, new EventFlagPlayer(0 , 1 , 1156, "PAnnounceHalloween" )}, // 島内放送|今年ハロウィン期間初回ログイン時の放送を聞いた?
{0x486, new EventFlagPlayer(0 , 1 , 1158, "ExplainPumpkinColorFlag" )}, // ハロウィン|今年かぼちゃの苗の説明聞いた?
{0x487, new EventFlagPlayer(0 , 1 , 1159, "SloExplainPumpkinSeedingFlag" )}, // レイジ/ハロウィン|今日かぼちゃの苗の特別価格の説明きいた?
{0x488, new EventFlagPlayer(0 , 1 , 1160, "CalcPastDays" )}, // 経過日数の計算をした
{0x48A, new EventFlagPlayer(0 , 3000, 1162, "FireworksLastApproachYear" )}, // 花火大会|最後にアプローチ挙動をした年
{0x48D, new EventFlagPlayer(0 , 1 , 1165, "SloExplainAddVegetable" )}, // レイジ/ハロウィン|今日かぼちゃの苗販売の説明聞いた?
{0x492, new EventFlagPlayer(0 , 1 , 1170, "PknTalkLastNoCandyFlag" )}, // パンプキング/ハロウィン|最後の会話時アメ持ってなかった?
{0x49B, new EventFlagPlayer(0 , 64 , 1179, "PknGiveLollipopCount" )}, // パンプキング/ハロウィン|ロリポップをあげた回数
{0x49C, new EventFlagPlayer(0 , 1 , 1180, "TapSelWhereAreHere" )}, // ゆめみ|ここはどこ度選んだらON
{0x49D, new EventFlagPlayer(0 , 1 , 1181, "PknTalkLastNotGetFlag" )}, // パンプキング/ハロウィン|最後の会話でアイテムもらえなかった?
{0x49E, new EventFlagPlayer(0 , 1 , 1182, "PknLastGiveCandyFlag" )}, // パンプキング/ハロウィン|前回渡したのはアメ?
{0x49F, new EventFlagPlayer(0 , 1 , 1183, "PknCompItemCandyFlag" )}, // パンプキング/ハロウィン|アメ報酬コンプした?
{0x4A0, new EventFlagPlayer(0 , 1 , 1184, "PknCompItemLollipopFlag" )}, // パンプキング/ハロウィン|ロリポップ報酬コンプした?
{0x4A1, new EventFlagPlayer(0 , 1 , 1185, "PknPumpkingLookChatFlag" )}, // パンプキング/ハロウィン|パンプキング装備の雑談した?
{0x4A2, new EventFlagPlayer(0 , 1 , 1186, "Mobile1stBoot_Camera_UnlockKeyGuideOff" )}, // スマホアプリ初起動|カメラアプリにキーガイドOFF追加
{0x4A3, new EventFlagPlayer(0 , 1 , 1187, "GetHalloweenRobe" )}, // パンプキング/ハロウィン|ローブをもらった
{0x4A4, new EventFlagPlayer(0 , 1 , 1188, "GetHalloweenMask" )}, // パンプキング/ハロウィン|かぶりものをもらった
{0x4A5, new EventFlagPlayer(0 , 1 , 1189, "PknSendLetterFlag" )}, // パンプキング/ハロウィン|今年手紙送った?
{0x4A7, new EventFlagPlayer(0 , 8 , 1191, "NpcGiveCandyCount" )}, // 一般NPC/ハロウィン|アメのお礼もらった回数
{0x4A8, new EventFlagPlayer(0 , 1 , 1192, "GetHalloweenGarlandRecipe" )}, // 一般NPC/ハロウィン|ガーランドのレシピをもらった
{0x4A9, new EventFlagPlayer(0 , 1 , 1193, "GetHalloweenTableSettingRecipe" )}, // 一般NPC/ハロウィン|テーブルセッティングのレシピをもらった
{0x4AA, new EventFlagPlayer(0 , 1 , 1194, "NpcTalkLastNotGetFlag" )}, // 一般NPC/ハロウィン|イベント中、誰かと話した?
{0x4AB, new EventFlagPlayer(0 , 1 , 1195, "EnabledEmoticonIrregular" )}, // 漫符UI解禁済みかつ漫符入手会話が未発生
{0x4B2, new EventFlagPlayer(0 , 1 , 1202, "TapUnlockFavorite" )}, // ゆめみ|「前に見た夢を見る」解禁
{0x4B3, new EventFlagPlayer(0 , 9999, 1203, "LastPlayHalloweenYear" )}, // ハロウィン|最後に遊んだハロウィンの年
{0x4BA, new EventFlagPlayer(0 , 1 , 1210, "AnnounceHalloween" )}, // ハロウィンを島内放送で告知した
{0x4BF, new EventFlagPlayer(0 , 1 , 1215, "MilageSendLetterFlag" )}, // タヌポート/ハロウィン|新規肌・目の色の追加手紙送った?
{0x4C0, new EventFlagPlayer(0 , 1 , 1216, "NpcHalloweenGetMirrorFlag" )}, // ハロウィン|今日NPCからミラーもらった
{0x4C1, new EventFlagPlayer(0 , 1 , 1217, "NpcHalloweenCandyHelpFlag" )}, // ハロウィン|今日NPCから救済用アメもらった
{0x4C7, new EventFlagPlayer(0 , 8 , 1223, "PknGetItem" )}, // パンプキング/ハロウィン|報酬アイテムは?
{0x4D2, new EventFlagPlayer(0 , 1 , 1234, "RewindDays" )}, // 日付を巻き戻した
};
private const string Unknown = "???";

View File

@ -59,7 +59,7 @@ public EventFlagVillager(short v1, short v2, ushort index, string name)
{0x02B, new EventFlagVillager(0 , 10 , 0043, "ForceMoveOutVillagerIndex" )}, // 強制転出に指定した住人番号
{0x02C, new EventFlagVillager(0 , 1 , 0044, "DisplayJuneBridePresent" )}, // ジューンブライド | 絵皿を飾るか?
{0x02D, new EventFlagVillager(0 , 7 , 0045, "ProgressDaysJuneBrideParty" )}, // ジューンブライド | 結婚パーティに参加してからの経過日数
{0x031, new EventFlagVillager(0 , 5 , 0049, "EnableConvTalkDaysCount" )}, // 会話のフリを解禁するまでの日数
{0x031, new EventFlagVillager(0 , 6 , 0049, "EnableConvTalkDaysCount" )}, // 会話のフリを解禁するまでの日数
};
private const string Unknown = "???";

View File

@ -36,6 +36,7 @@ public EventFlagVillagerMemoryPlayer(byte init, byte max, ushort index, string n
{0x0D, new EventFlagVillagerMemoryPlayer(0 , 1 , 013, "HasAcquaintanceship" )}, // 面識ありか
{0x0E, new EventFlagVillagerMemoryPlayer(0 , 1 , 014, "SitBenchFlag" )}, // NPCをベンチに座らせる
{0x0F, new EventFlagVillagerMemoryPlayer(0 , 1 , 015, "TalkInDream" )}, // 今回の夢の中への訪問で話をしたか
{0x10, new EventFlagVillagerMemoryPlayer(0 , 64 , 016, "HalloweenGiveCandyCount" )}, // ハロウィン|今日このNPCにアメをあげた回数
{0x11, new EventFlagVillagerMemoryPlayer(0 , 255, 017, "PastCountFromLastVisitPlayerHouse" )}, // 最後にP宅を訪問してからの経過日数
{0x12, new EventFlagVillagerMemoryPlayer(0 , 1 , 018, "TalkedAsSameVillageResident" )}, // 同じ村の住人として会話した
{0x13, new EventFlagVillagerMemoryPlayer(0 , 1 , 019, "InputGreeting" )}, // 挨拶を設定した
@ -76,6 +77,7 @@ public EventFlagVillagerMemoryPlayer(byte init, byte max, ushort index, string n
{0x37, new EventFlagVillagerMemoryPlayer(0 , 255, 055, "ContinuousTalkCount" )}, // 連続会話回数
{0x38, new EventFlagVillagerMemoryPlayer(0 , 255, 056, "Again2Count" )}, // XX_Again2を聞いた回数
{0x39, new EventFlagVillagerMemoryPlayer(0 , 1 , 057, "TalkDIY" )}, // DIY会話をした
{0x3A, new EventFlagVillagerMemoryPlayer(0 , 2 , 058, "HalloweenDIYGetItem" )}, // ハロウィン|DIYしている時の報酬アイテムは
{0x3B, new EventFlagVillagerMemoryPlayer(0 , 1 , 059, "NewYearGreetingFlag" )}, // 新年1月1日のあいさつをした
{0x3C, new EventFlagVillagerMemoryPlayer(0 , 1 , 060, "GotRecipeorMaterial" )}, // DIYレシピか素材をもらった
{0x3D, new EventFlagVillagerMemoryPlayer(0 , 1 , 061, "GotMaterialItemFull" )}, // 素材をもらうときもちものがいっぱいだった
@ -144,7 +146,14 @@ public EventFlagVillagerMemoryPlayer(byte init, byte max, ushort index, string n
{0x7D, new EventFlagVillagerMemoryPlayer(0 , 1 , 125, "FriendshipBecomeAcqH" )}, // 親密度が知人(高)に到達済み
{0x7E, new EventFlagVillagerMemoryPlayer(0 , 3 , 126, "DC_NPCBirthdayFlag" )}, // NPC誕生日|おでかけ先の村でもらうお返しの種類
{0x7F, new EventFlagVillagerMemoryPlayer(0 , 1 , 127, "EasterCannotGetNnpcRecipeFlag" )}, // イースター|このNPCから受け取り損ねたレシピがある
{0x81, new EventFlagVillagerMemoryPlayer(0 , 1 , 129, "HalloweenTerrifyFlag" )}, // ハロウィン|今日パンプキングの恰好で脅かした?
{0x82, new EventFlagVillagerMemoryPlayer(0 , 1 , 130, "HalloweenGetCandyFlag" )}, // ハロウィン|今日このNPCからアメもらった
{0x83, new EventFlagVillagerMemoryPlayer(0 , 1 , 131, "FireworksGetItemFlag" )}, // 花火大会|このNPCからリアクション会話で花火を受け取った
{0x84, new EventFlagVillagerMemoryPlayer(0 , 1 , 132, "HaloweenTalkThisSceneFalg" )}, // ハロウィン|このシーンで会話した?
{0x85, new EventFlagVillagerMemoryPlayer(0 , 1 , 133, "HaloweenGetCandyThisSceneFalg" )}, // ハロウィン|このシーンでアメもらった?
{0x86, new EventFlagVillagerMemoryPlayer(0 , 1 , 134, "FollowQuestAfter" )}, // 追従|追従クエスト後か?
{0x88, new EventFlagVillagerMemoryPlayer(0 , 1 , 136, "HalloweenLastNotGetFlag" )}, // ハロウィン|最後の会話で報酬アイテムもらえなかった?
{0x89, new EventFlagVillagerMemoryPlayer(0 , 16 , 137, "HalloweenLastNotGetItem" )}, // ハロウィン|最後の会話でもらえなかった報酬アイテム
};
private const string Unknown = "???";