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)。
如果只是在收到物理攻击时反击,这样做
BattleManager.invokeAction = function(subject, target) {
this._logWindow.push('pushBaseLine');
if (Math.random() < this._action.itemCnt(target)) {
this.invokeNormalAction(subject, target);
this.invokeCounterAttack(subject, target);
} else if (Math.random() < this._action.itemMrf(target)) {
this.invokeMagicReflection(subject, target);
} else {
this.invokeNormalAction(subject, target);
}
subject.setLastTarget(target);
this._logWindow.push('popBaseLine');
this.refreshStatus();
};
BattleManager.invokeAction = function(subject, target) {
this._logWindow.push('pushBaseLine');
if (Math.random() < this._action.itemCnt(target)) {
this.invokeNormalAction(subject, target);
this.invokeCounterAttack(subject, target);
} else if (Math.random() < this._action.itemMrf(target)) {
this.invokeMagicReflection(subject, target);
} else {
this.invokeNormalAction(subject, target);
}
subject.setLastTarget(target);
this._logWindow.push('popBaseLine');
this.refreshStatus();
};
话说,反射魔法攻击不会先被击中之后再反射吧?如果你真的要被魔法击中之后反击,可以把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
可以把物理反击和魔法发射一起写出来吗?做一个插件,插进去即可使用,谢谢,我是脚本盲,我也想要这样的 ...
(function() {
BattleManager.invokeAction = function(subject, target) {
this._logWindow.push('pushBaseLine');
this.invokeNormalAction(subject, target);
if (Math.random() < this._action.itemCnt(target)) {
this.invokeCounterAttack(subject, target);
} else if (Math.random() < this._action.itemMrf(target)) {
this.invokeMagicReflection(subject, target);
}
subject.setLastTarget(target);
this._logWindow.push('popBaseLine');
this.refreshStatus();
};
}).call(this);
(function() {
BattleManager.invokeAction = function(subject, target) {
this._logWindow.push('pushBaseLine');
this.invokeNormalAction(subject, target);
if (Math.random() < this._action.itemCnt(target)) {
this.invokeCounterAttack(subject, target);
} else if (Math.random() < this._action.itemMrf(target)) {
this.invokeMagicReflection(subject, target);
}
subject.setLastTarget(target);
this._logWindow.push('popBaseLine');
this.refreshStatus();
};
}).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 |