查看: 2375|回复: 5

[已经解决] 有沒有辦法限制迴避率 反擊之類的上限

[复制链接]
梦石
0
星屑
497
在线时间
266 小时
注册时间
2015-12-8
回帖
729
发表于 2016-2-25 23:19:33 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 小叮鈴 于 2016-2-25 23:29 编辑

魔法反射 迴避率 反擊等等 這些能設定上限嗎?{:2_248:}  裝備計算用+法 如果設定裝備部位很多 很容易就100%了

還是有辦法機率用乘法 比如兩個50%的裝備 預設是50%+50%=100% 有辦法改成1 -(50%*50%)=75%之類的
梦石
0
星屑
647
在线时间
165 小时
注册时间
2012-4-18
回帖
237
发表于 2016-2-26 23:18:48 来自手机 | 显示全部楼层
YEP有一个伤害公式的插件,它有一个附带的功能,就是可以控制整个战斗过程的各种计算,但是我没看懂是怎么回事,看了一段,感觉实在是在细致了,有种不好下手的感觉,楼主可以去看看,说错定就解决了。
回复

使用道具 举报

梦石
0
星屑
61
在线时间
696 小时
注册时间
2011-1-4
回帖
176
发表于 2016-2-26 23:34:26 | 显示全部楼层
本帖最后由 cjlzbb 于 2016-2-26 23:46 编辑

强烈建议改成反比机制

如果防御力降低伤害为 1/(1+0.01*防御力),在人物HP为100的情况下,
0防御力时受到伤害为100%,需要受到100攻击力的打击才会被秒
100防御力时受到伤害为50%,需要受到200攻击力的打击才会被秒
200伤害时受到伤害为33%,需要受到300攻击力的打击才会被秒
也就是说每点防御力提高1%有效抗打击能力

同理闪避率反击率等所有负向能力值也建议改为如此。

例:有 1/(1+0.01*闪避率)的几率被击中
0%闪避率时被击中概率是100%,被击中100次的平均需要攻击次数为100次
50%闪避率时被击中概率是66.6%,被击中100次的平均需要攻击次数为150次
200%闪避率时被击中概率是33.3%,被击中100次的平均需要攻击次数为300次
也就是说每1%闪避率提高1次被攻击次数

当然记得把所有显示闪避率的地方的用语改成闪避等级或者闪避力,不然会引发歧义

具体修改位置在脚本中搜闪避率的简称就能找到了,
我就记得暴击率是cri,命中率是hit,闪避率应该是mis吧

至于暴击率的话我的做法是
不足100%暴击时,暴击伤害为200%
超过100%暴击的情况下,暴击伤害比例等于暴击率
例:250%暴击的情况下必爆,且暴击伤害=250%

命中率则是超过100%的话,每超过1%则提高1%伤害。

这些都很好改的,VA的话甚至可以直接在公式里写,MV的暂时还没试过
回复

使用道具 举报

梦石
0
星屑
497
在线时间
266 小时
注册时间
2015-12-8
回帖
729
 楼主| 发表于 2016-2-27 09:34:33 | 显示全部楼层
cjlzbb 发表于 2016-2-26 23:34
强烈建议改成反比机制

如果防御力降低伤害为 1/(1+0.01*防御力),在人物HP为100的情况下,

問題就是不知道MV在哪裡改阿{:2_276:}
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2016-2-27 09:40:43 | 显示全部楼层
本帖最后由 tseyik 于 2016-2-27 09:44 编辑

