Project1

标题: 求教!如何把反击改成:受到伤害后再反击? [打印本页]

作者: id400200    时间: 2015-11-29 00:28
标题: 求教!如何把反击改成:受到伤害后再反击?
MV的反击属性跟VA的一样,都是免伤然后给于敌人反击伤害。
如果设置了一个反击率很高的角色的话,那就变成了一个无敌的BUG了!
因此,想把反击属性改成是正常的受到伤害,然后再给于敌人反击伤害。
请问要怎么修改脚本!?

作者: 苍刃君    时间: 2015-11-29 10:22
不知道,不过也不是无敌,魔法依然有效,必中技能依然有效
作者: id400200    时间: 2015-11-29 14:19
苍刃君 发表于 2015-11-29 10:22
不知道,不过也不是无敌,魔法依然有效,必中技能依然有效

可是把所有的武力命中伤害都无伤的反击过去- -...不好吧,这样子对魔物来说很不公平啊!
还是希望有人可以帮忙解决一下这个问题!!
作者: 苍刃君    时间: 2015-11-30 18:27
id400200 发表于 2015-11-29 14:19
可是把所有的武力命中伤害都无伤的反击过去- -...不好吧,这样子对魔物来说很不公平啊!
还是希望有人可 ...

把普通攻击改成魔法伤害即可

然后用额外参数里的魔法闪避率代替闪避率
而魔法改成必中,把你想让它被反击的技能改成物理伤害
作者: id400200    时间: 2015-12-1 09:17
苍刃君 发表于 2015-11-30 18:27
把普通攻击改成魔法伤害即可

然后用额外参数里的魔法闪避率代替闪避率

- -可是这样设置的话,使战斗相关的设定变得复杂化,会很混乱的吧....
还是想从代码那入手,在根本上解决这个问题。。。
作者: 语义噪音    时间: 2015-12-1 11:33
重写BattleManager.invokeAction(subject, target)。

如果只是在收到物理攻击时反击,这样做
JAVASCRIPT 代码复制
  1. BattleManager.invokeAction = function(subject, target) {
  2.     this._logWindow.push('pushBaseLine');
  3.     if (Math.random() < this._action.itemCnt(target)) {
  4.         this.invokeNormalAction(subject, target);
  5.         this.invokeCounterAttack(subject, target);
  6.     } else if (Math.random() < this._action.itemMrf(target)) {
  7.         this.invokeMagicReflection(subject, target);
  8.     } else {
  9.         this.invokeNormalAction(subject, target);
  10.     }
  11.     subject.setLastTarget(target);
  12.     this._logWindow.push('popBaseLine');
  13.     this.refreshStatus();
  14. };

话说,反射魔法攻击不会先被击中之后再反射吧?如果你真的要被魔法击中之后反击,可以把this.invokeNormalAction(subject, target)抽离出来,放到if判断外面,然后去掉最后的else块。
作者: id400200    时间: 2015-12-1 22:28
本帖最后由 id400200 于 2015-12-1 22:47 编辑
语义噪音 发表于 2015-12-1 11:33
重写BattleManager.invokeAction(subject, target)。

如果只是在收到物理攻击时反击,这样做


- -刚才试了一下,出现了错误:ReferenceError subiect is not defined
具体是这样的:战斗的时候,当没有出现反击的时候是正常的;角色反击就触发错误了。

-----------------错误的分割线-----------------

啊啊啊啊啊啊啊……不好意思!原来是我在改代码的时候出现错误!!现在可以正使用了,非常感谢哈!

作者: 309988769    时间: 2015-12-2 12:03
语义噪音 发表于 2015-12-1 11:33
重写BattleManager.invokeAction(subject, target)。

如果只是在收到物理攻击时反击,这样做

可以把物理反击和魔法发射一起写出来吗?做一个插件,插进去即可使用,谢谢,我是脚本盲,我也想要这样的效果
作者: 语义噪音    时间: 2015-12-3 08:54
309988769 发表于 2015-12-2 12:03
可以把物理反击和魔法发射一起写出来吗?做一个插件,插进去即可使用,谢谢,我是脚本盲,我也想要这样的 ...


JAVASCRIPT 代码复制
  1. (function() {
  2.   BattleManager.invokeAction = function(subject, target) {
  3.     this._logWindow.push('pushBaseLine');
  4.     this.invokeNormalAction(subject, target);
  5.     if (Math.random() < this._action.itemCnt(target)) {
  6.       this.invokeCounterAttack(subject, target);
  7.     } else if (Math.random() < this._action.itemMrf(target)) {
  8.       this.invokeMagicReflection(subject, target);
  9.     }
  10.     subject.setLastTarget(target);
  11.     this._logWindow.push('popBaseLine');
  12.     this.refreshStatus();
  13.   };
  14. }).call(this);

收到物理反击或魔法反射之前先进行伤害计算的全文,没有测试过,不过想必是可以运行的。
保存为js文件,放置于js/plugins目录中,在RMVV的插件管理器中启用。
作者: 309988769    时间: 2015-12-3 17:44
语义噪音 发表于 2015-12-3 08:54
(function() {
  BattleManager.invokeAction = function(subject, target) {
    this._logWindow.push( ...

我测试了一下,受到物理攻击,没有伤害直接反击,受到魔法攻击,有伤害,但是没有魔法反射,测试的时候,角色,反击100%,魔法反射100%




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