佩利Q

佩利Q

为模组作者添加一些物品查询相关的实用工具。

[尺寸=5][网址=https://github.com/Mushymato/PeliQ]源代码[/网址][/尺寸]

[尺寸=6][粗体]PeliQ[/粗体][/尺寸]
模组开发框架,添加了一些物品查询相关的实用工具。

请参阅 [字体=Courier New][CP] PeliQ 示例[/字体] 获取示例。

[尺寸=4][粗体]嵌套物品查询[/粗体][/尺寸]
运行一个物品查询,然后将其结果传递给另一个物品查询以进行进一步处理。
内部物品查询放在 [字体=Courier New]ModData[/字体] 中。

例如,如果将以下物品查询放在商店的 Items 字段下,该商店将出售各种鱼饵,包括任何模组添加的鱼。

[字体=Courier New]json
{
"Id": "{{ModId}}_AllBait_Outer",
"ItemId": "ALL_ITEMS (O)",
"PerItemCondition": "ITEM_CONTEXT_TAG Target category_fish",
"ModData": {
"Id": "{{ModId}}_AllBait_Inner",
"ItemId": "FLAVORED_ITEM Bait mushymato.PeliQ_NestedId",
}
}[/字体]

内部物品查询:

[列表]
[]必须在 [字体=Courier New]ItemId[/字体] 中包含 [字体=Courier New]mushymato.PeliQ_NestedId[/字体],即此处不能使用非 ItemId 查询
[
]或者,您可以将 [字体=Courier New]mushymato.PeliQ_NestedId[/字体] 与 [字体=Courier New]InputId[/字体] 一起使用。
[]只能嵌套一次
[
]目前,此内部查询不能接受某些类型,即列表。
[/列表]
所使用的物品生成数据的具体风格是 [字体=Courier New]PeliQSpawnItemData[/字体],它扩展了 [网址=https://stardewvalleywiki.com/Modding:Machines]MachineItemOutput[/网址] 并增加了 1 个字段 [字体=Courier New]InputId[/字体],用作机器输入。
您可以像这样生成自定义风格物品:

[字体=Courier New]json
"ModData": [
{
"Id": "{{ModId}}_CustomPreserve",
"ItemId": "(O)107", // 恐龙蛋
"ObjectDisplayName": "[LocalizedText Strings\\Objects:SmokedFish_Description %PRESERVED_DISPLAY_NAME]",
"ObjectInternalName": "DINO EGG TEST",
"PreserveId": "DROP_IN",
"CopyColor": true,
"InputId": "(O)Moss"
}
][/字体]

如果 [字体=Courier New]InputId=mushymato.PeliQ_NestedId[/字体],外部查询的结果将作为 [字体=Courier New]InputId[/字体] 传递给内部查询。

[尺寸=4][粗体]存储的物品查询 [字体=Courier New]mushymato.PeliQ/ItemQueries[/字体][/粗体][/尺寸]
为物品查询添加一个新资产,可通过键在各种地方使用。
自定义资产是带条件的物品查询列表。
这也使用提到的 [字体=Courier New]PeliQSpawnItemData[/字体] 类型。

[字体=Courier New]json
{
"Action": "EditData",
"Target": "mushymato.PeliQ/ItemQueries",
"Entries": {
"{{ModId}}_Jelly": [
{
"Id": "{{ModId}}_Jelly1",
"ItemId": "(O)CaveJelly",
},
{
"Id": "{{ModId}}_Jelly2",
"ItemId": "(O)RiverJelly",
},
{
"Id": "{{ModId}}_Jelly3",
"ItemId": "(O)SeaJelly",
}
],
"{{ModId}}_Fish": [
{
"Id": "{{ModId}}_Fish",
"ItemId": "ALL_ITEMS (O)",
"PerItemCondition": "ITEM_CONTEXT_TAG Target category_fish",
}
]
}
},[/字体]

这些可用于:

[列表]
[]物品查询:在另一个 ItemQuery 的 ItemId 中使用 [字体=Courier New]mushymato.PeliQ_STORED_QUERY <queryId>[/字体]
[
]触发动作:[字体=Courier New]mushymato.PeliQ_AddItemByQuery <queryId> [ItemQuerySearchMode][/字体]
[]图块动作和触摸动作:[字体=Courier New]mushymato.PeliQ_AddItemByQuery <queryId> [ItemQuerySearchMode] [isDebris][/字体]
[
]邮件:在邮件中使用 [字体=Courier New]%peliQ <queryId> [ItemQuerySearchMode] %%[/字体],物品将出现在邮件中,需要逐个移除。
[/列表]
[尺寸=2][粗体]ItemQuerySearchMode[/粗体][/尺寸]
以下之一:

[列表]
[][字体=Courier New]All[/字体]
[
][字体=Courier New]AllOfTypeItem[/字体]
[][字体=Courier New]FirstOfTypeItem[/字体]
[
][字体=Courier New]RandomOfTypeItem[/字体]
[/列表]
默认是 [字体=Courier New]AllOfTypeItem[/字体],请注意这些应用于列表中的每个查询,因此如果您有 3 个查询,每个查询给出 1 个特定物品(如 [字体=Courier New]{{ModId}}_Jelly[/字体] 示例),并使用 [字体=Courier New]RandomOfTypeItem[/字体],您将获得 3 个果冻,因为运行了 3 个物品查询。使用 [字体=Courier New]RandomItemId[/字体] 等字段来随机化单个物品查询。

[尺寸=2][粗体]isDebris[/粗体][/尺寸]
触发动作总是直接将物品添加到玩家背包,而 2 个地图动作将生成碎片,除非 isDebris 为 [字体=Courier New]false[/字体]。

[尺寸=4][粗体]新物品查询[/粗体][/尺寸]
[尺寸=3][粗体]mushymato.PeliQ_ACTION_SALABLE <itemId>[/粗体][/尺寸]
[列表]
[]在商店中添加一个虚假的物品条目,实际上不购买物品。
[
]这旨在用于创建激活 [字体=Courier New]ActionsOnPurchase[/字体] 而不给您实际物品的商店条目。
[][字体=Courier New]itemId[/字体] 未限定,必须是 [字体=Courier New]Data/Objects[/字体] 条目。
[/列表]
可以在您的占位对象的 [字体=Courier New]Data/Objects[/字体] 条目上设置 2 个自定义字段。

[列表]
[
][字体=Courier New]mushymato.PeliQ/ExitOnPurchase[/字体]:购买时立即退出菜单
[][字体=Courier New]mushymato.PeliQ/PurchaseSound[/字体]:购买时播放的声音
[/列表]
[尺寸=4][粗体]新游戏状态查询[/粗体][/尺寸]
[尺寸=3][粗体]mushymato.PeliQ_ITEM_ID_REGEX Target|Input <regex>+[/粗体][/尺寸]
[列表]
[
]将物品 id 或限定物品 id 与 [网址=https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference]正则表达式(不区分大小写)[/网址] 匹配。
[]第一个参数通常是 Target,但如果处理机器触发规则则是 Input。
[/列表]
[尺寸=4][粗体]mushymato.PeliQ_ANY_N "first GSQ" <count> <"GSQ">+[/粗体][/尺寸]
[列表]
[
]评估第一个 GSQ,然后检查后续 [字体=Courier New]GSQ[/字体] 的结果中至少有 [字体=Courier New]count[/字体] 个等于第一个 GSQ 的结果。
[]对于基本用法,您可以使用 [字体=Courier New]TRUE[/字体] 或 [字体=Courier New]FALSE[/字体] 作为第一个 GSQ。
[
]如果 GSQ 包含空格,必须用引号转义。
[/列表]
[尺寸=4][粗体]mushymato.PeliQ_AND "first GSQ" "second GSQ"[/粗体][/尺寸]
[列表]
[]评估 2 个 GSQ,并检查 AND。
[
]仅为娱乐而添加,您已经可以使用 [字体=Courier New]GSQ,GSQ[/字体] 实现 AND,使用 [字体=Courier New]ANY "!GSQ" "!GSQ"[/字体] 实现 !AND。
[/列表]
[尺寸=4][粗体]mushymato.PeliQ_OR "first GSQ" "second GSQ"[/粗体][/尺寸]
[列表]
[]评估 2 个 GSQ,并检查 AND。
[
]仅为娱乐而添加,您已经可以使用 [字体=Courier New]ANY GSQ GSQ[/字体] 实现 OR。
[/列表]
[尺寸=4][粗体]mushymato.PeliQ_XOR "first GSQ" "second GSQ"[/粗体][/尺寸]
[列表]
[]评估 2 个 GSQ,并检查 XOR(即第一个不等于第二个)。
[
]仅为娱乐而添加,您已经可以使用 [字体=Courier New]ANY "GSQ,!GSQ" "!GSQ,GSQ"[/字体] 实现 XOR。
[/列表]

[网址=https://maverick-ornithography.tumblr.com/post/160072696605/pelcan-mouth-perfec-t-size-for-put-baby-in-to]Pelican[/网址]