伤害转化 - woshiermuqwq/mythic-chinese GitHub Wiki
实体A可将自身受到的所有伤害等值转化为技能伤害 将技能伤害多次给予给其它实体(单次伤害受伤害次数影响)
- 本教程所用机制占比:占位符 100%
- 对版本的最低需求是 4.11 付费版
使用 变量:<skill.var.damage-amount> 以读取最后一次受到的伤害数值
将所读取到的数值加到另一个变量上面
然后给予伤害的伤害数值直接在 damage 的修改项: Amount 内进行计算.
此教程用到的所有占位符(包括变量)全都位于施法者身上, 下文将忽略
伤害转化:
Type: villager
Health: 100
Options:
NoAI: true
Skills:
# 初始化部分
- setvar{var=caster.伤害数值;t=float;v="0"} @self ~onSpawn
- setvar{var=caster.提示数值保留小数位;t=float;v="5"} @self ~onSpawn
# 自定义数值部分
- setvar{var=caster.伤害段数;t=float;v="5"} @self ~onSpawn
- setvar{var=caster.伤害范围;t=float;v="5"} @self ~onSpawn
#决定重复伤害次数
- setvar{var=caster.伤害转化-百分比;t=float;v="0.7"} @self ~onSpawn
#决定伤害转化比例, 1=100%
- setvar{var=caster.伤害吸收-持续-攻击;t=float;v="3"} @self ~onSpawn
#决定转化持续时间, 单位: 秒
- setvar{var=caster.伤害间隔;t=float;v="0.05"} @self ~onSpawn
#决定每段回血/伤害的间隔, 单位: 秒
#核心技能部分
- skill:伤害吸收-攻击 @self ~onInteract
右键后激活技能组: 伤害吸收-攻击
这里只是举个例子, 想怎样触发就自己套
伤害吸收-攻击:
Skills:
- ondamaged{os=机制初始化;n=伤害吸收-攻击模式;oh=伤害吸收;oe=伤害释放-攻击-效果;d=<caster.var.伤害吸收-持续-攻击>*20;c=500}
为自身创建一个
创建后激活技能组: 机制初始化, 持续时间为变量: 伤害吸收-持续-攻击 的值 x 20 刻
受伤后激活技能组: 伤害吸收
结束后激活技能组: 伤害释放-攻击-效果 的光环
机制初始化:
Skills:
- setvar{var=caster.伤害数值;t=float;v="0"}
- setvar{var=caster.释放数值;t=float;v="0"}
- setvar{var=caster.判定;t=float;v="0"}
重设相关变量值
伤害释放-攻击-效果:
Skills:
- setvar{var=caster.伤害数值-转化;t=float;v="<caster.var.伤害数值>*<caster.var.伤害转化-百分比>"}
- setvar{var=caster.释放数值;t=float;v="<caster.var.伤害数值-转化>/<caster.var.伤害段数>"}
- setvar{var=caster.伤害数值;t=integer;v="<caster.var.伤害数值>*(10^<caster.var.提示数值保留小数位>)"}
- setvar{var=caster.伤害数值;t=float;v="<caster.var.伤害数值>/(10^<caster.var.提示数值保留小数位>)"}
- m{m="<caster.name>吸收了<&sp><caster.var.伤害数值>点伤害, 转化为<&sp><caster.var.伤害数值-转化>点<&sp>技能伤害给予给<&sp>半径<caster.var.伤害范围>格<&sp>球体范围内的所有实体"} @eir{r=16}
- setvar{var=caster.伤害数值;t=float;v="0"}
- d{a=<caster.var.释放数值>;pk=true;pi=true;i=true;repeat=<caster.var.伤害段数>-1;repeatInterval=<caster.var.伤害间隔> *20} @eir{r=<caster.var.伤害范围>}
设置变量: 伤害数值-转化 的值为: 伤害数值 的值 x 伤害转化-百分比
设置变量: 释放数值 的值为: 伤害数值-转化 的值 / 伤害段数
设置变量: 伤害数值 的值为: 伤害数值 * 10的n次方(n = 变量: 提示数值保留小数位 的值)
发送信息
设置变量: 伤害数值 的值为: 0
对 以自身为中心, n格方块半径球体范围(n = 变量: 伤害范围 的值)内的所有实体 造成伤害
伤害等值于变量: 释放数值 的值, 无视护甲, 无视受伤间隔, 不会造成击退, 重复激活, 重复间隔为
变量: 伤害间隔 的值 x 20, 重复次数为 变量: 伤害段数 的值 -1.
因为这边要做一个, 能自动省略所设置小数位后面的数字
虽然处理数值那部分不需要多一个变量
但提示信息需要同时提示 所受到的所有伤害 的值 和 转化后的数值
如果只用1个变量的话, 1个变量不可能同时拥有两个值
激活技能. 吸收X秒内的所有伤害, 技能结束后转化为技能伤害 伤害周围实体
激活技能. 吸收X秒内的所有伤害, 技能结束后转化为生命 恢复自身
激活技能. 吸收X秒内的所有伤害, 技能结束后若吸收值达到指定值 转化为生命
激活技能. 吸收X秒内的所有伤害, 技能结束后若吸收值达到指定值 转化为2倍技能伤害
将全部与数值有关的, 全都变量化
伤害转化:
Type: villager
Health: 100
Options:
NoAI: true
Skills:
# 初始化部分
- setvar{var=caster.伤害数值;t=float;v="0"} @self ~onSpawn
- setvar{var=caster.提示数值保留小数位;t=float;v="5"} @self ~onSpawn
# 自定义数值部分
- setvar{var=caster.伤害段数;t=float;v="5"} @self ~onSpawn
- setvar{var=caster.回血段数;t=float;v="5"} @self ~onSpawn
- setvar{var=caster.自伤段数;t=float;v="5"} @self ~onSpawn
- setvar{var=caster.恢复段数;t=float;v="5"} @self ~onSpawn
- setvar{var=caster.伤害范围;t=float;v="5"} @self ~onSpawn
#决定重复伤害/回血次数
- setvar{var=caster.伤害转化-百分比;t=float;v="0.7"} @self ~onSpawn
- setvar{var=caster.回血转化-百分比;t=float;v="0.7"} @self ~onSpawn
- setvar{var=caster.自伤转化-百分比;t=float;v="0.7"} @self ~onSpawn
- setvar{var=caster.恢复转化-百分比;t=float;v="0.7"} @self ~onSpawn
#决定伤害转化比例, 1=100%
- setvar{var=caster.伤害吸收-持续-攻击;t=float;v="3"} @self ~onSpawn
- setvar{var=caster.伤害吸收-持续-回血;t=float;v="3"} @self ~onSpawn
- setvar{var=caster.伤害需求-持续-自伤;t=float;v="3"} @self ~onSpawn
- setvar{var=caster.伤害需求-持续-回血;t=float;v="3"} @self ~onSpawn
#决定转化持续时间, 单位: 秒
- setvar{var=caster.伤害间隔;t=float;v="0.05"} @self ~onSpawn
- setvar{var=caster.回血间隔;t=float;v="0.05"} @self ~onSpawn
- setvar{var=caster.自伤间隔;t=float;v="0.05"} @self ~onSpawn
- setvar{var=caster.恢复间隔;t=float;v="0.05"} @self ~onSpawn
#决定每段回血/伤害的间隔, 单位: 秒
- setvar{var=caster.伤害需求-伤害自身;t=float;v="20"} @self ~onSpawn
- setvar{var=caster.伤害需求-恢复自身;t=float;v="20"} @self ~onSpawn
#决定伤害值需求
#核心技能部分
# - skill:伤害吸收-攻击 @self ~onInteract
- skill:伤害吸收-回血 @self ~onInteract
# - skill:伤害需求-伤害自身 @self ~onInteract
# - skill:伤害需求-恢复生命 @self ~onInteract
伤害吸收:
Skills:
- setvar{var=caster.伤害数值;t=float;v="<caster.var.伤害数值>+<skill.var.damage-amount>"}
伤害吸收-攻击:
Skills:
- ondamaged{os=机制初始化;n=伤害吸收-攻击模式;oh=伤害吸收;oe=伤害释放-攻击-效果;d=<caster.var.伤害吸收-持续-攻击>*20;c=500}
伤害吸收-回血:
Skills:
- ondamaged{os=机制初始化;n=伤害吸收-恢复模式;oh=伤害吸收;oe=伤害释放-恢复-效果;d=<caster.var.伤害吸收-持续-回血>*20;c=500}
伤害需求-恢复自身:
Skills:
- ondamaged{os=机制初始化;n=伤害需求-恢复模式;oh=伤害吸收;oe=伤害释放-恢复自身-判定;d=<caster.var.伤害需求-持续-回血>*20;c=500}
伤害需求-伤害自身:
Skills:
- ondamaged{os=机制初始化;n=伤害需求-自伤模式;oh=伤害吸收;oe=伤害释放-伤害自身-判定;d=<caster.var.伤害需求-持续-自伤>*20;c=500}
机制初始化:
Skills:
- setvar{var=caster.伤害数值;t=float;v="0"}
- setvar{var=caster.释放数值;t=float;v="0"}
- setvar{var=caster.判定;t=float;v="0"}
伤害释放-攻击-效果:
Skills:
- setvar{var=caster.伤害数值-转化;t=float;v="<caster.var.伤害数值>*<caster.var.伤害转化-百分比>"}
- setvar{var=caster.释放数值;t=float;v="<caster.var.伤害数值-转化>/<caster.var.伤害段数>"}
- setvar{var=caster.伤害数值;t=integer;v="<caster.var.伤害数值>*(10^<caster.var.提示数值保留小数位>)"}
- setvar{var=caster.伤害数值;t=float;v="<caster.var.伤害数值>/(10^<caster.var.提示数值保留小数位>)"}
- m{m="<caster.name>吸收了<&sp><caster.var.伤害数值>点伤害, 转化为<&sp><caster.var.伤害数值-转化>点<&sp>技能伤害给予给<&sp>半径<caster.var.伤害范围>格<&sp>球体范围内的所有实体"} @eir{r=16}
- setvar{var=caster.伤害数值;t=float;v="0"}
- d{a=<caster.var.释放数值>;pk=true;pi=true;i=true;repeat=<caster.var.伤害段数>-1;repeatInterval=<caster.var.伤害间隔> *20} @eir{r=<caster.var.伤害范围>}
伤害释放-恢复-效果:
Skills:
- setvar{var=caster.伤害数值-转化;t=float;v="<caster.var.伤害数值>*<caster.var.回血转化-百分比>"}
- setvar{var=caster.释放数值;t=float;v="<caster.var.伤害数值>/<caster.var.回血段数>"}
- setvar{var=caster.伤害数值;t=integer;v="<caster.var.伤害数值>*(10^<caster.var.提示数值保留小数位>)"}
- setvar{var=caster.伤害数值;t=float;v="<caster.var.伤害数值>/(10^<caster.var.提示数值保留小数位>)"}
- m{m="<caster.name>吸收了<&sp><caster.var.伤害数值>点伤害, 对自身恢复<&sp><caster.var.伤害数值-转化>点<&sp>生命"} @eir{r=16}
- setvar{var=caster.伤害数值;t=float;v="0"}
- h{a=<caster.var.释放数值>*<caster.var.回血转化-百分比>;pk=true;pi=true;i=true;repeat=<caster.var.回血段数>-1;repeatInterval=<caster.var.回血间隔> *20} @self
伤害释放-恢复自身-判定:
Skills:
- setvar{var=caster.判定;t=float;v="<caster.var.伤害需求-恢复自身>/<caster.var.伤害数值>"} @self
- skill:伤害释放-恢复自身-效果
伤害释放-恢复自身-效果:
Conditions:
- varrange{var=caster.判定;v=<1}
Skills:
- setvar{var=caster.判定;t=float;v="0"} @self
- setvar{var=caster.伤害数值-转化;t=float;v="<caster.var.伤害数值>*<caster.var.恢复转化-百分比>"}
- setvar{var=caster.释放数值;t=float;v="<caster.var.伤害数值>/<caster.var.恢复段数>"}
- setvar{var=caster.伤害数值;t=integer;v="<caster.var.伤害数值>*(10^<caster.var.提示数值保留小数位>)"}
- setvar{var=caster.伤害数值;t=float;v="<caster.var.伤害数值>/(10^<caster.var.提示数值保留小数位>)"}
- m{m="<caster.name>吸收了<&sp><caster.var.伤害数值>点伤害, 对自身恢复<&sp><caster.var.伤害数值-转化>点<&sp>生命"} @eir{r=16}
- setvar{var=caster.伤害数值;t=float;v="0"}
- h{a=<caster.var.释放数值>;pk=true;pi=true;i=true;repeat=<caster.var.恢复段数>-1;repeatInterval=<caster.var.恢复间隔> *20} @self
伤害释放-伤害自身-判定:
Skills:
- setvar{var=caster.判定;t=float;v="<caster.var.伤害需求-伤害自身>/<caster.var.伤害数值>"} @self
- skill:伤害释放-伤害自身-效果
伤害释放-伤害自身-效果:
Conditions:
- varrange{var=caster.判定;v=<1}
Skills:
- setvar{var=caster.判定;t=float;v="0"} @self
- setvar{var=caster.伤害数值-转化;t=float;v="<caster.var.伤害数值>*<caster.var.自伤转化-百分比>"}
- setvar{var=caster.释放数值;t=float;v="<caster.var.伤害数值-转化>/<caster.var.自伤段数>"}
- setvar{var=caster.伤害数值;t=integer;v="<caster.var.伤害数值>*(10^<caster.var.提示数值保留小数位>)"}
- setvar{var=caster.伤害数值;t=float;v="<caster.var.伤害数值>/(10^<caster.var.提示数值保留小数位>)"}
- m{m="<caster.name>吸收了<&sp><caster.var.伤害数值>点伤害, 转化为<&sp><caster.var.伤害数值-转化>技能伤害给予给<&sp>自身"} @eir{r=16}
- setvar{var=caster.伤害数值;t=float;v="0"}
- d{a=<caster.var.释放数值>;pk=true;pi=true;i=true;repeat=<caster.var.自伤段数>-1;repeatInterval=<caster.var.自伤间隔> *20} @self