本帖最后由 TUCAOEVER 于 2023-1-27 20:52 编辑
前言
算是自学mythicmobs不到一周的一个小记录,虽然自己(目前)已经差不多满意但仍有很多瑕疵。在资源区像没看到有关这个方向的教程,于是发出来记录一下自己的成果。同时请各位大佬看看有无修改意见。本人能力浅薄,各位大佬见笑了 实例方面涉及较少,只给出了一个简单的模板(也许还有些问题),主要聚焦于解释机制。估计看到这贴真的感觉有帮助的,只有和我一样的mm萌新吧()
简介
主要是只应用mythicmobs(及附属),完成了目前我在mcbbs还未见到过的机制(也许有但只是我看不到) 有关技能的护甲 破甲 增伤机制(既然是有关技能,或许叫做技能抗性会更好?)
配置
spigot 1.12.2
mythicmobs付费版 4.11
mythicartifacts 0.1.30
原理
主要应用计分板的原理。
首先生物(主要是非原版)出生就会给自己初始化护甲值(若未初始化或者是原版生物则为0)
Skills: - modifytargetscore{o=护甲值;v=3;a=SET} @self ~onSpawn
这里的初始化数值是“3”
所谓的破甲,指的就是修改这个计分板数值,来改变生物的护甲数值
- modifytargetscore{o=护甲值;v=2;a=SUBTRACT} - delay 240 - modifytargetscore{o=护甲值;v=2;a=ADD}
这里是护甲先减少2,在240刻(也就是12秒)后增加2,也就是说,这个技能会造成2点的破甲效果,持续12秒
而计分板有一个非常好的特性,如果这个计分板选项(护甲值)没有被提前设定(原版生物),在这个运算里可以默认当成0看待,而不会报错(如果用变量就会报错...而且还影响运算结果)
护甲值设定完毕,对护甲的修改也设置完毕,最后只要让造成的伤害的运算里包括护甲值就可以完成护甲对伤害的影响了。
但这里有两个不同的选择:
1.直接在伤害表达式加上护甲运算
例: - Damage{a=10-<target.score.护甲值>}
在这里,非常简单地认为了一个护甲减少一点伤害(可以自行修改计算式) 2.先造成基础伤害,再治疗回护甲的减伤(或者顺序相反)
- heal{a=<target.score.护甲值>} - damage{a=10}
(也许中间delay 1会比较好?)(思路部分参考了mm插件教程的护盾) 但是问题就在于,先治疗后伤害会使得第一次攻击不能正确计算减伤(这次治疗是溢出的,而我的mm就算加了oh=true依然不能正确加上这部分血,也许别的版本可以?)先伤害后治疗会不能计算致死伤害的减伤(已经死了,又怎么再恢复?)(但是这条我好像看过别的教程有不同的说法...但是我实测是这样的)
(ps:对生物的boss血条设置应用这行代码可以显示生命以及当前护甲值
Title: '<mob.name> &a&l生命&8[&b&l<mob.hp>&f/&b&l<mob.mhp>&8],&a&l护甲值:&b&l<caster.score.护甲值>'
)
部分解释
为什么用计分板不用变量? 变量只能给非原版生物设置(否则后台报错!虽然好像报错也没什么影响),而计分板可以给所有生物设置。同时引用一个不存在的变量会导致最终伤害计算出错(例如引用原版生物的护甲值),而计分板可以默认不存在的项目值为0 只用mm有什么优缺点 优点:方便,不需要别的插件的辅助 缺点:也没法辅助别的插件,且只能改变技能的伤害(所以不如叫技能抗性,在大部分情况下还会有别的护甲值的) 当前遗留问题 1.无法正确计算第一次攻击或者致死攻击的减伤(在不采用溢出破甲值转化的情况下) 2.溢出的破甲还能增伤,从感觉上违背了对于护甲与破甲的理解不过也不是没有游戏这么写(原神:是我的元素抗性机制吗)(但是原神溢出的减抗转化为增伤似乎不是1:1) 3.其他暂未发现的问题 设计历程 1.用变量模拟破甲值的设定增加与减少,同时用两次damage(基础伤害+破甲值修正伤害,pi=true)来完成破甲值的增加和减少 漏洞:这哪里是护甲机制,这明明是增伤机制,而且对原版生物/未设定生物会报错。 2.用计分板替代变量,采用上面第二种方法来实现。 非常简单的示例
|