# 更新记录

## 2020/11/07 — 1.0.9 \~ 1.1.0 版本

```yaml
#1.1.0 内容
#新增 冷却判断 "cd if [跳转]" 关键词
#    判断是否正在冷却中,如果没在冷却则继续执行反正停止或跳转
#新增 {对象 最大生命} 占位符,该占位符跟 {对象 当前生命} 意义相同
#    只是一个获取最大生命力,一个获取当前生命,怪物仅可通过 {entity 最大生命} 来获取
#    怪物最大的生命力
#修复 修复条件判断没设置跳转所导致的无限循环问题 (危)
#修复 修复 attribute 关键词属性持续时间到时后清除错误问题
```

## 2020/09/13 — 1.0.8 版本

```yaml
#1.0.8 内容
#调整 从现在开始除[value]外的所有关键词都支持 {v:变量名} {e:对象} 占位符
#    例如 "attack attacker {v:damage}"
#调整 attack 关键词
#    格式 "attack 对象 伤害 (可选)属性抵消-[消息{0}此次伤害,{1}被抵消的伤害]"
#    例如 "attacker entity-r:5:false,false 1000 物理防御-[被抵消了 {1} 最终额外造成 {0} 点伤害]"
#    则额外造成 1000-对象的物理防御属性
```

## 2020/09/12 — 1.0.7 版本

```yaml
#1.0.7 内容
#新增 permission 权限判断关键词
#    格式: "permission 对象 是否需要全部拥有(true/false) [权限,权限...] <~跳转>"
#    该关键词对象无法获取范围对象
#新增 数据储存(Data)变量
#    变量格式 "%ae_<data:数据名>%" 如果无默认值为 0
#调整 调整范围对象获取格式,新增类型判断
#    attacker-r:范围,排除触发者,排除被触发者,(可选)[类型,类型,...]
#    entity-r:范围,排除触发者,排除被触发者,(可选)[类型,类型,...]
#    类型不写的话默认所有活动实体,玩家&怪物
#修复 修复范围对象获取会获取到非怪物等实体
```

```yaml
#实例

AttributeExtension:
  test6:
    key: "范围雷击"
    placeholder: "testdamage"
    run:
      - "value damage [{attacker %ap_testdamage_random%}]"
      - "permission attacker true [lightning.effect] ~3"
      - "lightning entity-r:5,true,false,[PLAYER]"
      - "attack entity-r:5,true,false damage"
      - "message attacker-r:5,false,false,[PLAYER] [&6雷击！ 将对5格范围内怪物造成一次雷击并造成 {v:damage} 点伤害]"
    type: "DAMAGE" 
```

## 2020/08/30 — 1.0.6 版本

```yaml
#新增 新增范围对象获取
#    原只提供 attacker entity 对象
#    从该版本起可通过 attacker-r 或 entity-r 获取攻击者或被攻击者范围内的实体
#    格式 "attacker-r:范围,是否排除攻击者,是否排除被攻击者"
#    例如 "attacker-r:5,true,false"
#    具体示例 "attack entity-r:5,true,false 1000" 对被攻击者5格半径内的实体造成1000伤害
#
#新增 attribute-set 关键词 (AttributePlus 2.3.4+)
#    该方法对象仅适合 attacker entity 无法范围获取,适合 DAMAGE INJURED 类型
#    该关键词可以设置此次事件,攻击者或被攻击者的属性值
#    格式 "attribute-set 对象 [属性 值,属性 值,....]"
#    例如 "attribute-set attacker [物理伤害 0(注1)]" 将攻击者的时候设为 0
#
注1: "支持 {v:变量值名} 获取值,同时支持直接输入值,如‘0’"
```

```yaml
#实例

AttributeExtension:
  test6:
    key: "范围雷击"
    placeholder: "testdamage"
    run:
      - "value damage [{attacker %ap_testdamage_random%}]"
      - "lightning entity-r:5,true,false"
      - "attack entity-r:5,true,false damage"
      - "message attacker-r:5,false,false [&6雷击！ 将对5格范围内怪物造成一次雷击并造成 {v:damage} 点伤害]"
    type: "DAMAGE" 
```

## 2020/08/27 — 1.0.4 \~ 1.0.5 版本

