| 
 
| 赞 | 160 |  
| VIP | 0 |  
| 好人卡 | 0 |  
| 积分 | 273 |  
| 经验 | 0 |  
| 最后登录 | 2025-11-1 |  
| 在线时间 | 5455 小时 |  
 Lv5.捕梦者 
	梦石0 星屑27257 在线时间5455 小时注册时间2016-3-8帖子1685 | 
| 本帖最后由 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);
 | 
 |