[fold=戦闘バランス調整][pre lang="javascript"]//=============================================================================
// BattleBalanceCustom.js
//=============================================================================
// Copyright (c) 2015 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
* @plugindesc 【MPP ver.2.0】デフォルトで変更できない戦闘バランスを調整します。
* @author 木星ペンギン
* @help ●運の弱体への影響率
*  運の弱体への影響率は加算ではなく乗算です。
*
*  例えば、対象より運が10多ければ成功率が1%上がることになりますが、
*  元の成功率が50%の場合
*    50% + 1% = 51%
*  になるのではなく
*    50% * 101% = 50.5%
*  となります。
*
*
* ●能力値強化/弱体アイコンの開始位置
*  アイコンの並び順は
*    HP, MP, 攻撃力, 防御力, 魔法力, 魔法防御, 敏捷性, 運
*  です。
*  HPのアイコン番号が開始位置になります。
*
*  デフォルトの能力値強化アイコンの開始位置は[32,40]となっていますが
*  これは重ね掛け1回は32番、重ね掛け2回は40番が開始位置になるということです。
*
*
* ●逃走確率
*  逃走に失敗するごとに成功率が0.1上昇します。
*  $gameParty.agility()  // 味方の敏捷性の平均値
*  $gameTroop.agility()  // 敵の敏捷性の平均値
*
*
* ●命中と回避
*  ツクールのデフォルトでは、命中判定と回避判定が別々に行われています。
*  そのため命中率が100%を超えていても、回避率が設定されている相手には
*  その確率でミスします。
*  
*  命中率と回避率の差で判定したい場合は、
*    [物理攻撃]の命中率を successRate * (a.hit - b.eva)
*    [物理攻撃]の回避率を 0
*  に変更してください。
*
*
* ================================
* ● Custom Formula
*  計算式を直接変更できます。
*  アイテムやスキルのダメージ計算と同じで、攻撃者を"a"、対象者を"b"、
*  "v[n]"で変数n番の値を参照します。
*
* ▽確率を設定する際の注意点
*   ツクールでは成功判定を0以上1未満の乱数によって行っています。
*   よって1.0で成功率100%となります。
*   成功率50%であれば0.5、成功率80%なら0.8となるように設定してください。
*
* ▽各メソッドの説明
*   rand(n)   // 0 ~ n-1 の範囲内からランダムで値を取得します。
*   floor(n)  // 数値 n の小数点以下を切り捨てます。
*
* ▽能力値一覧
*  "x"を"a"または"b"に置き換えてください。
*  
*   x.hp   // 現在のHP
*   x.mp   // 現在のMP
*   x.tp   // 現在のTP
*   
*  通常能力値
*   x.mhp  // 最大HP
*   x.mmp  // 最大MP
*   x.atk  // 攻撃力
*   x.def  // 防御力
*   x.mat  // 魔法力
*   x.mdf  // 魔法防御
*   x.agi  // 敏捷性
*   x.luk  // 運
*   
*  追加能力値 (100%は1.0になります)
*   x.hit  // 命中率
*   x.eva  // 回避率
*   x.cri  // 会心率
*   x.cev  // 会心回避率
*   x.mev  // 魔法回避率
*   x.mrf  // 魔法反射率
*   x.cnt  // 反撃率
*   x.hrg  // HP再生率
*   x.mrg  // MP再生率
*   x.trg  // TP再生率
*   
*  特殊能力値 (100%は1.0になります)
*   x.tgr  // 狙われ率
*   x.grd  // 防御効果率
*   x.rec  // 回復効果率
*   x.pha  // 薬の知識
*   x.mcr  // MP消費率
*   x.tcr  // TPチャージ率
*   x.pdr  // 物理ダメージ率
*   x.mdr  // 魔法ダメージ率
*   x.fdr  // 床ダメージ率
*   x.exr  // 経験獲得率
*   
* ================================
* 制作 : 木星ペンギン
* URL : http://woodpenguin.blog.fc2.com/
*
* @param === Buff ===
*
* @param Max Buff
* @desc 能力値強化/弱体の重ね掛け上限
* @default 2
*
* @param Buff Rate
* @desc 能力値強化/弱体の重ね掛け1回ごとの影響率
* 左から 最大HP,最大MP,攻撃力,防御力,魔法力,魔法防御,敏捷性,運
* @default 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25
*
* @param Icon Buff Start
* @desc 能力値強化アイコンの開始位置
* 重ね掛け回数ごとの開始位置をカンマで区切って設定
* @default 32,40
*
* @param Icon Debuff Start
* @desc 能力値弱体アイコンの開始位置
* 重ね掛け回数ごとの開始位置をカンマで区切って設定
* @default 48,56
*
* @param === Custom Formula ===
*
* @param Speed
* @desc 行動速度の計算式
* "b"は使用不可。
* @default a.agi + rand(floor(5 + a.agi / 4))
*
* @param Certain Hit Rate
* @desc 命中タイプが[必中]の場合の命中率
* "item"でアイテム/スキル、"successRate"で成功率を参照。
* @default successRate
*
* @param Physical Hit Rate
* @desc 命中タイプが[物理攻撃]の場合の命中率
* "item"でアイテム/スキル、"successRate"で成功率を参照。
* @default successRate * a.hit
*
* @param Magical Hit Rate
* @desc 命中タイプが[魔法攻撃]の場合の命中率
* "item"でアイテム/スキル、"successRate"で成功率を参照。
* @default successRate
*
* @param Certain Eva Rate
* @desc 命中タイプが[必中]の場合の回避率
* @default 0
*
* @param Physical Eva Rate
* @desc 命中タイプが[物理攻撃]の場合の回避率
* @default b.eva
*
* @param Magical Eva Rate
* @desc 命中タイプが[魔法攻撃]の場合の回避率
* @default b.mev
*
* @param Apply Critical
* @desc クリティカルダメージの計算式
* "damage"で元のダメージを参照。
* @default damage * 3
*
* @param Critical Rate
* @desc クリティカル率の計算式
* @default a.cri * (1 - b.cev)
*
* @param Luk Effect Rate
* @desc 運による弱体有効度
* @default 1.0 + (a.luk - b.luk) * 0.001
*
* @param Charge TP By Damage
* @desc 被ダメージによる TP チャージ量
* "damageRate"で受けたダメージ率(ダメージ量 / 最大HP)を参照。
* @default floor(50 * damageRate * a.tcr)
*
* @param Init TP
* @desc 戦闘開始時のTP
* "b"は使用不可。
* @default rand(25)
*
* @param Encounter Count
* @desc エンカウント歩数
* "step"でマップのエンカウント歩数を参照。"a","b"は使用不可。
* @default rand(step) + rand(step) + 1
*
* @param Escape Ratio
* @desc 逃走確率
* "a","b"は使用不可。
* @default 0.5 * $gameParty.agility() / $gameTroop.agility()
*
*
*/

