设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 671|回复: 9
打印 上一主题 下一主题

[有事请教] 【掩护】这个特性怎么微调一下?自己都丝血了还出掩护..

[复制链接]

Lv2.观梦者

梦石
0
星屑
919
在线时间
104 小时
注册时间
2022-7-30
帖子
47
跳转到指定楼层
1
发表于 2023-10-8 15:00:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
【掩护】这个特性怎么微调一下?自己都丝血了还出掩护..

首先先赞一下这个功能,可以设置F牛或血牛角色给队友提供保护,印象比较深的是仙剑1李逍遥给残血女主抵挡伤害,显得义气十足,不过...
MV里拥有掩护功能的角色,自己若是丝血了还会替队友接受伤害,觉得有点过,怎么调整一下?

在自己血量充足的时候才出掩护,丝血(角色半蹲状态)不出掩护。

Lv3.寻梦者

梦石
0
星屑
3790
在线时间
983 小时
注册时间
2016-12-6
帖子
367
2
发表于 2023-10-8 15:40:02 | 只看该作者
原版的掩护机制只关心你身上有没有掩护标志以及是否可行动,这在rpg_objects.js里可以找到出处:

Game_BattlerBase.prototype.isSubstitute = function() {
    return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE) && this.canMove();
};

以及在rpg_managers.js里确定了掩护只在出现了残血队友时触发:

BattleManager.checkSubstitute = function(target) {
    return target.isDying() && !this._action.isCertainHit();
};

所以你如果只打算让掩护在血量充足时才触发,可以对上述代码进行修改,比如追加一个&& !this.isDying();
这样即便身上有掩护特性,但因为已经残血了不满足条件,是不会触发掩护队友的
回复 支持 1 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
919
在线时间
104 小时
注册时间
2022-7-30
帖子
47
3
 楼主| 发表于 2023-10-10 11:08:04 | 只看该作者
感谢!不会看JS脚本,试错多次测试成功!发出来给需要的朋友。
rpg_managers.js里查找:
BattleManager.checkSubstitute = function(target) {
    return target.isDying() && !this._action.isCertainHit();
};
修改为:
BattleManager.checkSubstitute = function(target) {
    return target.isDying() && !this._action.isCertainHit() && !this.isDying();
};
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
173
在线时间
15 小时
注册时间
2019-11-2
帖子
14
4
发表于 2023-11-6 18:52:22 | 只看该作者
shiroin 发表于 2023-10-8 15:40
原版的掩护机制只关心你身上有没有掩护标志以及是否可行动,这在rpg_objects.js里可以找到出处:

Game_Bat ...

大神,关于这个问题我想请教一下,我试过加上&& !this.isDying()代码后出现undefined报错,另外我还想加上掩护的在异常状态下也不能就行掩护动作,掩护技能的几率为75%,请问有什么办法吗?这是目前我修改的代码;
BattleManager.checkSubstitute = function(target) {
    return target.isDying() && !this._action.isCertainHit() && this._action.isDamage() && !this.isDying() && !(Math.randomInt(3) === 0);
};
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3790
在线时间
983 小时
注册时间
2016-12-6
帖子
367
5
发表于 2023-11-6 19:52:22 | 只看该作者
Kaede_123 发表于 2023-11-6 18:52
大神,关于这个问题我想请教一下,我试过加上&& !this.isDying()代码后出现undefined报错,另外我还想加 ...

BattleManager这个函数里并没法判断this.isDying()是源自什么变量,你如果是想判断【掩护者本人也不能是濒死状态】,得加在下面这个函数里:
Game_BattlerBase.prototype.isSubstitute = function() {
    return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE) && this.canMove();
};

改成return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE) && this.canMove() && !this.isDying();

这样掩护者本人残血后,就无法让掩护机制正常生效
异常状态下无法进行掩护也是同理,追加!this.isStateAffected(n)句式,n就是异常状态的状态ID
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
173
在线时间
15 小时
注册时间
2019-11-2
帖子
14
6
发表于 2023-11-8 19:53:19 | 只看该作者
shiroin 发表于 2023-11-6 19:52
BattleManager这个函数里并没法判断this.isDying()是源自什么变量,你如果是想判断【掩护者本人也不能是 ...

多谢。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
10 小时
注册时间
2023-8-23
帖子
6
7
发表于 2023-12-27 02:41:41 | 只看该作者
本帖最后由 woainicrc 于 2023-12-27 03:10 编辑

Game_BattlerBase.prototype.isSubstitute = function() {
    return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE) && this.canMove()  && this.hpRate() > 0.5;
};
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
10 小时
注册时间
2023-8-23
帖子
6
8
发表于 2023-12-27 02:42:48 | 只看该作者
本帖最后由 woainicrc 于 2023-12-27 03:10 编辑

Game_BattlerBase.prototype.isSubstitute = function() {
    return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE) && this.canMove()  && this.hpRate() > 0.5;
};

自身血量大于50%时才会触发掩护
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
10 小时
注册时间
2023-8-23
帖子
6
9
发表于 2023-12-27 02:45:42 | 只看该作者
本帖最后由 woainicrc 于 2023-12-27 11:07 编辑
Kaede_123 发表于 2023-11-6 18:52
大神,关于这个问题我想请教一下,我试过加上&& !this.isDying()代码后出现undefined报错,另外我还想加 ...


this.isDying()是写在这边的,这个是掩护者,你放到被掩护者上,当然报错了。
另外根据你的要求。可以这样写。
Game_BattlerBase.prototype.isSubstitute = function() {
    return this.specialFlag(Game_BattlerBase.FLAG_ID_SUBSTITUTE) && this.canMove()  && !this.isDying() && Math.random() < 0.75 && !this.isStateCategoryAffected('Ailment');
};

Ailment 这个根据个人文本改动就行了
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4522
在线时间
678 小时
注册时间
2013-1-18
帖子
709
10
发表于 2023-12-27 11:12:29 | 只看该作者
本帖最后由 nhycs01 于 2023-12-27 11:15 编辑

感觉这个掩护只有设置成几率出,才有意义。
如果是必出,或者血量大于50%时才会触发掩护,会导致这个问题:
假设队伍里至少有3人:A、B、C
1.打BOSS前,A和C故意弄成可以被掩护的残血状态
2.A输出,B掩护,C一直给B加血
3.于是B一直处于满血或大半血状态,也就会一直触发掩护。
4.A一直输出,BOSS打谁都被B掩护,无伤击杀BOSS。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-29 03:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表