====== Conditions ======
===== 条件 =====
----
==== 介绍 ====
条件用于确定一个动作是否可以执行。这些条件放置在配置中的条件部分下,如下所示(页面底部)。
并非所有条件都适用于任何地方,无法在条件选项中使用变量。
条件可以在中使用:
* [[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/skills/mechanics/skill|技能机制]]
* [[插件手册:mythicmobs:物品:掉落物品|掉落物品]]表
* [[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/Spawners|生成器(不推荐使用的条件系统)]]
* [[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/Random%20Spawns|随机生成器]]
应用多个条件时,必须满足所有条件才能执行操作。某些条件允许可以用逗号分隔的数组。这些条件只需要匹配数组中的字符串之一。
要查看如何使用仅高级在线目标条件,[[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/skills/conditions/in-linetargetconditions|请单击此处!]](也就是付费版)
==== 用法 ====
----
==== 类型 ====
条件可以分为两种类型-
1.一般条件:可用于 **实体**和**位置** 或**仅用于实体**的条件。
* 比较条件:需要两个实体或两个位置的条件。此条件仅在技能 yaml 的 TargetConditions 部分中使用时才有意义。**请参阅比较条件!**
技能的条件节点中使用的条件:
* 每个条件都可以使用。
* 施法者始终是将被检查的实体。可以使用所有条件,但比较 2 个实体的条件在这里没有意义。
技能的 TargetConditions 节点中使用的条件:
* 每个条件都可以使用。
* TargetConditions 节点只能在技能中使用。
* 比较实体取决于技能的目标。如果技能使用@self,则比较实体是施法者,如果技能使用任何其他目标,则比较实体/位置是目标中给出的实体。
==== 例子 ====
Conditions:
- globalscore{objective=Test;v=>10}
此条件在条件节点下使用,并将检查施法者的条件。无论技能的目标是什么。
----
TargetConditions:
- globalscore{objective=Test;v=>10}
这个(相同的)条件在 TargetConditions 节点下使用,并将检查目标的条件。
注意:CompareConditions 仅在 TargetConditions 节点中有意义,因为它们比较 2 个实体,其中 1 个始终是施法者,另一个是目标实体。如果在条件节点中使用它们,施法者和目标总是相同的。
**格式:**
自 4.0.0 起,所有条件现在都有新格式。
Conditions:
- condition [variable]
- condition [variable] [action]
- condition [variable] [action] [action_variable]
- condition{variable1=value;variable2=value} [action] [action_variable]
这些新的“动作”控制着满足或不满足条件时技能的行为方式。这里有些例子:
Conditions:
- day required
- stance defensive power 0.5
- stance{stance=defensive} power 0.5
- score{objective=test;value=>20} cancel
- haspotioneffect{type=POISON;level=>0;duration=0to100} true
**范围值:范围**
值使用格式 ''to'' 或 ''-'' 。如果要在范围内使用负数,则必须使用 ''to'' 而不是 ''-'' 。这里以距离条件为例:
TargetConditions:
- distance{d=1to10} true
TriggerConditions:
- distance{d=1to10} true
Conditions:
- altitude{a=1-5}
===== 条件动作 =====
条件操作允许您根据条件执行其他操作。默认条件动作为**True**
|**行动**|**描述**|
|required (or true)|技能运行需要条件。|
|cancel (or false)|如果满足此条件,该技能将不会运行。|
|power [multiplier]|修改技能的威力(ei power 2.0会使技能威力翻倍)|
|cast [skill]|如果满足条件,则施放额外的技能。|
|castinstead [skill]|如果满足条件,则改为施放不同的技能。|
|orElseCast [skill]|如果不满足条件,则改为施放不同的技能|
===== 条件 =====
具体的例子请[[https://git.mythiccraft.io/mythiccraft/MythicMobs/-/wikis/Skills/Conditions#conditions|查阅原wiki]]
|**条件**|**类型**|**描述**|
|Altitude|Entity|测试目标实体离地面多远|
|Biome|Location|测试目标是否在给定的生物群系列表中|
|BlockType|Location|测试存在于目标位置的材料类型|
|Blocking|Entity|测试目标实体是否被盾牌阻挡|
|Burning|Entity|目标实体是否着火|
|Children|Entity|测试施法者有多少召唤物|
|Color|Entity|测试实体的颜色|
|Crouching|Entity|目标实体是否蹲伏|
|Cuboid|Compare|目标是否在 location1 x location2 之间的给定长方体内|
|DamageAmount|Entity|检查受到的一系列伤害|
|DamageCause|Entity|检查损坏原因的类型|
|Dawn|Location|如果时间是黎明,从 22000 到 2000 游戏时间|
|Day|Location|如果时间是白天,从 2000 到 10000 游戏时间|
|Distance|Compare|施法者与目标的距离是否在给定范围内|
|DistanceFromSpawn|Location|世界出生点到目标的距离是否在给定范围内|
|Dusk|Location|如果时间是黄昏,从14000到18000游戏时间。|
|EnchantingLevel|Entity|检查实体经验|
|EnderDragonPhase|Entity|检查末影龙是否处于一个或多个阶段|
|EntityType|Entity|测试目标的实体类型|
|Faction|Entity|测试目标阵营|
|FallSpeed|Entity|如果目标的下落速度在给定范围内|
|FieldOfView|Compare|测试目标是否在施法者注视的给定角度内|
|FoodLevel||检查目标是否在范围内有食物|
|FoodSaturation||检查目标是否在范围内有食物|
|Gliding|Entity|如果目标滑翔|
|Globalscore|Entity|检查全局记分牌值|
|HasAura|Entity|检查目标实体是否具有给定的光环|
|HasAuraStacks|Entity|测试目标是否有给定范围的光环叠加|
|HasCurrency|Entity|如果目标拥有给定数量的金库货币|
|HasInventorySpace|Entity|如果目标有给定数量的背包空间|
|HasItem|Entity|测试目标玩家是否拥有给定数量的给定材料|
|HasOwner|Entity|测试目标生物是否有所有者|
|HasParent|Entity|测试目标生物是否有父级|
|HasPassenger|Entity|检查目标实体是否被骑乘|
|HasGravity|Entity|测试目标生物是否有重力|
|HasPotionEffect|Entity|测试目标实体是否有药水效果|
|HasTag|Entity|测试目标是否有记分牌标签|
|Haspermission|Entity|测试目标玩家是否有权限|
|Health|Entity|匹配目标的血量|
|Height|Location|检查目标的 Y 位置是否在范围内|
|HeightAbove|Location|检查目标的 Y 位置是否高于某个值|
|HeightBelow|Location|检查目标的 Y 位置是否低于给定值|
|Holding|Entity|检查目标是否持有给定的材料(支持 MythicMobs 和 MMOItems)|
|Inblock|Location|检查目标位置的材料|
|Incombat|Entity|如果目标生物在战斗中被考虑|
|Inside|Location|检查目标头上是否有方块|
|isCaster|Entity|检查目标是否是施法者|
|isChild|Entity|检查目标是否是施法者的子级|
|isLiving|Entity|检查目标是否为生物|
|isMonster|Entity|检查目标是否是怪物|
|isPlayer|Entity|检查目标是否是玩家|
|isSprinting|Entity|检查目标玩家是否正在冲刺|
|ItemRecharging|Entity|检查目标的武器是否正在装填|
|LastDamageCause|Entity|检查目标的最后一次伤害原因|
|LastSignal|Entity|匹配目标生物收到的最后一个信号|
|Level|Entity|检查目标 MythicMob 的等级|
|LightLevel|Location|测试目标位置的光照水平|
|LineOfSight|Compare|测试目标是否在施法者的视线范围内|
|LunarPhase|Location|检查目标世界的月相|
|Mobsinradius|Location|检查给定半径内有多少生物|
|Mobsinchunk|Location|将范围与目标位置区块中的生物数量相匹配|
|Mobsinworld|Location|将范围与目标世界中的生物数量相匹配|
|Mounted|Entity|如果目标实体正在骑乘坐骑/车辆|
|Moving|Entity|如果目标的速度大于零|
|MythicMobType|Entity|检查目标生物的 MythicMob 类型|
|Night|Location|如果时间是晚上,从 14000 到 22000 游戏时间|
|NotInRegion|Location|如果目标位置不在给定的 WorldGuard 区域内|
|OffGCD|Entity|检查目标生物是否有激活的全局冷却时间|
|OnBlock|Location|匹配目标实体所在的方块|
|OnGround|Entity|如果目标实体站在坚实的地面上|
|Outside|Location|如果目标上方有开阔的天空|
|Owner|Compare|检查目标实体是否是施法者的所有者|
|OwnerIsOnline|Entity|检查目标生物的主人是否在线,如果主人是玩家|
|Pitch|Entity|检查目标实体的间距是否在一个范围内|
|PlayerKills|Entity|匹配目标生物杀死的玩家数量|
|PlayersInRadius|Entity|检查半径内有多少玩家|
|PlayerNotWithin|Location|检查是否有玩家在目标半径内|
|PlayerWithin|Location|检查是否有玩家在目标半径内|
|Raining|Location|如果目标世界正在下雨|
|Region|Location|如果目标在给定的 WorldGuard 区域内|
|SameFaction|Entity|测试施法者和目标是否在同一阵营|
|Score|Entity|检查目标实体的记分板值|
|SlimeSize|Entity|检查目标实体的大小|
|Stance|Entity|检查目标生物的姿态|
|StringEquals|Meta|检查 value1 是否等于 value2。这两个值都可以使用变量和占位符。|
|Sunny|Location|如果目标世界的天气晴朗。|
|TargetInLineOfSight|测试目标是否有视线到他们的目标|
|TargetNotInLineOfSight||测试目标是否与目标没有视线|
|TargetWithin|Entity|测试目标的目标是否在一定距离内|
|Targetnotwithin|Entity|测试目标的目标是否不在一定距离内|
|Targets|Meta|测试从父技能树继承的目标数量是否与给定范围匹配。|
|Thundering|Location|检测目标世界是否雷雨天气|
|VariableInRange|Meta|检查给定的数值变量是否在某个范围内。|
|VariableIsSet|Meta|检查是否设置了给定的变量。|
|Variableequals|Meta|检查给定变量是否具有特定值。|
|Wearing|Entity|测试目标实体的装备。|
|World|Location|检查目标世界的名称。|
|Worldtime||将范围与目标位置的世界时间相匹配。|
|Yaw|Entity|根据范围检查目标实体的偏航。|
|yDiff|Entity|检查目标实体和施法者之间 Y 的差异。|
===== 更多例子 =====
FlameShock:
Cooldown: 1
Conditions:
- targetwithin 15
- targetinlineofsight true
- incombat
- stance aggressive
- onblock GRASS
- offgcd
Skills:
- gcd{t=60}
- message{m=" begins casting a spell"}
- potion{t=SLOW;d=60;l=7}
- delay 60
- message{m=" &ecombusts"}
- effect:particles{p=flame;a=20;hS=3;vS=1;s=0;y=2}
- potion{t=HARM;d=1;l=1}