> For the complete documentation index, see [llms.txt](https://hamsterbaron.gitbook.io/hamsterbaron/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hamsterbaron.gitbook.io/hamsterbaron/mechanic-guides/flags.md).

# 属性组 / Flags

## 什么是属性组

属性组负责进行一个机制的一些特征设定，例如触发概率，冷却，重复次数等元属性。这些属性为机制的运行提供了更为丰富的使用限制并减少部分逻辑上的开发重复性。

***

## 可用属性详情

#### 触发概率 TriggerProbability

单位：<kbd>百分比 %</kbd>

指定触发器被激活后有多少概率启动整个机制的运作。

> E.g. 设定键值对 `TriggerProbability: 50` 时，当触发器为开火时，每次开火有50%概率触发该机制，在该概率判定结束后才进入到后续属性与条件判定过程。

#### 冷却时间 Cooldown

单位：<kbd>游戏刻 Tick</kbd>

指定机制被成功执行一次后在多少游戏刻后再次可用。

> E.g. 设定键值对`Cooldown: 20`时，当触发器被激活，命中触发概率并通过条件检查进入动作块部分后，在1秒后该机制才可再次被成功触发。重复属性不受冷却影响。

#### 冷却组 CooldownGroup

合法值：<kbd>字符串 String</kbd>

指定机制属于哪个特定的冷却组，字符串相同的同一冷却组下所有机制共享剩余冷却时间。

> E.g. 设定键值对`CooldownGroup: “BASIC”` 时，如果另一机制同属于BASIC组内并成功激活后进入了5秒的冷却时间，则该机制同样进入5秒冷却时间。

#### 跳过首次检测 BypassFirstConditionCheck

合法值： <kbd>布尔值 Boolean</kbd>&#x20;

该布尔值决定持续性质触发器即使进入状态的一瞬间不满足检测条件是否仍继续监听直到条件满足。启用此项需同时满足触发器具有持续性及执行频率(Frequency)不为0，方可正常生效。

> E.g. 当此键值对`BypassFirstConditionCheck: true`时，假设触发器为"进行瞄准时"，条件块为“当前世界正在下雨”，执行频率为5tick一次，则玩家执行开镜动作时即使当前为晴天，Arcana 也会持续监听直到玩家退出开镜状态或世界进入雨天。

#### 持续检测时间 KeepCheckTime

单位：<kbd>游戏刻 Tick</kbd>

使用持续性质触发器时将需要<mark style="color:$warning;">持续</mark>处于触发状态并通过条件检测指定时间才会触发此机制。

> E.g. 设定键值对`KeepCheckTime: 40`时，如果触发器为“进行瞄准时”，则每次右键打开瞄准镜并不会直接激活触发器，需保持瞄准动作起码2秒才可触发。

#### 执行频率 Frequency

单位：<kbd>游戏刻 Tick</kbd>

使用持续性质触发器时将在仍满足触发状态时以设定频率每 Tick 后触发一次机制。

> E.g. 设定键值对`Frequency: 5`时，如果触发器为“奔跑时”，则玩家持枪奔跑时每0.25秒 (即5游戏刻) 触发一次，**但触发器与条件检查只在进入状态时被激活，**&#x9664;非使用BypassFirstCheck属性。

{% hint style="info" %}
**开发须知** : 有关于持续性质触发器的运作原理与特性，详见[触发器](/hamsterbaron/mechanic-guides/trigger.md)章节。
{% endhint %}

#### 重复次数 RepeatTimes

单位：<kbd>整形数值 int</kbd>

在机制被成功触发后将重复执行多少次动作块部分内容。

> E.g. 设定键值对`RepeatTimes: 2` 时，一旦条件通过并成功执行一次动作块，该机制动作块部分就一定会再次被执行两次，这两次不受触发状态，属性概率与冷却，条件是否通过的影响。

#### 重复延迟 RepeatDelay

单位：<kbd>游戏刻 Tick</kbd>

如有重复执行次数，每次重复执行后间隔多少游戏刻开始下一次执行。

> E.g. 设定键值对`RepeatDelay: 20`时，每次重复执行动作块的间隔为1秒，即20游戏刻。需注意此项仅影响重复进入动作块部分的冷却时间，动作块内每个行动的延迟是另外独立的部分。

#### 条件表达式类型 ConditionExpression

合法值：<kbd>ALL\_TRUE , ALL\_FALSE , BooleanExpression</kbd>

决定条件块的具体通过情况与是否最终判定条件块通过的关系。第n行条件为\<C`n`>。

> E.g. 设定键值对`ConditionExpression: ALL_FALSE`时，需条件块中每行条件均为假，总体条件才为真，可以执行动作块内容；值为`C1 &&! C2`时意为第一条件为真且第二条件为假时整体为真。

***

## 逻辑过程实例

以下将通过一个简单的例子和流程图演示这些属性如何决定一个机制在被触发器激活后的生效过程。该机制片段的效果是在被激活且条件判定通过后有空由控制台发送一句内容为<kbd>Hello</kbd>的聊天文本。

{% columns %}
{% column width="41.66666666666667%" %}

```yaml
# Other Configs..
Trigger: "ON_MAIN_HAND"
Flags:
  TriggerProbability: 50
  Cooldown: 20
  CooldownGroup: "BASIC_1"
  KeepCheckTimes: 40
  Frequency: 2
  RepeatTimes: 5
  RepeatDelay: 10
  ConditionExpression: "ALL_TRUE"
# Other Configs..
Actions:
- !<RunCommand>
  command: "say Hello"
# Other Configs..
```

在上述示例配置中，触发器为手持武器时触发，概率为50%，冷却为1秒 (20游戏刻)，属于冷却组BASIC\_1，持续检测时间为2秒 (40游戏刻)，且执行频率为每0.1秒 (2游戏刻) 一次，重复次数为5次，每次重复间隔0.5秒 (10游戏刻)，条件需为全部通过。

实际效果为玩家每次拿起武器并手持武器超过2秒后，有50%概率触发机制，触发后在1秒内不能再次触发，但程序仍会试图每0.1秒触发一次技能。触发后将会每隔0.5秒发送一句内容为Hello的文本，每次发送五句。一旦拿起后的第一次判定通过，之后的判定不再受该机制的生效概率影响。
{% endcolumn %}

{% column width="58.33333333333333%" %}

<figure><img src="/files/HBkuLFKJOPyxfD0YWxO4" alt=""><figcaption><p>属性组中每一项的作用过程流程示意图</p></figcaption></figure>
{% endcolumn %}
{% endcolumns %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hamsterbaron.gitbook.io/hamsterbaron/mechanic-guides/flags.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
