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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1540
在线时间
673 小时
注册时间
2009-1-4
帖子
165
跳转到指定楼层
1
发表于 2022-9-26 11:45:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

Lv4.逐梦者

梦石
0
星屑
5372
在线时间
383 小时
注册时间
2021-12-4
帖子
403
2
发表于 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只会在战斗中该角色的回合结束时触发呀。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1540
在线时间
673 小时
注册时间
2009-1-4
帖子
165
3
 楼主| 发表于 2022-9-26 16:58:42 | 只看该作者
小秋橙 发表于 2022-9-26 16:49
Game_Battler.prototype.regenerateHp = function() {
    var value = Math.floor(this.mhp * this.hrg);
...

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5372
在线时间
383 小时
注册时间
2021-12-4
帖子
403
4
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1540
在线时间
673 小时
注册时间
2009-1-4
帖子
165
5
 楼主| 发表于 2022-9-26 17:33:55 | 只看该作者
小秋橙 发表于 2022-9-26 17:22
呃,并不是让你把角色的两个上限也改成100啦,只是让你把代码里的两个this.mhp和this.mmp改成100(和下面 ...

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3886
在线时间
512 小时
注册时间
2020-6-14
帖子
76
6
发表于 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
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4517
在线时间
677 小时
注册时间
2013-1-18
帖子
709
7
发表于 2022-9-27 15:08:10 | 只看该作者
MLRPG 发表于 2022-9-26 17:33
好吧 谢谢你的思路 虽然还是不太治本不过我觉得也可以用~

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

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5372
在线时间
383 小时
注册时间
2021-12-4
帖子
403
8
发表于 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();
        }
    }
};
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1540
在线时间
673 小时
注册时间
2009-1-4
帖子
165
9
 楼主| 发表于 2022-9-27 19:26:06 | 只看该作者
也可以直接加上if ($gameParty.inBattle()) {  这样就只会在战斗中生效了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-25 09:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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