[
{
"Id": "MyMod.MyMailId", // レターID。重複を避けるため、一意の文字列にしてください。また、スペース文字は使用しないでください。
"GroupId": "MyMod.MyGroupId", // レターグループID。同じグループIDのレターは、同じ日に配達されることはありません。最初に登録されたレターが優先されます。ただし、グループIDが「.Random」で終わる場合は、ランダムにレターが選択されます。デフォルトはnullです。
"Title": "My Letter Title", // レターのタイトル。コレクションメニューに表示されます。コレクションにレターを表示したくない場合は、null に設定するか、この行を削除してください。翻訳ファイルが提供されている場合は、ここに翻訳キーを入力してください。タイトルがない場合は null のままでも構いません。
"Text": "Dear @^This is my custom mail.", // メールの本文。@ はプレイヤー名、^ は改行に使用できます。また、ゲーム本体のコマンドを使ってお金やアイテムなどを追加することもできます。翻訳ファイルが提供されている場合は、ここに翻訳キーを入力してください。
"RandomlyChooseAttachment": 2, // 数値を設定すると、グループごとに添付ファイルリストからその数のアイテムがランダムに選択されます。デフォルトはnullです。
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // ここでグループと数量を設定すると、RandomlyChooseAttachmentで設定された数量ではなく、その数量に基づいてアイテムが選択されます。デフォルトは空です。
"AttachmentGroupWithReplacement": [ "CaveItems" ], // デフォルトでは、添付ファイルはリストからランダムに選択されます。添付ファイルを置き換えて選択したい場合は、リストにグループを追加してください。グループを追加していない場合は、空の文字列を使用してください。デフォルト値は空のリストです。
"Attachments": [ // 添付ファイルのリスト。メールにアイテムを添付しない場合は、プロパティを削除します。
{
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] 必須。アタッチするアイテムの種類。指定されていない場合は無視されます。「None」はログにエラーが記録されずに常に無視されるため、アタッチメントを追加しない確率を確認したい場合に使用してください。
"Name": "Cave Carrot", // アイテムインデックスを見つけるために使用されます。JSON Assetsなどのカスタムオブジェクトを使用する場合は必須です。DGAを使用する場合は、完全なDGA IDを指定する必要があります。指定されていない場合は、インデックスが使用されます。デフォルトはnullです。
"Index": "(0)78", // アイテムのインデックス。アイテムIDを文字列で指定しますが、下位互換性のため整数値でも指定できます。名前が指定されていない場合、または指定された名前のアイテムが見つからない場合は、インデックスが使用されます。それ以外の場合、添付ファイルは無視されます。DGAタイプの場合は無視されます。
"Stack": 1, // 配送するアイテムのスタック値。オブジェクトとBigCraftableにのみ使用されます。デフォルトは1です。
"Quality": 2, // 配送するアイテムの品質値。オブジェクトにのみ使用されます。0 = なし、1 = シルバー、2 = ゴールド、4 = イリジウム。デフォルトは 0 です。
"RequireMailReceived": [ "jojaVault", "ccVault" ], // メールのいずれかを受信していることを必須とします。ゲームリストには、コミュニティセンターの旗など、メール以外のものも含まれています。デフォルトはnullで、メールの受信は必須ではありません。
"RequireAllMailReceived": false, // true の場合、「RequireMailReceived」リスト内のすべてのメールが受信されている必要があります。デフォルトは false です。
"ProbabilityWeight": 1, // 配送するアタッチメントを選択する際の重み。指定されたグループ内のすべての重みを合計し、その重みを合計値で割った値が確率となります。デフォルトは1です。
"RandomGroup": "CaveItems" // アイテムをランダムに選択する場合、リストをグループ分けし、各グループから必要なアイテム数を選択します。デフォルト値は空文字列で、デフォルトグループとして機能します。
},
{
"Type": "Tool", // ツールを使用する場合、サポートされているもののみ添付できます。
"Name": "Axe", // [斧|鍬|じょうろ|つるはし|大鎌|黄金の大鎌|牛乳桶|鋏|釣竿|鍋|リターンセプター] ツールに必須。対応するツールの名前。指定がない場合、アタッチメントは無視されます。
"UpgradeLevel": 1 // ツールのアップグレードレベル。通常のツール:0 = 石、1 = 銅、2 = 鋼、3 = 金、4 = イリジウム。釣り竿:0 = 竹竿、1 = トレーニングロッド、2 = グラスファイバーロッド、3 = イリジウムロッド。その他の種類の場合は無視されます。デフォルトは 0 です。
},
{
"Type": "DGA", //DGAアイテム
"Name": "spacechase0.DynamicGameAssets.Example/My Custom Item", // 完全な DGA ID を使用します。必須です。
"Stack": 10, // 配送するアイテムのスタック値。オブジェクトとBigCraftableにのみ使用されます。デフォルトは1です。
"Quality": 2 // 配送するアイテムの品質値。オブジェクトにのみ使用されます。0 = なし、1 = シルバー、2 = ゴールド、4 = イリジウム。デフォルトは 0 です。
},
{
"Type": "QualifiedItemId", // サポートされている任意のアイテム
"Index": "(0)78", // アイテムの修飾アイテムID。
"Stack": 10, // 配送するアイテムのスタック値。オブジェクトとBigCraftableにのみ使用されます。デフォルトは1です。
"Quality": 2 // 配送するアイテムの品質値。オブジェクトにのみ使用されます。0 = なし、1 = シルバー、2 = ゴールド、4 = イリジウム。デフォルトは 0 です。
}
],
"Recipe": "レシピ名", // メールにレシピを添付したくない場合は、この行を削除してください。この行は、メールに他の添付ファイルがない場合のみ機能します。DGAレシピの場合は、ID部分のみを使用してください(ModIDは省略してください)。
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // MailReceivedリストに追加テキストを追加するにはこれを使用します。バニラフラグやその他のMFMレターIDを追加するのに便利です。
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //MailReceivedリストから削除するテキスト。これは、新規メール、イベント、バニラフラグのトリガー、他のMFMメールの送信停止などに使用できます。
"LetterBG": "CustomLetterBG.png", // コンテンツパック内の、使用するカスタム文字背景ファイルの名前。ゲームのLetterBGファイルと同じ構造にする必要があります。WhichBGは、この文字のファイルからの相対パスになります。nullまたは削除されている場合、MODはゲームのLetterBGを使用します。
"WhichBG": 0, //文字の背景のID。0 = クラシック、1 = メモ帳、2 = ピラミッド
"TextColor": -1, //デフォルトの色を使用するにはこの行を削除してください。CustomTextColorが設定されている場合は無視されます。-1 = ダークレッド、0 = ブラック、1 = スカイブルー、2 = レッド、3 = ブルーバイオレット、4 = ホワイト、5 = オレンジレッド、6 = ライムグリーン、7 = シアン、8 = 最も暗いグレー
"CustomTextColorName": "White", // テキストの色。[http://www.foszor.com/blog/xna-color-chart/] デフォルトでは TextColor プロパティが使用されます。
"UpperRightCloseButton": "CustomCloseButton.png", // コンテンツパック内の、使用するカスタムの閉じるボタンを含むファイルの名前。サイズは12 x 12である必要があります。nullまたは削除されている場合は、デフォルトのボタンが使用されます。
"ReplyConfig": { // プレイヤーが手紙を読んだ後に返信するようにしたい場合。プレイヤーの回答に基づいて1つ以上の「ReceivedMail」を追加する返信オプションが表示されます。返信に関連する追加ロジックは、追加された「ReceivedMail」に基づいて実装する必要があります。
"QuestionKey": "MyMod.MyMailId.Question", //質問を識別するためのキー。内部使用のみで、回答間の競合を避けるため、コンテンツパック内で一意である必要があります。
"QuestionDialog": "報酬を選択して返信を送信してください:", //返信オプションの上に表示される質問またはテキスト。翻訳ファイルが提供されている場合は、ここに翻訳キーを入力してください。
「返信」: [
{
"ReplyKey": "MyMod.MyMailId.Reply1", // 質問の返信間で一意である必要があります。
"ReplyOptionDialog": "種が欲しいです。", //返信リストに表示されるオプションテキスト。翻訳ファイルが提供されている場合は、ここに翻訳キーを入力してください。
"RequireMailReceived": [ "jojaVault", "ccVault" ], // メールのいずれかを受信していることを必須とします。ゲームリストには、コミュニティセンターの旗など、メール以外のものも含まれています。デフォルトはnullで、メールの受信は必須ではありません。
"RequireAllMailReceived": false, // true の場合、「RequireMailReceived」リスト内のすべてのメールが受信されている必要があります。デフォルトは false です。
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // MailReceivedリストに追加するテキスト。新しいメール、イベント、バニラフラグのトリガー、他のMFMメールの送信停止などに使用できます。
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //MailReceivedリストから削除するテキスト。これは、新規メール、イベント、バニラフラグのトリガー、他のMFMメールの送信停止などに使用できます。
"ReplyResponseDialog": "種子の送付を依頼する手紙を送信しました。", //この返信オプションを選択した後に表示されるテキスト。翻訳ファイルが提供されている場合は、ここに翻訳キーを入力してください。
"Cost": 50 // プレイヤーがこのオプションを選択するために必要な金額。選択した場合、その金額は即座にプレイヤーの所持金から差し引かれます。必ず無料のオプションを用意してください。そうしないと、プレイヤーがソフトロック状態になる可能性があります。
}
]
},
"Repeatable": false, // trueの場合、modはレターIDが既に配信されているかどうかをチェックしません。デフォルトはfalseです。
"AutoOpen": false, // true の場合、条件を満たした日の始まりに手紙が開かれます。手紙のIDは既読になり、レシピが設定されている場合はレシピが習得されます。手紙は表示されないため、タイトル、テキスト、背景などの視覚的なプロパティや添付ファイルは使用されません。
// 配送条件
//以下は配送条件です。条件をチェックしたくない場合は、いずれかの行を削除してください。
"Date": "10 spring Y1", // 指定された日付以降である必要があります。形式は"[1-28] [spring|summer|fall|winter] Y[1-999]"です。
"Days": [7,14,21,28], // リスト内のいずれかの曜日である必要があります。
"Seasons": ["fall"], // リスト内の季節のいずれかである必要があります。[spring|summer|fall|winter]
"Weather": "sunny", // ゲームの天候に一致する必要があります。形式は"[sunny|rainy]"です。
"HouseUpgradeLevel": 2, // 家のアップグレード レベルは、定義されているレベル以上である必要があります。0 - スターター ハウス (これを使用する理由はないので、行を削除するだけです)、1 - キッチン、2 - 2 階、3 - 地下室。
"DeepestMineLevel": 80, // 最も深い鉱山レベルは、定義されているレベル以上である必要があります。120 は鉱山の最後のレベル、121 は頭蓋骨の洞窟の最初のレベルです。
"CurrentMoney": 10000, // 現在の金額は定義された金額以上である必要があります。
"TotalMoneyEarned": 500000, // 獲得した合計金額は、定義された金額以上である必要があります。
"FriendshipConditions": // リストの各 NPC はすべての条件をチェックする必要があります。
[
{
"NpcName": "Lewis", //NPCの名前。カスタムNPCも使用できます。
"FriendshipLevel": 8, // NPCの友情ハートレベルは、ここで定義された値以上である必要があります。デフォルトは0です。
"FriendshipStatus": ["交際中","婚約中","既婚"] // [Friendly|Dating|Engaged|Married|Divorced] NPCの友情ステータスはリストのいずれかである必要があります。ステータスを必要としない場合は削除してください。
}
],
"SkillConditions": // リスト内の各スキルは、定義されたレベル以上である必要があります。バニラゲームでは、幸運スキルを含むすべてのコード化スキルを使用できます。カスタムスキルは使用できません。
[
{ "スキル名": "農業", "スキルレベル": 1 }
],
"StatsConditions": // リスト内の各統計情報は、定義された値以上である必要があります。StatsNameまたはStatsLabelを選択してください
[
{
"StatsName": "CheeseMade", //[種まき|アイテム発送|調理済みアイテム|アイテム作成|鶏卵産卵|アヒル卵産卵|牛乳生産|ヤギミルク生産|ウサギ毛生産|羊毛生産|チーズ生産|ヤギチーズ生産|見つけたトリュフ|集めた石|砕いた岩|掘った土|贈った贈り物|無意識時間|平均就寝時間|釣りをした回数|釣った魚|割った岩|切り株|歩いた歩数|倒したモンスター|見つけたダイヤモンド|プリズマティックardsFound|OtherPreciousGemsFound|CaveCarrotsFound|CopperFound|IronFound|CoalFound|CoinsFound|GoldFound|IridiumFound|BarsSmelted|BeveragesMade|PreservesMade|PiecesOfTrashRecycled|MysticStonesCrushed|DaysPlayed|WeedsEliminated|SticksChopped|NotesFound|QuestsCompleted|StarLevelCropsShipped|CropsShipped|ItemsForaged|SlimesKilled|GeodesCracked|GoodFriends|IndividualMoneyEarned] デフォルトは null です。
"StatsLabel": "Name", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] これらはラベルで識別される現在のゲーム統計です。ラベルが追加された場合には、それらもサポートされる必要があります。また、他のMODによって追加されたカスタム統計ラベルも識別します。デフォルトはnullです。
"Amount": 1 // 条件が有効となるには、ステータスがこの金額以上である必要があります。
}
],
"CollectionConditions": // リストの各コレクション条件には、定義された量以上の値が必要です。
[
{
"Collection": "Shipped", //[Shipped|Fish|Artifacts|Minerals|Cooking|Crafting] が必要です。
"Name": "Oil", //非推奨。代わりにIDを使用します。「クラフト」コレクションのオブジェクトまたはレシピの名前。クラフトコレクションでない場合は、オブジェクトリスト内でその名前を検索してインデックスを見つけます。名前が見つからない場合、文字は無視されます。他のプロパティと結合されます。デフォルトはnullです。
"Index": 211, //非推奨。代わりにIDを使用します。オブジェクトのインデックス。他のプロパティと結合されます。デフォルトはnullです。
"Ids": [ "282", "MossSoup" ], //アイテムIDまたはクラフトレシピ名。他のプロパティと結合されます。数量は合計され、Amountプロパティと比較されます。
"Amount": 10 // 条件が有効になるためには、コレクション内のオブジェクトの合計量が等しいかそれより大きくなければなりません。
}
],
"SpecialDateCondition": // その日付かそれ以降である必要があります。
{
"SpecialDate": "ChildBirth", //[結婚式|出産日] 必須
"YearsSince": 1, //日付からの経過年数。0は実際の日付、1は経過年と一致します。デフォルトは0です。
"WhichChild": 1 //SpecialDateプロパティがChildBirthの場合、どの子供が生まれたかを参照します。デフォルトは1です。
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //Expanded Preconditions Utility modが必要です。動作確認はmodのドキュメントをご覧ください。modがロードされていない場合、手紙は配達されません。
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Expanded Preconditions Utility modが必要です。動作についてはmodのドキュメントをご覧ください。modがロードされていない場合、手紙は配達されません。
"RandomChance": 0.25, // このMODは、0から1までの乱数が指定された数値より小さいかどうかを確認します。同じセーブデータ、同じ日、同じ文字でプレイした場合、不正行為を防ぐため、常に同じ結果になります。
"Buildings": ["Coop","Big Coop","Deluxe Coop"], // 農場に現在建設中の建物の 1 つが必要です。
"RequireAllBuildings": false, // true の場合、「Buildings」リストにあるすべての建物がファーム内に現在建設されている必要があります。デフォルトは false です。
"MailReceived": ["jojaVault","ccVault"], // メールのいずれかが受信されている必要があります。ゲームリストには、コミュニティセンターの旗など、メール以外のものも含まれています。
"RequireAllMailReceived": false, // true の場合、「MailReceived」リスト内のすべてのメールが受信されている必要があります。デフォルトは false です。
"MailNotReceived": ["jojaVault","ccVault"], // メールが受信されていないことを条件とします。ゲームリストには、コミュニティセンターの旗など、メール以外のものも含まれています。
"EventsSeen": [ "4", "32423" ], // プレイヤーがいずれかのイベントを視聴している必要があります。文字列で指定する必要がありますが、レトロゲームとの互換性を保つため整数でも動作します。
"RequireAllEventsSeen": false, // true の場合、プレイヤーが "EventsSeen" リスト内のすべてのイベントを確認済みである必要があります。デフォルトは false です。
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // いずれかのMODをロードする必要があります。MODのUniqueIDを指定してください。
"RequireAllMods": false, // true の場合、「HasMods」リスト内のすべての Mod がロードされている必要があります。デフォルトは false です。
"EventsNotSeen": [ "4", "32423" ], // プレイヤーがイベントを未体験であることが必要です。文字列で指定する必要がありますが、レトロゲームとの互換性を保つため整数でも動作します。
"RecipeKnown": ["ピザ","サバイバルバーガー"], // プレイヤーがいずれかのレシピを学習している必要があります。
"RequireAllRecipeKnown": false, // true の場合、プレイヤーは「RecipeKnown」リスト内のすべてのレシピを習得している必要があります。デフォルトは false です。
"RecipeNotKnown": ["Wild Bait"], // プレイヤーがレシピを学習していないことが必要です。
"KeepValid": false // これがtrueの場合、条件が満たされると、メールは読まれるまで有効なままになります。デフォルトはfalseです。
}
]MailRepository.SaveLetter(
新しい手紙(
「レターユニークID」
,"文字のカスタムテキスト。"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);
MailRepository.SaveLetter(
新しい手紙(
「レターユニークID」
,"文字のカスタムテキスト。"
,新しいリスト<アイテム> { 新しいStardewValley.Object(60,5) }
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);
MailRepository.SaveLetter(
新しい手紙(
「レターユニークID」
、「文字のカスタムテキスト」
, "レシピ固有名"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
)
);
MailRepository.SaveLetter(
新しい手紙(
「レターユニークID」
,"文字のカスタムテキスト。"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
1
){テキストカラー=8}
);
MailRepository.SaveLetter(
新しい手紙(
「レターユニークID」
,"文字のカスタムテキスト。"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
LetterTexture=helper.Content.Load("CustomLetterBG.png")
,テキストカラー=4
}
);
CustomLetterBG.pngは「LooseSprites//letterBG」と同じ構造に従う画像ファイルです。MailRepository.SaveLetter(
新しい手紙(
「レターユニークID」
,"myletter.translation.key.text"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
){
タイトル = "myletter.translation.key.title",
I18N = ヘルパー.翻訳
}
);
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK