# 更新记录

## 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"
```
