赞 | 1 |
VIP | 0 |
好人卡 | 0 |
积分 | 11 |
经验 | 0 |
最后登录 | 2024-11-19 |
在线时间 | 209 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1126
- 在线时间
- 209 小时
- 注册时间
- 2023-7-14
- 帖子
- 86
|
2楼
楼主 |
发表于 2024-1-31 10:25:52
|
只看该作者
本帖最后由 catxiaolang 于 2024-2-1 14:50 编辑
target.elementRate(x)表示的便是RPGmaker的【属性有效度】,即承伤倍率。
如果你的游戏设计中,一个技能包含多种元素,并且它们是以乘算计算的(类似宝可梦对弱点倍率的计算),可以在伤害公式后面乘以以下模块
【未使用插件时】
在伤害公式后乘以以下模块:
b.elementRate(x)
(x替换为希望附加的元素id,可以以此方法多次附加不同元素)
它的原理是把对元素有效度的计算从游戏机制移到公式中,
【注意】如果用此方法,则不要再把该技能(或物品)设置成这个元素(否则会重复计算)
【使用了Visu元素状态核心时】
在伤害公式后乘以以下内容:
((1 + a.getDealtElementPlus(x)) * a.getDealtElementRate(x) + a.getDealtElementFlat(x)) * b.elementRate(x)
(x替换为希望附加的元素id,比原版多的部分是计算攻击者的元素增伤,这部分是由三种加成规则构成的,所以看起来比较复杂)
如果用于visu技能状态核心提供的持续伤害功能,在写法上需要把a.替换为user.,把b.替换为target.
就像这样:
((1 + user.getDealtElementPlus(x)) * user.getDealtElementRate(x) + user.getDealtElementFlat(x)) * target.elementRate(x)
【补充说明】
这个方法并不是完美的,它仅仅只实现对伤害的模拟,它无法正确处理元素吸收和元素反射(如果有的话)。
对元素免疫则只能处理以该元素有效度为0%的方式实现的情况。
这仅仅只是一个学习阶段中的心得交流,如果有更好的方法非常欢迎指教。
===========【原帖中伤害公式的优化】===========
user.mat * ((1 + user.getDealtElementPlus(15)) * user.getDealtElementRate(15) + user.getDealtElementFlat(15)) * target.elementRate(15) |
|