Project1

标题: 为了游戏平衡所以想要弄清楚mv中的原有的伤害判定和伤害... [打印本页]

作者: 任小雪    时间: 2021-4-30 05:05
标题: 为了游戏平衡所以想要弄清楚mv中的原有的伤害判定和伤害...
即暴击率与暴击闪避的判定公式,命中率与物理闪避与魔法闪避的判定公式,
暴击率的伤害公式这些,
还有其他的(反击和反射率),
最好连他们的判定的顺序和程序里的判断方法都发一下。
有哪位大佬知道的,我不懂代码,所以不太搞得清。
但是为了游戏平衡,现在又很需要弄懂(敏捷和幸运这两个坑比属性我是放弃了)。
帮帮忙吧
作者: alexncf125    时间: 2021-4-30 05:05
本帖最后由 alexncf125 于 2021-4-30 14:20 编辑

50星屑有点少

暴击率与暴击闪避的判定公式

Game_Action.prototype.itemCri = function(target) {
//允许暴击时, itemCri 返回 使用者的暴击率*(1-目标的暴击闪避)
//没允许暴击时, itemCri 返回 0
    return this.item().damage.critical ? this.subject().cri * (1 - target.cev) : 0;
};

//随机数小于 itemCri 时, 发生暴击
result.critical = (Math.random() < this.itemCri(target));



暴击的伤害公式

Game_Action.prototype.applyCritical = function(damage) {
//发生暴击时, 伤害*3
    return damage * 3;
};



命中率与物理闪避与魔法闪避的判定公式

Game_Action.prototype.itemHit = function(target) {
//当技能的命中类型为物理攻击, 则 itemHit 返回 技能的成功率*0.01*使用者的命中率
    if (this.isPhysical()) {
        return this.item().successRate * 0.01 * this.subject().hit;
//当技能的命中类型为必中/魔法攻击, 则 itemHit 返回 技能的成功率*0.01
    } else {
        return this.item().successRate * 0.01;
    }
};

Game_Action.prototype.itemEva = function(target) {
//当技能的命中类型为物理攻击, 则 itemEva 返回 目标的闪避
    if (this.isPhysical()) {
        return target.eva;
//当技能的命中类型为魔法攻击, 则 itemEva 返回 目标的魔法闪避
    } else if (this.isMagical()) {
        return target.mev;
//当技能的命中类型为必中, 则 itemEva 返回 0
    } else {
        return 0;
    }
};

    result.used = this.testApply(target);
//随机数大于等于 itemHit 时, 使用者没命中
    result.missed = (result.used && Math.random() >= this.itemHit(target));
//随机数小于 itemEva 时, 目标有闪避
    result.evaded = (!result.missed && Math.random() < this.itemEva(target));

使用者有命中+目标没闪避 时, 即表示命中了
Game_ActionResult.prototype.isHit = function() {
    return this.used && !this.missed && !this.evaded;
};



反击(率)和(魔法)反射率

Game_Action.prototype.itemCnt = function(target) {
//当技能的命中类型为物理攻击 且 目标可以行动, 则 itemCnt 返回 目标的反击率, 否则返回 0
    if (this.isPhysical() && target.canMove()) {
        return target.cnt;
    } else {
        return 0;
    }
};

Game_Action.prototype.itemMrf = function(target) {
//当技能的命中类型为魔法攻击, 则 itemMrf 返回 目标的魔法反射率, 否则返回 0
    if (this.isMagical()) {
        return target.mrf;
    } else {
        return 0;
    }
};

BattleManager.invokeAction = function(subject, target) {
    this._logWindow.push('pushBaseLine');
//随机数小于 itemCnt 时, 发生反击
    if (Math.random() < this._action.itemCnt(target)) {
        this.invokeCounterAttack(subject, target);
//随机数小于 itemMrf 时, 发生魔法反射
    } else if (Math.random() < this._action.itemMrf(target)) {
        this.invokeMagicReflection(subject, target);
作者: 任小雪    时间: 2021-4-30 13:53
alexncf125 发表于 2021-4-30 05:05
50星屑有点少

暴击率与暴击闪避的判定公式

星屑给了,不过有没有更详细一点的内容,包括其他属性的,甚至是这些属性在技能运作的前后判定顺序的(贪婪.jpg)




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