Project1

标题: 如何实现目标是敌人造成伤害,目标是友方恢复hp的技能 [打印本页]

作者: 脚本盲    时间: 2024-9-3 16:26
标题: 如何实现目标是敌人造成伤害,目标是友方恢复hp的技能
Rt,求教
作者: 脚本盲    时间: 2024-9-3 16:56
自顶一下
作者: sunhihi    时间: 2024-9-3 19:56
本帖最后由 sunhihi 于 2024-9-3 19:57 编辑

b.isActor() ? -(a.atk * 4 - b.def * 2) : (a.atk * 4 - b.def * 2)
寫在技能公式就行
作者: 脚本盲    时间: 2024-9-4 01:54
sunhihi 发表于 2024-9-3 19:56
b.isActor() ? -(a.atk * 4 - b.def * 2) : (a.atk * 4 - b.def * 2)
寫在技能公式就行

好的,谢谢大大
作者: 小秋橙    时间: 2024-9-4 08:21
sunhihi 发表于 2024-9-3 19:56
b.isActor() ? -(a.atk * 4 - b.def * 2) : (a.atk * 4 - b.def * 2)
寫在技能公式就行

Game_Action.prototype.evalDamageFormula = function(target) {
    try {
        const item = this.item();
        const a = this.subject(); // eslint-disable-line no-unused-vars
        const b = target; // eslint-disable-line no-unused-vars
        const v = $gameVariables._data; // eslint-disable-line no-unused-vars
        const sign = [3, 4].includes(item.damage.type) ? -1 : 1;
// 从此处上下各一行来看,3楼的方法恐怕是不行的,公式的运算结果会先屏蔽负数再根据伤害类型决定正负,所以需要额外的处理
        const value = Math.max(eval(item.damage.formula), 0) * sign;
        return isNaN(value) ? 0 : value;
    } catch (e) {
        return 0;
    }
};
作者: sunhihi    时间: 2024-9-4 08:50
小秋橙 发表于 2024-9-4 08:21
Game_Action.prototype.evalDamageFormula = function(target) {
    try {
        const item = this.i ...

那大概只能直接把
const value = Math.max( eval(item.damage.formula), 0) * sign; 改成
const value = Math.floor(eval(item.damage.formula)) * sign;




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