Project1

标题: 请问一下mz里是否可以做元素反应相关的设计? [打印本页]

作者: zhang941113    时间: 2024-4-21 21:55
标题: 请问一下mz里是否可以做元素反应相关的设计?
求教各位大佬,有什么插件可以实现元素反应吗?
作者: zhang941113    时间: 2024-4-21 22:09
补充一下,不是单纯的增加伤害,这个目前游戏内就可以完成,而是类似于,比如水属性和冰属性攻击后,会产生【冻结】的效果。这样的元素反应
作者: 小秋橙    时间: 2024-4-21 22:49
整个rm系列的元素属性之间并不原生支持相生相克什么的,只有“有效度”也就是“史莱姆弱火而抗冰”之类的性质,需要自己另外设计…
作者: zhang941113    时间: 2024-4-21 23:01
好了 已经会了,直接用公共事件就可以完成
作者: zhang941113    时间: 2024-4-21 23:02
小秋橙 发表于 2024-4-21 22:49
整个rm系列的元素属性之间并不原生支持相生相克什么的,只有“有效度”也就是“史莱姆弱火而抗冰”之类的性 ...

我刚刚尝试了一下,公共事件可以做这样的逻辑,已经尝试出我举例的元素反应了~只不过需要自己一个一个写就是了
作者: zhang941113    时间: 2024-4-21 23:15
小秋橙 发表于 2024-4-21 22:49
整个rm系列的元素属性之间并不原生支持相生相克什么的,只有“有效度”也就是“史莱姆弱火而抗冰”之类的性 ...

不对,也不太行,不过大概的逻辑还是能作出来的,就是公共事件库可执行的东西比较少。还需要再研究研究
作者: uniguana    时间: 2024-4-21 23:25
可以采用yep(visu)状态核心插件,具体可以这么写:
在b状态的备注中:
<Custom Apply Effect>
if (user.isStateAffected(a)){
user.removeState(a);
user.removeState(b);
user.addState(c);
}
</Custom Apply Effect>

作者: 清澈淌漾    时间: 2024-4-22 00:00
写好几个状态 比如 caoshi 和 fadian
在【电】技能生效前  如果身上有可以发生反应的元素  
触发另一个效果 比如 超市+发电=导电,移除两个效果,追加上导电的特效
如果没有 挂上属性相对的效果


作者: sunhihi    时间: 2024-4-22 09:25
本帖最后由 sunhihi 于 2024-4-22 09:37 编辑

原生的情況下屬性是有缺陷的
1. 當你有雙屬性時他只會計算加成較高的那個
2.做不到將屬性附加攻擊特效也一起變化的效果(特效綁死了技能)
3.如果你想做到精準同時分析 手持長劍 職業為劍士攻擊 附加火屬性 攻擊 水屬性的 魚類魔物
這種極為複雜的種族 職業 屬性 體型大小 通通做不到

當然有大神可以利用公式, 事件弄出來, 但是你有這麼複雜的變化, 對應的是你也會有龐大的技能庫, 然後就會累死你

yep插件能不能解決這堆問題我不知道,畢竟我沒有餘力去研究yep 畢竟他們家的東西到MZ就變成 VisuStella(收費又加密) 了

我自己是有寫一套可以處裡這種情況的插件, 但是並沒有考慮與yep插件或是VisuStella相容
作者: catxiaolang    时间: 2024-4-22 20:14
本帖最后由 catxiaolang 于 2024-4-22 21:57 编辑

我尝试用visu插件实现过。visu skill states core 里面有js标签可以实现状态被添加/移除/过期时执行自定义脚本。

实现逻辑是当添加状态a时检查目标身上是否存在状态b,如果有的话执行对应状态的消耗和反应效果。

诸如冻结的反应在脚本里写添加相应状态就可以了。