(function() {

var parameters = PluginManager.parameters('BattleBalanceCustom');
var Buff = {
    max:  Number(parameters['Max Buff'] || 2),
    rate:  (parameters['Buff Rate']).split(",").map(Number),
    iconBuffStart: (parameters['Icon Buff Start'] || '32,40').split(",").map(Number),
    iconDebuffStart: (parameters['Icon Debuff Start'] || '48,56').split(",").map(Number)
};
for (var i = 0; i < 8; i++) {
    if (Buff.rate === undefined) Buff.rate = 0.25;
}
var Advanced = {
    speed: parameters['Speed'] || '0',
   
    certainHitRate: parameters['Certain Hit Rate'] || '0',
    physicalHitRate: parameters['Physical Hit Rate'] || '0',
    magicalHitRate: parameters['Magical Hit Rate'] || '0',
    certainEvaRate: parameters['Certain Eva Rate'] || '0',
    physicalEvaRate: parameters['Physical Eva Rate'] || '0',
    magicalEvaRate: parameters['Magical Eva Rate'] || '0',
   
    applyCritical: parameters['Apply Critical'] || '0',
    lukEffectRate: parameters['Luk Effect Rate'] || '1',
    criticalRate: parameters['Critical Rate'] || '0',
    initTp: parameters['Init TP'] || '0',
    chargeTpByDamage: parameters['Charge TP By Damage'] || '0',
    encounterCount: parameters['Encounter Count'] || '1',
    escapeRatio: parameters['Escape Ratio'] || '0.5'
   
};

for (var key in Advanced) {
    Advanced[key] = Advanced[key].replace(/rand\(/g, 'Math.randomInt(');
    Advanced[key] = Advanced[key].replace(/floor\(/g, 'Math.floor(');
}

var Alias = {};

//-----------------------------------------------------------------------------
// BattleManager

//109
BattleManager.makeEscapeRatio = function() {
    var v = $gameVariables._data;
    this._escapeRatio = eval(Advanced.escapeRatio);
};

//-----------------------------------------------------------------------------
// Game_Action

//249
Game_Action.prototype.speed = function() {
    var a = this.subject();
    var v = $gameVariables._data;
    var speed = eval(Advanced.speed);
    if (this.item()) {
        speed += this.item().speed;
    }
    if (this.isAttack()) {
        speed += this.subject().attackSpeed();
    }
    return speed;
};

//442
Game_Action.prototype.itemHit = function(target) {
    var a = this.subject();
    var b = target;
    var v = $gameVariables._data;
    var item = this.item();
    var successRate = item.successRate * 0.01;
    if (this.isPhysical()) {
        return eval(Advanced.physicalHitRate);
    } else if (this.isMagical()) {
        return eval(Advanced.magicalHitRate);
    } else {
        return eval(Advanced.certainHitRate);
    }
};

//450
Game_Action.prototype.itemEva = function(target) {
    var a = this.subject();
    var b = target;
    var v = $gameVariables._data;
    if (this.isPhysical()) {
        return eval(Advanced.physicalEvaRate);
    } else if (this.isMagical()) {
        return eval(Advanced.magicalEvaRate);
    } else {
        return eval(Advanced.certainEvaRate);
    }
};

//460
Game_Action.prototype.itemCri = function(target) {
    if (this.item().damage.critical) {
        var a = this.subject();
        var b = target;
        var v = $gameVariables._data;
        return eval(Advanced.criticalRate);
    } else {
        return 0;
    }
};

//486
var criTarget;
Alias.GaAc_makeDamageValue = Game_Action.prototype.makeDamageValue
Game_Action.prototype.makeDamageValue = function(target, critical) {
    criTarget = target;
    return Alias.GaAc_makeDamageValue.call(this, target, critical);
};

//539
Game_Action.prototype.applyCritical = function(damage) {
    var a = this.subject();
    var b = criTarget;
    var v = $gameVariables._data;
    return eval(Advanced.applyCritical);
};

//776
Game_Action.prototype.lukEffectRate = function(target) {
    var a = this.subject();
    var b = target;
    var v = $gameVariables._data;
    return Math.max(eval(Advanced.lukEffectRate), 0.0);
};

//-----------------------------------------------------------------------------
// Game_BattlerBase

//197
Game_BattlerBase.prototype.isMaxBuffAffected = function(paramId) {
    return this._buffs[paramId] === Buff.max;
};

//201
Game_BattlerBase.prototype.isMaxDebuffAffected = function(paramId) {
    return this._buffs[paramId] === -Buff.max;
};

//271
Game_BattlerBase.prototype.buffIconIndex = function(buffLevel, paramId) {
    if (buffLevel > 0) {
        if (Buff.iconBuffStart[buffLevel - 1]) {
            return Buff.iconBuffStart[buffLevel - 1] + paramId;
        }
    } else if (buffLevel < 0) {
        if (Buff.iconDebuffStart[-buffLevel - 1]) {
            return Buff.iconDebuffStart[-buffLevel - 1] + paramId;
        }
    }
    return 0;
};

//362
Game_BattlerBase.prototype.paramBuffRate = function(paramId) {
    return this._buffs[paramId] * Buff.rate[paramId] + 1.0;
};

//-----------------------------------------------------------------------------
// Game_Battler

//374
Game_Battler.prototype.initTp = function() {
    var a = this;
    var v = $gameVariables._data;
    this.setTp(eval(Advanced.initTp));
};

//382
Game_Battler.prototype.chargeTpByDamage = function(damageRate) {
    var a = this;
    var v = $gameVariables._data;
    this.gainSilentTp(eval(Advanced.initTp));
};

//-----------------------------------------------------------------------------
// Game_Player

//179
Game_Player.prototype.makeEncounterCount = function() {
    var v = $gameVariables._data;
    var step = $gameMap.encounterStep();
    this._encounterCount = eval(Advanced.encounterCount);
};

})();
[/pre]
[/fold]
http://woodpenguin.web.fc2.com/MV_Plugin/BattleBalanceCustom.html (需翻墻)

規約:MIT

調整できるもの

    クリティカル時のダメージ倍率
    運の弱体への影響率
    運のクリティカル率への影響率
    能力値強化/弱体の重ね掛け上限
    能力値強化/弱体の重ね掛け1回ごとの影響率
    能力値強化/弱体アイコン
    戦闘開始時のTP
    被ダメージ時の取得TP
    行動順を決める行動速度のランダム値
    エンカウント歩数
    逃走確率
    命中率
    回避率
回复

使用道具 举报

梦石
0
星屑
61
在线时间
696 小时
注册时间
2011-1-4
回帖
176
发表于 2016-2-27 10:01:37 来自手机 | 显示全部楼层
小叮鈴 发表于 2016-2-27 09:34
問題就是不知道MV在哪裡改阿

晕,每次手边都没有RM,你在Game_BattlerBase里搜索下mis hit啥的就看到了
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部