```yaml
1.0.5
#修复 修复当对象非玩家时,计算其他变量时报错问题
#调整 现在 attribute 标签的持续时间支持为 value 变量名
#    例如下方
#    "value time [{attacker 持续时间}]"
#    "attribute 测试 attacker [攻击力 100] time"


1.0.4
#调整 %ae_<r-a:属性-属性>% 及 %ae_<r-v:变量名-变量名>% 支持怪物获取
#新增 新增 type 关键词
#    格式 "type entity [类型,类型,...] [~<行>]"
#    实体类型列表: https://bukkit.windit.net/javadoc/org/bukkit/entity/EntityType.html
#新增 新增 random 关键词
#    格式 "random [行数,行数,...]" 随机跳转行数
```

```yaml
  #测试示例
  
  test6:
    key: "测试随机"
    placeholder: "testdamage"
    run:
      - "type attacker [PLAYER]"
      - "random [2,4,6,8]"
      - "message attacker [&6触发 &3火 &6提示]"
      - "end"
      - "message attacker [&6触发 &3水 &6提示]"
      - "end"
      - "message attacker [&6触发 &3土 &6提示]"
      - "end"
      - "message attacker [&6触发 &3风 &6提示]"
    type: "DAMAGE"
```

## 2020/08/08 — 1.0.3 版本

```yaml
#重写 重写关键词处理代码
#    新增 BaseNewKey 抽象类,可用于外部注册新的关键词
#    新增 INewKeyType 枚举类,用于设置新注册的关键词类型
#
#新增 示例-伤害吸收.yml 属性新版示例配置
#新增 新增 数据储存(Data) 功能
#    新关键词 "data" 用于储存数据操作,该储存所储存的数据是持久
#    存在,可在下次触发属性时对数据值进行操作
#    格式 "data 对象 数据名 <add/take/set/reset> <值>"
#    value 关键词计算公式新增变量 "{attacker data,数据名}" 获取对应数据值”
#新增 command 关键词,触发指令
#    格式 "command 对象 [fly,say &f{e:attacker} 说: &eAP牛逼]"
#新增 lightning 关键词,触发雷击特效
#    格式 "lightning 对象"
#新增 update 关键词,用于更新实体属性,仅适用于 RUNTIME 类型属性
#    格式 "update 对象 attribute [属性 值,属性 值,...]"
#
#调整 damage 关键词调整格式 "damage <add/take/set> <值> <是否无视防御抵消 true/false>"
#调整 attribute 关键词现在起对非玩家实体也可生效
#修复 修复 attribute 关键词增加的属性值为科学计数时实际增加属性值不准确问题
#修复 修复 defaultValue 配置项无效问题
```

```yaml
#1.0.3 示例配置
#示例效果
#受到攻击时抵消并吸收攻击者伤害,当吸收的伤害值达到 1000 时对下一个攻击者触发雷击伤害
#伤害为 储存的伤害数据 触发后重置数据值并重新累积

AttributeExtension:
  #自定义
  newInjured:
    key: "伤害吸收"
    placeholder: "newinjured"
    run:
      - "value v [{entity 伤害吸收}]"
      # 这里的 {entity data,伤害吸收值} 就是读取该对象数据储存内 伤害吸收值 数据的值
      - "value vDamage [{entity data,伤害吸收值}+{value v}]"
      # 判断储存的数据值是否 大于或等于 1000 满足则继续执行,不满足则跳至 第九行(10)
      - "premise vDamage >= 1000 true,false ~9"
      # 满足时重置该对象数据储存内 伤害吸收值 数据的值
      - "data entity 伤害吸收值 reset"
      # 将伤害释放
      - "attack attacker vDamage"
      # 雷击特效
      - "lightning attacker"
      - "command entity [fly,say &f{e:attacker}说: &eAP牛逼]"
      - "message entity [&6&l! &f伤害吸收达到 &c1000 &f点,对 &c{e:attacker} &f造成 &c{v:vDamage} &f伤害]"
      - "end"
      # 不满足上方 premise 条件时抵消攻击者伤害并往 伤害吸收值 数据内增加储存值
      - "data entity 伤害吸收值 add v"
      # 抵消伤害
      - "damage take v"
      - "message entity [&6&l! &f抵消 &c{v:v} &f点伤害并吸收,已吸收 &c{v:vDamage} &f点伤害值,达到&c1000&f点则释放伤害!]"
    type: "INJURED"
```

## 2020/7/26 — 1.0.2 版本

```
调整 关键词 value 调整
    现在value关键词内计算公式支持包含 {value 变量名} 例子:
    - "value rate [{attacker %ae_<r-a:物理伤害倍率-物理伤害倍率[1]>%}]"
    - "value damage [{attacker 物理伤害[1]}*{value rate}/100]]"
    damage 变量计算公式内的 {value rate} 就是读取 rate 的变量名的值
    {value 变量名} 这里面的变量名必须在调用者前面运算,否则读取不到
调整 AttributePlus 前置版本要求 2.2.5+ 版本
```