产生一段额外伤害的反应则是通过先添加一个代表反应的临时状态c,再用技能附带的事件移除它,将状态c移除时的效果做成反应效果来实现的。
(如果没有状态c,而是把反应直接写在a附带的脚本里,则可能会遇到结算Bug,导致反应伤害覆盖掉技能原本的伤害。)
当然也可以直接用原版的效果把额外伤害伤害并入属性有效度(易伤)



visu skill states core 中相关功能的帮助文本的汉化:

=== JavaScript备注标签:On Add/Erase/Expire ===

使用JavaScript代码,您可以创建在状态被添加、擦除或过期时触发的自定义效果。

---

<JS On Add State>
code
code
</JS On Add State>

- 适用对象:状态备注
- 当状态被添加时,运行此备注标签中添加的代码。
- 'user' 变量指代当前主动的战斗者。
- 'target' 变量指代受到此状态影响的战斗者。
- 'origin' 变量指代应用此状态的源头。
- 'state' 变量指代当前正在受到影响的状态。

---

<JS On Erase State>
code
code
</JS On Erase State>

- 用途:状态标签
- 当一个状态被删除时,运行此标签中添加的代码。
- 'user'变量指的是当前正在行动的战斗者。
- 'target'变量指的是受此状态影响的战斗者。
- 'origin'变量指的是施加此状态的人。
- 'state'变量指的是当前受影响的状态。

---

<JS On Expire State>
code
code
</JS On Expire State>

- 用于:状态注释标签
- 当状态已过期时,运行此注释标签所添加的代码。
- 'user' 变量指代当前行动的战斗者。
- 'target' 变量指代受到该状态影响的战斗者。
- 'origin' 变量指代施加此状态的来源。
- 'state' 变量指代当前正在受影响的状态。


PS:诸如燃烧这样的DOT效果也可以通过这个插件实现(RM原版的DOT只能基于敌人自身最大生命值,无法基于施法者属性)

<JS type Slip Damage>
code
code
damage = code;
</JS type Slip Damage>

- 用于:状态注释
- 该代码用于确定在每个再生阶段对受影响单位造成多少持续伤害。
- 将'type'替换为'HP'、'MP'或'TP'。
- 将'code'替换为计算持续伤害的具体公式。
- 'user'变量表示状态来源单位。
- 'target'变量表示受到伤害的受影响单位。
- 'state'变量表示当前受影响的状态。
- 'damage'变量是最终要造成的持续伤害值。
- 当这些状态通过行动效果应用时,持续伤害的计算是一次性的,在应用时进行计算,并将伤害缓存以便于未来的再生计算中使用。
- 因此,请勿在此处包含游戏机制,比如添加状态、增益、减益等,因为此注释标签仅用于计算。请使用VisuStella Battle Core的<JS Pre-Regenerate>和<JS Post-Regenerate>注释标签来处理游戏机制。
- 被动状态和带有<JS Slip Refresh>注释标签的状态不受一次性计算的影响,它们在每个再生阶段都会重新计算。

作者: zhang941113    时间: 2024-5-7 16:03
清澈淌漾 发表于 2024-4-22 00:00
写好几个状态 比如 caoshi 和 fadian
在【电】技能生效前  如果身上有可以发生反应的元素  
触发另一个效果 ...

我现在的逻辑就是这么想的,多写几个逻辑事件了,不过实际尝试中还是需要阉割一下这部分。
作者: zhang941113    时间: 2024-5-7 16:05
sunhihi 发表于 2024-4-22 09:25
原生的情況下屬性是有缺陷的
1. 當你有雙屬性時他只會計算加成較高的那個
2.做不到將屬性附加攻擊特效也一 ...

是的,其实原生的这个属性基本只能做最简单的伤害加成,其他的东西是一点都做不了……暂时只能先阉割一部分技能设计了。
作者: zhang941113    时间: 2024-5-7 16:08
catxiaolang 发表于 2024-4-22 20:14
我尝试用visu插件实现过。visu skill states core 里面有js标签可以实现状态被添加/移除/过期时执行自定义 ...

好的,我先研究研究,还是有点复杂的。元素反应这玩意儿真是个大问题




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1