Project1

标题: 关于装备自动回复MP的问题 [打印本页]

作者: MLRPG    时间: 2022-9-26 11:45
标题: 关于装备自动回复MP的问题
首先默认系统的我不想用 因为那是百分比恢复而且即使脱战了还有效 于是 我找遍了很多论坛和插件 结果发现居然没有一个靠谱的能在战斗中生效且每回合恢复n的MP并且会显示出来的插件……
顺带一提我用YEP的自动被动和EXDOT实现了每回合回复n的HP 但是MP和TP就毫无办法 求助还有救吗
作者: 小秋橙    时间: 2022-9-26 16:49
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只会在战斗中该角色的回合结束时触发呀。
作者: MLRPG    时间: 2022-9-26 16:58
小秋橙 发表于 2022-9-26 16:49
Game_Battler.prototype.regenerateHp = function() {
    var value = Math.floor(this.mhp * this.hrg);
...

这个办法有点……曲线救国啊 我不太想改上限值 还是想从根本修改回复值
作者: 小秋橙    时间: 2022-9-26 17:22
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】。
这样改的话唯一的局限性就是彻底放弃百分比,所有的自动回复都是固定值了……
作者: MLRPG    时间: 2022-9-26 17:33
小秋橙 发表于 2022-9-26 17:22
呃,并不是让你把角色的两个上限也改成100啦,只是让你把代码里的两个this.mhp和this.mmp改成100(和下面 ...

好吧 谢谢你的思路 虽然还是不太治本不过我觉得也可以用~
作者: jie119168    时间: 2022-9-26 20:45
  <Custom Turn Start Effect>
  target.gainMp(5)
target.startDamagePopup();
  </Custom Turn Start Effect>
作者: nhycs01    时间: 2022-9-27 15:08
MLRPG 发表于 2022-9-26 17:33
好吧 谢谢你的思路 虽然还是不太治本不过我觉得也可以用~

我也想找个只在战斗中生效的HP  MP自动回复。
工具自带的在行走中也会回复,玩家就可以在安全区兜圈子回复,这直接让游戏里某些药品和宿屋的功能形同虚设了。
作者: 小秋橙    时间: 2022-9-27 19:20
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();
        }
    }
};
作者: MLRPG    时间: 2022-9-27 19:26
也可以直接加上if ($gameParty.inBattle()) {  这样就只会在战斗中生效了




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