```yaml
#1.0.2 新增示例文件
AttributeExtension:
  damages1:
    key: "物理攻击"
    placeholder: "damages"
    run:
      - "value rate [{attacker %ae_<r-a:物理伤害倍率-物理伤害倍率[1]>%}]"
      # {value rate} 获取上方 rate 变量的值
      - "value damage [{attacker 物理伤害[1]}*{value rate}/100]"
      - "damage add damage"
      - "message attacker [&6此次物理伤害加成倍率 &3{v:rate} &6共增加了 &3{v:damage} &6点伤害!]"
    type: "DAMAGE"
  damages2:
    key: "物理伤害倍率"
    placeholder: "rate"
    type: "NULL"
```

## 2020/7/23 — 1.0.1 版本

```
新增 title / sound / skill(付费版) 关键词
新增 PlaceholderAPI 变量
    %ae_<r-a:属性名-属性名[1]>% — 属性值范围随机 ("物理伤害"为最小值 & "物理伤害[1]"为最大值)
    %ae_<r-v:变量值名-变量值名>% — 变量值范围随机 (变量值为 value 关键词)
调整 对部分代码进行调整,优化
调整 新增付费版限制,付费版允许使用 skill 关键词,其他关键词免费版&付费版都有
    skill 关键词目前支持触发 MythicMobs 技能,后期将兼容 SkillAPI 技能
    付费版价格50R,至于为什么要付费,毕竟我要吃饭嘛~
```

| 关键词   | 格式                           | 说明                         |
| ----- | ---------------------------- | -------------------------- |
| title | title 对象 \[大标题,小标题,淡入,显示,淡出] | 给指定对象发送TITLE消息 (支持value变量) |
| sound | sound 对象 \[音效类型,音量,音调]       | 发送音效                       |
| skill | skill 对象 \[技能名,伤害倍率]         | 发送技能                       |

> skill 关键词说明: \
> &#x20;       技能名 — MythicMobs 技能配置内所设的技能名\
> &#x20;       伤害倍率 — MythicMobs 技能所设的伤害 \* 这个倍率\
> &#x20;       技能效果: <http://www.ersha-plugins.top:10271/AttributeExtension.gif>

```yaml
#上方 元素爆破属性 实例配置


AttributeExtension:
  element:
    key: "元素爆破率"
    placeholder: "element"
    run:
      - "value vChance [{attacker 元素爆破率}]"
      # 1.0.1 版本新增的 %ae_<r-a:元素伤害-元素伤害[1]>% 变量
      # 可以达到随机值的效果
      - "value vDamage [{attacker %ae_<r-a:元素伤害-元素伤害[1]>%}]"
      - "value vHuo [{attacker 火之元素}]"
      - "value vShui [{attacker 水之元素}]"
      - "chance vChance,true"
      # 判断 火元素是否大于水元素值 满足则继续执行,不满足则跳到第 10 行(从0算起第10行)
      - "premise vHuo > vShui true,false ~10"
      # 触发 MythicMobs 技能
      - "skill attacker [火元素爆破,vDamage]"
      - "message attacker [&6&l! &6火元素&f爆破,对目标造成 &c{v:vDamage} &f点火元素伤害!]"
      - "title attacker [&6&l火元素爆破,&6伤害 {v:vDamage},2,10,2]"
      # 执行完上述效果后终止
      - "end"
      # 判断 水元素是否大于或元素值 满足则继续执行,不满足则终止
      - "premise vShui > vHuo true,false"
      - "skill attacker [水元素爆破,vDamage]"
      - "message attacker [&b&l! &b水元素&f爆破,对目标造成 &c{v:vDamage} &f点水元素伤害!]"
      - "title attacker [&b&l水元素爆破,&6伤害 {v:vDamage},2,10,2]"
    type: "DAMAGE"
  huo:
    key: "火之元素"
    placeholder: "huo"
    type: "NULL"
  shui:
    key: "水之元素"
    placeholder: "shui"
    type: "NULL"
  elementDamage:
    key: "元素伤害"
    placeholder: "elementdamage"
    type: "NULL"
```


---

# Agent Instructions: 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:

```
GET https://ersha.gitbook.io/attributeextensi/geng-xin-ji-lu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
