查看: 2663|回复: 9

[有事请教] 关于装备自动回复MP的问题

[复制链接]
梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
发表于 2022-9-26 11:45:47 | 显示全部楼层 |阅读模式

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

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

×
首先默认系统的我不想用 因为那是百分比恢复而且即使脱战了还有效 于是 我找遍了很多论坛和插件 结果发现居然没有一个靠谱的能在战斗中生效且每回合恢复n的MP并且会显示出来的插件……
顺带一提我用YEP的自动被动和EXDOT实现了每回合回复n的HP 但是MP和TP就毫无办法 求助还有救吗
梦石
2
星屑
8479
在线时间
463 小时
注册时间
2021-12-4
回帖
486

MZ评测员

发表于 2022-9-26 16:49:57 | 显示全部楼层
Game_Battler.prototype.regenerateHp = function() {
    var value = Math.floor(this.mhp * this.hrg);
    value = Math.max(value, -this.maxSlipDamage());
    if (value !== 0) {
        this.gainHp(value);
    }
};

Game_Battler.prototype.maxSlipDamage = function() {
    return $dataSystem.optSlipDeath ? this.hp : Math.max(this.hp - 1, 0);
};

Game_Battler.prototype.regenerateMp = function() {
    var value = Math.floor(this.mmp * this.mrg);
    if (value !== 0) {
        this.gainMp(value);
    }
};

Game_Battler.prototype.regenerateTp = function() {
    var value = Math.floor(100 * this.trg);
    this.gainSilentTp(value);
};

Game_Battler.prototype.regenerateAll = function() {
    if (this.isAlive()) {
        this.regenerateHp();
        this.regenerateMp();
        this.regenerateTp();
    }
};

以上都在rpg_objects.js第3250行左右,可以看到几个var value是用百分比计算的(当然TP上限是100所以百分比和点数一致),而this.mhp和this.mmp表示这个队员的生命/魔力上限,只要像TP一样改成100就实现了0~100点的固定回复,如果需要更大的值那可以改成几百(但是就只能恢复几的倍数了)。
另外我不知道楼主说的【脱战了也有效】是怎么回事,regenerateAll只会在战斗中该角色的回合结束时触发呀。
回复

使用道具 举报

梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
 楼主| 发表于 2022-9-26 16:58:42 | 显示全部楼层
小秋橙 发表于 2022-9-26 16:49
Game_Battler.prototype.regenerateHp = function() {
    var value = Math.floor(this.mhp * this.hrg);
...

这个办法有点……曲线救国啊 我不太想改上限值 还是想从根本修改回复值
回复

使用道具 举报

梦石
2
星屑
8479
在线时间
463 小时
注册时间
2021-12-4
回帖
486

MZ评测员

发表于 2022-9-26 17:22:44 | 显示全部楼层
MLRPG 发表于 2022-9-26 16:58
这个办法有点……曲线救国啊 我不太想改上限值 还是想从根本修改回复值

呃,并不是让你把角色的两个上限也改成100啦,只是让你把代码里的两个this.mhp和this.mmp改成100(和下面TP的代码一样),欺骗这段代码让它误以为两个上限是100(也可以改成100的n倍)从而使得装备属性里设置的0%到100%(查看json文件可以看到其实是0.01到1.00)实际恢复值等于【0 n 2n ... 100n】。
这样改的话唯一的局限性就是彻底放弃百分比,所有的自动回复都是固定值了……

点评

直接改成固定值..就行了吧..不过走路也会回复来着..  发表于 2022-9-26 17:34

评分

参与人数 1赞 +1 收起 理由
MLRPG + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
 楼主| 发表于 2022-9-26 17:33:55 | 显示全部楼层
小秋橙 发表于 2022-9-26 17:22
呃,并不是让你把角色的两个上限也改成100啦,只是让你把代码里的两个this.mhp和this.mmp改成100(和下面 ...

好吧 谢谢你的思路 虽然还是不太治本不过我觉得也可以用~
回复

使用道具 举报

梦石
0
星屑
5774
在线时间
671 小时
注册时间
2020-6-14
回帖
86
发表于 2022-9-26 20:45:05 | 显示全部楼层
  <Custom Turn Start Effect>
  target.gainMp(5)
target.startDamagePopup();
  </Custom Turn Start Effect>
克系游戏《书典怪奇录》内部开发中https://www.bilibili.com/video/BV1zp4y1B7Ce
任何热心游戏作者都欢迎的互相分享测试群1049580832
回复

使用道具 举报

梦石
0
星屑
5269
在线时间
733 小时
注册时间
2013-1-18
回帖
525
发表于 2022-9-27 15:08:10 | 显示全部楼层
MLRPG 发表于 2022-9-26 17:33
好吧 谢谢你的思路 虽然还是不太治本不过我觉得也可以用~

我也想找个只在战斗中生效的HP  MP自动回复。
工具自带的在行走中也会回复,玩家就可以在安全区兜圈子回复,这直接让游戏里某些药品和宿屋的功能形同虚设了。
回复

使用道具 举报

梦石
2
星屑
8479
在线时间
463 小时
注册时间
2021-12-4
回帖
486

MZ评测员

发表于 2022-9-27 19:20:02 | 显示全部楼层
nhycs01 发表于 2022-9-27 15:08
我也想找个只在战斗中生效的HP  MP自动回复。
工具自带的在行走中也会回复,玩家就可以在安全区兜圈子回 ...

Game_Actor.prototype.turnEndOnMap = function() {
    if ($gameParty.steps() % this.stepsForTurn() === 0) {
        this.onTurnEnd(); // rpg_objects.js 第4181行,把这行删掉就不会在走路时触发【回合结束】和自动回复了。
        if (this.result().hpDamage > 0) {
            this.performMapDamage();
        }
    }
};
回复

使用道具 举报

梦石
0
星屑
2952
在线时间
941 小时
注册时间
2009-1-4
回帖
137
 楼主| 发表于 2022-9-27 19:26:06 | 显示全部楼层
也可以直接加上if ($gameParty.inBattle()) {  这样就只会在战斗中生效了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部