模组:游戏状态查询
← 目录
此页面为游戏状态查询(game state queries)的文档。游戏状态查询是某些游戏数据素材中指定条件的内建方式,其受到Content Patcher中条件的启发。
概览
查询格式
一个查询也就是一个逗号分隔的条件列表,每个条件有如下格式:<类型>
[参数]
。其中类型可以添加!
前缀以代表反向匹配。若查询为空/空白,则必然返回true。当查询列表中所有条件均成功匹配,也返回true。例如,!SEASON Spring, WEATHER Here Sun
为true当且仅当游戏状态为非春季的晴天。
⚠游戏状态查询是部分大小写敏感的。尽管某些数值是大小写不敏感的(例如,SEASON Spring
和SEASON spring
都可用),但并非所有数值都如此。推荐使用精确的大小写以规避问题。
参数格式
游戏状态查询可以接收空格分隔的参数列表。例如,BUILDINGS_CONSTRUCTED Here Cabins
有两个参数:Here
和Cabins
。
若某个参数包含空格,则需添加双引号以表示这是一整个参数。例如, BUILDINGS_CONSTRUCTED Here "Junimo Hut"
会将Junimo Hut
作为一整个参数来传入。在需要嵌套双引号时,可以使用反斜杠来转义内层双引号,例如ANY "BUILDINGS_CONSTRUCTED Here \"Junimo Hut\""
。
请记住JSON字符串中的双引号和反斜杠也需要转义。例如,"Condition": "BUILDINGS_CONSTRUCTED Here \"Junimo Hut\""
会向游戏代码发送BUILDINGS_CONSTRUCTED Here "Junimo Hut"
。但是,也可以在JSON字符串中使使用单引号,例如"Condition": 'BUILDINGS_CONSTRUCTED Here "Junimo Hut"'
。
查询 vs Content Patcher条件
当制作Content Patcher包使,为达成同一个目的,可能存在When条件和游戏状态查询两种不同的方法(殊途同归)。
具体使用哪个,主要是性能的权衡:
- Content Patcher的When做好了充分的优化和缓存,因此上千个补丁可以检查统一个条件而不会影响性能,相应的更改会一次性写入素材。因此,在编辑素材后不会产生性能影响。但是,在添加/移除补丁时,素材会被重新载入,因此在某些情况下频繁改变素材可能影响性能(例如重新加载地图或村民出现在室内/室外)。
- 游戏状态查询并没有缓存,因此经常检查时有可能显著地影响性能。例如,每个更新时刻检查一千个游戏状态查询,就意味着每秒需要检查六万个游戏状态查询。而另一方面,游戏状态查询在查询频率较低的情况下常常更快,并且不会重新加载贴图或地图(例如Data/Characters中的Appearance或Data/Locations中的Music)。
内建查询
元查询
条件 | 效果 |
---|---|
ANY <query> +
|
获取是否列出的游戏查询中至少有一个匹配成功,其中每个参数都是一个查询。例如,ANY "SEASON Winter" "SEASON Spring, DAY_OF_WEEK Friday" 当且仅当冬季或春季周五时返回true。您可以列出任意数量的查询。
|
您可以在任何查询内部嵌套任何查询,但是如果嵌套层数太多,处理转义双引号将极为棘手。因此,推荐使用SOP规范形式。
下面是一个例子:
"ANY \"LOCATION_NAME Here BathHouse_Pool\" \"LOCATION_NAME Here BathHouse_MensLocker\" \"LOCATION_NAME Here BathHouse_WomensLocker\" \"LOCATION_NAME Here Beach, WEATHER Here Sun Wind, SEASON Summer\" \"IS_EVENT festival_summer5, {{HasMod|contains=spacechase0.SurfingFestival}}\""
拆解开来,这意味着检查是否满足下列条件之一:
- 下列地点之一:BathHouse_Pool、BathHouse_MensLocker、BathHouse_WomensLocker。
- 夏季晴天或风天的海滩
- 夏5日事件(此例子中为节日)正在进行,且已安装spacechase0.SurfingFestival。注意,{{HasMod|contains=spacechase0.SurfingFestival}}会被自动解析为true或false,因为它是一个有效的标记符。
请注意:您可以在游戏状态查询中使用像上面那样的标记符!
日期 & 时间
条件 | 效果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
DAY_OF_MONTH <day> +
|
当月日期。可以为1至28之间 整数,或者odd/even来匹配奇偶天。可以指定多个值,代表匹配其中任一个。 | ||||||||||
DAY_OF_WEEK <day> +
|
当周日期。可以为 0(星期日)至 6(星期六)之间的整数,三字母英文名(例如Fri)或完整英文名(例如Friday)。可以指定多个值,代表匹配其中任一个(例如DAY_OF_WEEK Monday Tuesday匹配星期一或星期二)。 | ||||||||||
DAYS_PLAYED <min> [max]
|
该存档是否至少玩了<min> ,至多玩了[max] (默认为无穷大)天。此查询会与原版游戏内的游戏同步。但如果模组改变了游戏内的日期,则此查询值可能不会同步更新。
| ||||||||||
IS_FESTIVAL_DAY [location context] [day offset]
|
是否当天有节日,[day offset] 为日期偏移(例如1代表明天是否有节日)。
其中
| ||||||||||
IS_PASSIVE_FESTIVAL_OPEN <id>
|
当天是否有给定ID的被动节日,且在当前时段正在进行。 | ||||||||||
IS_PASSIVE_FESTIVAL_TODAY <id>
|
当天是否安排有给定ID的被动节日。 | ||||||||||
SEASON <season> +
|
季节(为spring、summer、fall 或 winter之一)。可以指定多个值,代表匹配其中任一个(例如SEASON spring summer匹配春季或夏季)。 | ||||||||||
SEASON_DAY [<season> <day> ]+
|
季节(与SEASON格式相同)和日期(1至28的整数)。可以指定多个值,代表匹配其中任一个(例如SEASON_DAY fall 15 winter 20匹配秋15日或冬20日)。 | ||||||||||
TIME <min> [max]
|
是否当前时间在<min> 和[max] 之间(默认为无穷大),包含端点值。时间为26小时制。
| ||||||||||
YEAR <min> [max]
|
是否年份在<min> 和[max] (默认为无穷大)之间,包含端点值。
|
事件
条件 | 效果 |
---|---|
IS_EVENT | 玩家是否正在观看事件或参加主动节日。不包括诸如夜市的被动节日。 |
IS_EVENT <event ID> +
|
玩家是否正在观看事件或参加主动节日。要求事件或节日匹配指定的<event ID> 之一。节日ID的格式为festival_<season> <day> (例如复活节为festival_spring13)。
|
世界
条件 | 效果 | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BUILDINGS_CONSTRUCTED <locations> [building type] [min] [max] [count unbuilt]
|
是否指定的建筑数量在一定区间内。
例如:
参数:
| ||||||||||||||||||||||||||
CAN_BUILD_CABIN | 玩家是否可以再建造联机小屋(即,联机小屋是否尚未超过玩家数)。 | ||||||||||||||||||||||||||
CAN_BUILD_FOR_CABINS <building ID>
|
指定类型的建筑数量是否小于联机小屋数。 | ||||||||||||||||||||||||||
FARM_CAVE <type> +
|
当前的农场山洞(为Bats、Mushrooms 或 None其中之一。) | ||||||||||||||||||||||||||
FARM_NAME <name>
|
农场名称。 | ||||||||||||||||||||||||||
FARM_TYPE <type> +
|
农场类型。其中<type> 取下列值之一:
| ||||||||||||||||||||||||||
FOUND_ALL_LOST_BOOKS | 是否博物馆的所有遗失之书已被找到。 | ||||||||||||||||||||||||||
HAS_TARGET_LOCATION | 当前上下文中是否显式指定了'Target'位置(即,忽略目标位置使用默认值的情况)。 | ||||||||||||||||||||||||||
IS_COMMUNITY_CENTER_COMPLETE | 是否已修复社区中心。 | ||||||||||||||||||||||||||
IS_CUSTOM_FARM_TYPE | 是否农场类型为模组自定义类型。(对于取代原版农场类型的模组,返回false)。 | ||||||||||||||||||||||||||
IS_HOST | 当前玩家是否为房主。 | ||||||||||||||||||||||||||
IS_ISLAND_NORTH_BRIDGE_FIXED | 通往姜岛挖掘场的桥梁是否已修复。 | ||||||||||||||||||||||||||
IS_JOJA_MART_COMPLETE | 是否建造了Joja仓库。 | ||||||||||||||||||||||||||
IS_MULTIPLAYER | 是否为多人游戏(无论是否有多人玩家连入)。 | ||||||||||||||||||||||||||
IS_VISITING_ISLAND <name>
|
是否指定名字的村民当天前往姜岛。 | ||||||||||||||||||||||||||
LOCATION_ACCESSIBLE <name>
|
是否可用给定地点。对于原版地点,这仅对CommunityCenter、JojaMart、Railroad或Desert有效;任何其他位置总会返回true,除非模组自定义了此查询。 | ||||||||||||||||||||||||||
LOCATION_CONTEXT <location> <context ID> +
|
给定地点的上下文ID。 | ||||||||||||||||||||||||||
LOCATION_HAS_CUSTOM_FIELD <location> <key> [value]
|
检查是否给定地点的CustomFields包含指定值。若缺省[value] ,则检查是否存在<key> 。
| ||||||||||||||||||||||||||
LOCATION_IS_INDOORS <location> LOCATION_IS_OUTDOORS <location> LOCATION_IS_MINES <location> LOCATION_IS_SKULL_CAVE <location>
|
给定地点是否在室内,在矿井中或在骷髅洞穴。 | ||||||||||||||||||||||||||
LOCATION_NAME <location> <name> +LOCATION_UNIQUE_NAME <location> <name> +
|
给定地点是否具有指定名称或唯一实例名称的其中之一(这两种名称都可以使用Debug Mode模组查看)。 | ||||||||||||||||||||||||||
LOCATION_SEASON <location> [<season> ]+
|
给定地点是否在指定季节之一中(季节为spring、summer、fall 或 winter)。主要用于处理地点上下文中的SeasonOverride字段。
例如,如下查询匹配春季或夏季: | ||||||||||||||||||||||||||
MUSEUM_DONATIONS <min count> [max count] [object type] +
|
是否所有玩家一共向博物馆捐献了最小<min count> 件、最多[max count] (默认为无穷)件物品,包含端点值。可以使用物品类型[object type] 过滤器,例如MUSEUM_DONATIONS 40 Arch Minerals要求古物或矿物共计40件。缺省[max count] 的情况下,仍可使用过滤器。
| ||||||||||||||||||||||||||
WEATHER <location> <weather> +
|
给定地点的天气ID。其中<weather> 为Festival、Rain、Snow、Storm、Sun、Wind或自定义天气ID。
| ||||||||||||||||||||||||||
WORLD_STATE_FIELD <name> <value>
|
是否Game1.netWorldState中的指定属性具有指定值。若属性为数值类型,则<value> 代表最小值。以下是某些没有被对应类别查询覆盖到的值:
例如,旅行货车使用 | ||||||||||||||||||||||||||
WORLD_STATE_FIELD <name> <min> [max]
|
仅用于数值属性。判断Game1.netWorldState某一属性是否在<min> 到[max] (默认为无穷)之间。若缺省[max] 或该属性不是数值型,则使用之前给出的语法。参见前一条WORLD_STATE_FIELD说明以获得某些实用属性的列表。
| ||||||||||||||||||||||||||
WORLD_STATE_ID <id> +
|
是否具有给定<id> 值的世界状态标识已被设置。
|
玩家信息 & 进度
条件 | 效果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
MINE_LOWEST_LEVEL_REACHED <min> [max]
|
玩家是否到达了矿井<min> 层到[max] 层(默认为无穷),包含端点值。
| ||||||||||
PLAYER_COMBAT_LEVEL <player> <min> [max] PLAYER_FARMING_LEVEL <player> <min> [max] PLAYER_FISHING_LEVEL <player> <min> [max] PLAYER_FORAGING_LEVEL <player> <min> [max] PLAYER_LUCK_LEVEL <player> <min> [max] PLAYER_MINING_LEVEL <player> <min> [max]
|
指定玩家是否有介于<min> 和[max] (默认为无穷)之间的技能等级,包含端点值。技能加成的等级也计入。
| ||||||||||
PLAYER_CURRENT_MONEY <player> <min> [max]
|
指定玩家是否有<min> 至[max] (默认为无穷)金。
| ||||||||||
PLAYER_FARMHOUSE_UPGRADE <player> <min> [max]
|
指定玩家是否升级了其农舍或联机小屋至<min> 级到[max] 级(默认为无穷)之间。包含端点值。参见可用的等级.
| ||||||||||
PLAYER_GENDER <player> <gender>
|
指定玩家性别是否为Male或Female。 | ||||||||||
PLAYER_HAS_ACHIEVEMENT <player> <achievement id>
|
指定玩家是否已解锁指定的成就ID。可用的ID位于Data/Achievements,以及一些没有列出的Steam专属成就ID。 | ||||||||||
PLAYER_HAS_ALL_ACHIEVEMENTS <player>
|
指定玩家是否已解锁了Data/Achievements中的全部成就。不计入Steam专属成就。 | ||||||||||
PLAYER_HAS_BUFF <player> <id>
|
指定玩家当前是否具有指定效果ID。 | ||||||||||
PLAYER_HAS_CAUGHT_FISH <player> <id>
|
指定玩家是否已抓住一条指定ID的鱼。 | ||||||||||
PLAYER_HAS_CONVERSATION_TOPIC <player> <id>
|
指定玩家是否有指定ID的对话主题正在活跃状态。 | ||||||||||
PLAYER_HAS_COOKING_RECIPE <player> <recipe name> PLAYER_HAS_CRAFTING_RECIPE <player> <recipe name>
|
指定玩家是否学会指定的烹饪/打造配方。配方为内部名称(允许空格)。例如,PLAYER_HAS_CRAFTING_RECIPE Current Field Snack 。
| ||||||||||
PLAYER_HAS_DIALOGUE_ANSWER <player> <id>
|
指定玩家是否在先前的对话中选择了指定的对话回答。 | ||||||||||
PLAYER_HAS_HEARD_SONG <player> <id>
|
指定玩家是否听过某个音乐的声音提示名称(也就是点唱机列出的音乐名称)。 | ||||||||||
PLAYER_HAS_ITEM <player> <item> [min] [max]
|
指定玩家背包中是否有[min] 到[max] (默认为无穷)之间那么多件的指定物品,包含端点值。其中物品ID <item> 可以为858或(O)858(齐钻),73或(O)73(核桃),或限定性或非限定性物品ID。
| ||||||||||
PLAYER_HAS_MAIL <player> <mail id> [type]
|
指定玩家是否有设置了指定的信件标识。
其中类型
| ||||||||||
PLAYER_HAS_PROFESSION <player> <profession id>
|
指定玩家是否具有指定的职业ID。参见技能和经验调试指令以获取ID列表。 | ||||||||||
PLAYER_HAS_RUN_TRIGGER_ACTION <player> <id>
|
指定玩家是否应用了具有指定ID <id> 的触发动作。
| ||||||||||
PLAYER_HAS_SECRET_NOTE <player> <id>
|
指定玩家是否已经阅读了指定秘密纸条,其中<id> 为纸条的整数ID。
| ||||||||||
PLAYER_HAS_SEEN_EVENT <player> <id>
|
指定玩家是否已经观看了给定<id> 的事件。
| ||||||||||
PLAYER_HAS_TOWN_KEY <player>
|
指定玩家是否已获得小镇钥匙。 | ||||||||||
PLAYER_HAS_TRASH_CAN_LEVEL <player> <min> [max]
|
指定玩家的垃圾桶等级是否介于<min> 和[max] (默认为无穷)之间。包含端点值。<level> 可以为0(基础)、 1(铜)、2(钢)、3(金)或 4(铱)。
| ||||||||||
PLAYER_LOCATION_CONTEXT <player> <location context>
|
指定玩家是否处于指定的地点上下文。 | ||||||||||
PLAYER_LOCATION_NAME <player> <location name> +PLAYER_LOCATION_UNIQUE_NAME <player> <location name> +
|
指定玩家是否在指定位置,使用游戏名称或唯一实例名称(两种名称都可以使用Debug Mode模组获得)。其中<location name> 无法识别目标位置关键词例如Here。
| ||||||||||
PLAYER_MOD_DATA <player> <key> <value>
|
指定玩家是否有模组添加的、具有指定<key> 和<value> 的player.modData条目。
| ||||||||||
PLAYER_MONEY_EARNED <player> <min> [max]
|
指定玩家是否赚了介于<min> 和[max] (默认为无穷)金。包含端点值。
| ||||||||||
PLAYER_KILLED_MONSTERS <player> <monster name> + [min count] [max count]
|
指定玩家是否杀了介于 [min count] (默认为1)到 [max count] (默认为无穷)只给定怪物。包含端点值。若指定多只怪物,则检查击杀总数。
例如 // killed 50+ slimes, skeletons, and bugs combined
PLAYER_KILLED_MONSTERS Current "Green Slime" Skeleton Bug 50
| ||||||||||
PLAYER_SHIPPED_BASIC_ITEM <player> <item ID> [min count] [max count]
|
指定玩家是否售出了 [min count] (默认为1)至 {{o|max count}(默认为无穷)件指定商品。仅对被游戏出货统计数据跟踪的物品有效(也就是收集品菜单中列出的物品)。
| ||||||||||
PLAYER_SPECIAL_ORDER_ACTIVE <player> <order id>
|
指定玩家是否正在进行指定的特殊任务。 | ||||||||||
PLAYER_SPECIAL_ORDER_COMPLETE <player> <order id>
|
指定玩家是否已完成指定的特殊任务。 | ||||||||||
PLAYER_SPECIAL_ORDER_RULE_ACTIVE <player> <rule id>
|
指定玩家是否有处于活跃状态的特殊任务规则。 | ||||||||||
PLAYER_STAT <player> <stat name> <min value> [max value]
|
指定玩家的指定统计项是否有介于<min value> 和[max value] (默认为无穷)之间的值。包含端点值。
⚠ 注意:在多人游戏中,统计项并不是同步的。因此农场助手并不能获取房主或其他农场助手的统计项。 可用的统计项名称为:
| ||||||||||
PLAYER_VISITED_LOCATION <player> <location name> +
|
指定玩家是否已造访指定地点的其中之一。例如, PLAYER_VISITED_LOCATION Current IslandWest 检查玩家是否造访过岛屿西部。
注意:
|
玩家关系
条件 | 效果 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PLAYER_FRIENDSHIP_POINTS <player> <npc> <min points> [max points]
|
指定玩家是否具有介于<min points> 和[max points] (默认为无穷)之间的友谊值。包含端点值。其中<npc> 为村民的内部名称,亦可为Any(检查所有村民)或 AnyDateable(检查所有可约会村民)。
例如,下述查询会检查当前玩家与阿比盖尔是否有大于等于750点友谊(即3+心): PLAYER_FRIENDSHIP_POINTS Current Abigail 750 | ||||||||||||||
PLAYER_HAS_CHILDREN <player> [min] [max]
|
指定玩家是否有介于[min] (默认为1)和 [max] (默认为无穷)之间个孩子。包含端点值。
| ||||||||||||||
PLAYER_HAS_PET <player>
|
指定玩家是否有宠物。 | ||||||||||||||
PLAYER_HEARTS <player> <npc> <min hearts> [max hearts]
|
指定玩家是否有一个友谊值介于 <min hearts> 和 [max hearts] (默认为无穷)之间的朋友。其中<npc> 为村民的内部名称,亦可为Any (检查所有村民)或 AnyDateable(检查所有可约会村民)。
例如,下述例子检查当前玩家是否与阿比盖尔有3+心的友谊值: PLAYER_HEARTS Current Abigail 3 | ||||||||||||||
PLAYER_HAS_MET <player> <npc> +
|
指定玩家是否与指定村民之一交谈至少以此。其中<npc> 为村民内部名称。
| ||||||||||||||
PLAYER_NPC_RELATIONSHIP <player> <npc> <type> +
|
指定玩家是否与指定村民有指定关系之一。其中<npc> 为NPC的内部名称或 Any(检查所有村民)。
关系类型
| ||||||||||||||
PLAYER_PLAYER_RELATIONSHIP <player> <other player> <type> +
|
指定玩家是否与指定玩家有指定关系之一。其中<other player> 可以为目标玩家或Any(检查所有玩家)。
关系类型
| ||||||||||||||
PLAYER_PREFERRED_PET <player> <pet type> +
|
指定玩家的宠物喜好是否为指定类型之一。原版宠物类型为Cat 和Dog。 |
随机化
条件 | 效果 |
---|---|
RANDOM <chance> [@addDailyLuck]
|
随机概率检查。每次调用,结果都会更新。例如RANDOM 0.4 每次有40%的概率返回true。
若指定了@addDailyLuck参数,则玩家的每日运气会加到概率上。 |
SYNCED_CHOICE <interval> <key> <min> <max> <choices> +
|
选取介于<min> 和<max> 之间的随机整数,包括端点值,并检查其是否匹配<choices> 其中之一。在相同的时间区间 <interval> (取tick、day、season 或 year 之一),相同<key> 产生的随机数的结果保持不变,即使在不同玩家间也如此。
例如,SYNCED_CHOICE day example_key 1 5 1 2在1至5之间取值,并检查是否为1或2. 主要用于需要在离散分类中随机取值的情形。常规概率检查请使用SYNCED_RANDOM。 |
SYNCED_RANDOM <interval> <key> <chance> [@addDailyLuck]
|
随机概率检查。在相同的时间区间 <interval> (取tick、day、season 或 year 之一),相同<key> 产生的随机数的结果保持不变,即使在不同玩家间也如此。
例如,SYNCED_RANDOM day cart_rare_seed 0.4在当天第一次调用时有40%概率返回true,当天再次使用cart_rare_seed调用时返回值不变。 若指定@addDailyLuck参数,则将玩家的每日运气加到概率上。 |
SYNCED_SUMMER_RAIN_RANDOM <base chance> <day multiplier>
|
SYNCED_DAY_RANDOM的专用变体,用于计算夏季下雨的概率,后者随夏季天数增加。 |
仅用于物品
如下查询仅用于需要查询物品的情形(例如打造配方、商店等都常常需要检查物品);若用在其他情形,则返回false。此类查询需要<target>
参数,为输入物品 Input(放入机器的物品)或 目标物品Target(机器输出的物品、果树水果、商店物品等)。仅对原版上下文适用。模组可以自由选择希望向Input或Target传入的物品。
条件 | 效果 |
---|---|
ITEM_CATEGORY <target>
|
物品是否具有非0的类别。 |
ITEM_CATEGORY <target> [category] +
|
物品是否具有匹配给定值的类别。 |
ITEM_CONTEXT_TAG <target> <tags>
|
物品是否具有全部标签,标签用空格分隔。例如ITEM_CONTEXT_TAG Target bone_item marine_item 仅匹配同时具有给出的两个标签的物品。
|
ITEM_EDIBILITY <target> [min] [max]
|
物品的可食性是否介于 [min] (默认为-299)至 [max] (默认为无穷)之间。包含端点值。可食性-300的物品不可使用,因此不指定[min] 和[max] 参数的ITEM_EDIBILITY <target> 查询会检查物品是否可食。
|
ITEM_ID <target> <item ID> +
|
物品是否具有指定限定性或非限定性物品ID。 |
ITEM_ID_PREFIX <target> <prefix>
|
物品的限定性或非限定性物品ID是否具有指定前缀。 |
ITEM_NUMERIC_ID <target> [min] [max]
|
物品是否具有介于[min] 和[max] 之间的数字物品ID(二者分别默认为可能的最低/最高值)。
|
ITEM_OBJECT_TYPE <target> <type> +
|
物品是否具有指定的物体类型。 |
ITEM_PRICE <target> <min> [max]
|
物品是否具有介于<min> 和[max] (默认为最大可能值)之间的、从商店购入的价格。此查询会检查基础售价(包括利润率,但不包括自定义商店数据,例如自定义价格、自定义价格修饰器、反季价格等)。
|
ITEM_QUALITY <target> <min> [max]
|
物品品质是否介于 <min> 和 [max] (默认为无穷)之间。包含端点值。可能的取值为:0(普通)1(银星)2(金星)或 4(铱星)。
|
ITEM_STACK <target> <min> [max]
|
物品堆叠数量是否介于 <min> 和 [max] (默认为无穷)之间。包含端点值。注意仅适用于<target> 给出的物品。不包括背包内的其他物品。
|
ITEM_TYPE <target> <type> +
|
物品的类型定义ID是否匹配指定值之一。例如ITEM_TYPE Target (BC)匹配大型打造品。 |
ITEM_HAS_EXPLICIT_OBJECT_CATEGORY <target>
|
(专用) 物品是否在Data/Objects指定了显式类别,而忽略代码中动态分配的类别(例如,戒指)。无显式类别的物品往往是(但不都是)像秘密纸条或未实装物品的特殊物品。 |
不可变
条件 | 效果 |
---|---|
TRUE | 总匹配成功。 |
FALSE | 总匹配失败。 |
通用值
目标地点
某些条件需要<location>
参数。可以为如下之一:
值 | 结果 |
---|---|
Here | 当前玩家所在地点(不受目标玩家影响)。 |
Target | 包含待编辑实体的地点(例如Data/Machines的机器或Data/FruitTrees的果树)。
若待编辑素材并不属于某个地点,则采用目标玩家所在地(若设置了此参数),否则默认为Here。 |
其他 | 待检查地点的地点ID (即内部名称)。 |
目标玩家
某些条件需要<player>
参数。可以为下列之一:
值 | 结果 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Any | 至少一个玩家必须匹配此条件,无论其是否在线。 | ||||||||||||
All | 每个玩家必须匹配此条件,无论其是否在线。 | ||||||||||||
Current | 当前玩家。 | ||||||||||||
Host | 房主。 | ||||||||||||
Target | 依赖于上下文:
| ||||||||||||
其他 | 待检查玩家在多人游戏中的唯一ID。 |
关于C#模组作者
在其他地方使用查询
C#代码可以使用GameStateQuery类进行查询,此类提供了一些工具方法,比如
GameStateQuery.CheckConditions(query)
或GameStateQuery.IsImmutablyTrue(query)
。
亦可使用事件前提中的游戏状态查询,这种查询使用最新的前提标识,例如some_event_id/gameStateQuery !SEASON Spring, WEATHER Here Sun
。
扩展性
C#模组能够: