- /** 
-  * 战斗管理 
-  * @constructor 
-  */ 
- function BattleManager() { 
-     throw new Error('This is a static class'); 
- } 
-   
- /** 
-  * 初始化一场战斗 
-  * @param troopId 敌军部队ID 
-  * @param canEscape 可以逃跑 
-  * @param canLose 可以失败 
-  */ 
- BattleManager.setup = function (troopId, canEscape, canLose) { 
-     //初始战斗运行时 
-     this.initMembers(); 
-     /** 
-      * 可以逃跑 
-      */ 
-     this._canEscape = canEscape; 
-     /** 
-      * 可以失败 
-      */ 
-     this._canLose = canLose; 
-     /** 
-      * 敌军部队初始化 
-      */ 
-     $gameTroop.setup(troopId); 
-     /** 
-      * 战斗显示内容回调通知 
-      */ 
-     $gameScreen.onBattleStart(); 
-     /** 
-      * 生成逃跑率 
-      */ 
-     this.makeEscapeRatio(); 
- }; 
-   
- /** 
-  * 初始化战斗运行时 
-  */ 
- BattleManager.initMembers = function () { 
-     /** 
-      * 阶段 
-      * @type {string} 
-      * @private 
-      */ 
-     this._phase = 'init'; 
-     /** 
-      * 可以逃跑 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._canEscape = false; 
-   
-     /** 
-      * 可以失败 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._canLose = false; 
-     /** 
-      * 是否为测试战斗 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._battleTest = false; 
-     /** 
-      * 事件回调 
-      * @type {function} 
-      * @private 
-      */ 
-     this._eventCallback = null; 
-     /** 
-      * 先发制人 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._preemptive = false; 
-     /** 
-      * 意外遇敌 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._surprise = false; 
-     /** 
-      * 角色号 
-      * @type {number} 
-      * @private 
-      */ 
-     this._actorIndex = -1; 
-     /** 
-      * 强制战斗人员 
-      * @type {Game_Battler} 
-      * @private 
-      */ 
-     this._actionForcedBattler = null; 
-     /** 
-      * 地图背景音乐 
-      * @type {Object} 
-      * @private 
-      */ 
-     this._mapBgm = null; 
-     /** 
-      * 地图背景音效 
-      * @type {Object} 
-      * @private 
-      */ 
-     this._mapBgs = null; 
-     /** 
-      * 可以行动的战斗人员 
-      * @type {*[]} 
-      * @private 
-      */ 
-     this._actionBattlers = []; 
-     /** 
-      * 战斗人 
-      * @type {Game_Battler} 
-      * @private 
-      */ 
-     this._subject = null; 
-     /** 
-      * 行动指令 
-      * @type {Game_Action} 
-      * @private 
-      */ 
-     this._action = null; 
-     /** 
-      * 被作用的目标 
-      * @type {*[敌人,友方]} 
-      * @private 
-      */ 
-     this._targets = []; 
-     /** 
-      * 战斗日志窗口 
-      * @type {Window_BattleLog} 
-      * @private 
-      */ 
-     this._logWindow = null; 
-     /** 
-      * 战斗状态窗口 
-      * @type {Window_BattleStatus} 
-      * @private 
-      */ 
-     this._statusWindow = null; 
-     /** 
-      * 地图屏幕上的精灵集 
-      * @type {Spriteset_Map} 
-      * @private 
-      */ 
-     this._spriteset = null; 
-     /** 
-      * 逃跑概率 
-      * @type {number} 
-      * @private 
-      */ 
-     this._escapeRatio = 0; 
-     /** 
-      * 逃脱 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._escaped = false; 
-     /** 
-      * 怪物掉落奖励 
-      * @type {{}} 
-      * @private 
-      */ 
-     this._rewards = {}; 
-     /** 
-      * 强制回合状态 
-      * @type {boolean} 
-      * @private 
-      */ 
-     this._turnForced = false; 
- }; 
-   
- /** 
-  * 战斗测试 
-  * @returns {boolean} 
-  */ 
- BattleManager.isBattleTest = function () { 
-     return this._battleTest; 
- }; 
-   
- /** 
-  * 设置战斗测试状态 
-  * @param {boolean} battleTest 
-  */ 
- BattleManager.setBattleTest = function (battleTest) { 
-     this._battleTest = battleTest; 
- }; 
-   
- /** 
-  * 设置事件回调 
-  * @param {Function} callback 
-  */ 
- BattleManager.setEventCallback = function (callback) { 
-     this._eventCallback = callback; 
- }; 
-   
- /** 
-  * 设置日志窗口 
-  * @param {Window_BattleLog} logWindow 
-  */ 
- BattleManager.setLogWindow = function (logWindow) { 
-     this._logWindow = logWindow; 
- }; 
-   
- /** 
-  * 设置状态 
-  * @param {Window_BattleStatus} statusWindow 
-  */ 
- BattleManager.setStatusWindow = function (statusWindow) { 
-     this._statusWindow = statusWindow; 
- }; 
-   
- /** 
-  * 设置地图屏幕上的精灵集 
-  * @param {Spriteset_Map} spriteset 
-  */ 
- BattleManager.setSpriteset = function (spriteset) { 
-     this._spriteset = spriteset; 
- }; 
-   
- /** 
-  * 遇敌时 
-  */ 
- BattleManager.onEncounter = function () { 
-     //先发制人 
-     this._preemptive = (Math.random() < this.ratePreemptive()); 
-     //遭遇突袭 
-     this._surprise = (Math.random() < this.rateSurprise() && !this._preemptive); 
- }; 
-   
- /** 
-  * 先发制人率 
-  * @returns {Number} 
-  */ 
- BattleManager.ratePreemptive = function () { 
-     return $gameParty.ratePreemptive($gameTroop.agility()); 
- }; 
-   
- /** 
-  * 遭遇突袭率 
-  * @returns {Number} 
-  */ 
- BattleManager.rateSurprise = function () { 
-     return $gameParty.rateSurprise($gameTroop.agility()); 
- }; 
-   
- /** 
-  * 保存背景音乐和音效 
-  */ 
- BattleManager.saveBgmAndBgs = function () { 
-     //地图背景音乐 
-     this._mapBgm = AudioManager.saveBgm(); 
-     //地图背景音乐 
-     this._mapBgs = AudioManager.saveBgs(); 
- }; 
-   
- /** 
-  * 播放战斗背景音乐 
-  */ 
- BattleManager.playBattleBgm = function () { 
-     AudioManager.playBgm($gameSystem.battleBgm()); 
-     AudioManager.stopBgs(); 
- }; 
-   
- /** 
-  * 播放胜利的音效 
-  */ 
- BattleManager.playVictoryMe = function () { 
-     AudioManager.playMe($gameSystem.victoryMe()); 
- }; 
-   
- /** 
-  * 播放失败的音效 
-  */ 
- BattleManager.playDefeatMe = function () { 
-     AudioManager.playMe($gameSystem.defeatMe()); 
- }; 
-   
- /** 
-  * 重放播放战斗背景音乐 
-  */ 
- BattleManager.replayBgmAndBgs = function () { 
-     if (this._mapBgm) { 
-         AudioManager.replayBgm(this._mapBgm); 
-     } else { 
-         AudioManager.stopBgm(); 
-     } 
-     if (this._mapBgs) { 
-         AudioManager.replayBgs(this._mapBgs); 
-     } 
- }; 
-   
- /** 
-  * 生成逃跑率 
-  */ 
- BattleManager.makeEscapeRatio = function () { 
-     this._escapeRatio = 0.5 * $gameParty.agility() / $gameTroop.agility(); 
- }; 
-   
- /** 
-  * 更新成语变量 
-  */ 
- BattleManager.update = function () { 
-     if (!this.isBusy() && !this.updateEvent()) { 
-         //匹配阶段 
-         switch (this._phase) { 
-             //战斗开始 
-             case 'start': 
-                 this.startInput(); 
-                 break; 
-             //更新回合 
-             case 'turn': 
-                 this.updateTurn(); 
-                 break; 
-             //指令阶段 
-             case 'action': 
-                 this.updateAction(); 
-                 break; 
-             //回合结束 
-             case 'turnEnd': 
-                 this.updateTurnEnd(); 
-                 break; 
-             //战斗结束 
-             case 'battleEnd': 
-                 this.updateBattleEnd(); 
-                 break; 
-         } 
-     } 
- }; 
-   
- /** 
-  * 更新不同阶段的指令事件 
-  * @returns {boolean} 
-  */ 
- BattleManager.updateEvent = function () { 
-     switch (this._phase) { 
-         case 'start': 
-         case 'turn': 
-         case 'turnEnd': 
-             //强制行动 
-             if (this.isActionForced()) { 
-                 //执行强制行动指令 
-                 this.processForcedAction(); 
-                 return true; 
-             } else { 
-                 //正常行动指令 
-                 return this.updateEventMain(); 
-             } 
-     } 
-     //检查中指状态 
-     return this.checkAbort(); 
- }; 
-   
- /** 
-  * 更新正常事件 
-  * @returns {boolean} 
-  */ 
- BattleManager.updateEventMain = function () { 
-     //更新敌军部队指令 
-     $gameTroop.updateInterpreter(); 
-   
-     //requestMotionRefresh == true 
-     $gameParty.requestMotionRefresh(); 
-     //敌军事件是否运行||战斗已经结束 
-     if ($gameTroop.isEventRunning() || this.checkBattleEnd()) { 
-         return true; 
-     } 
-     $gameTroop.setupBattleEvent(); 
-     if ($gameTroop.isEventRunning() || SceneManager.isSceneChanging()) { 
-         return true; 
-     } 
-     return false; 
- }; 
-   
- /** 
-  * 忙碌状态 
-  * @returns {boolean} 
-  */ 
- BattleManager.isBusy = function () { 
-     return ($gameMessage.isBusy() || this._spriteset.isBusy() || 
-         this._logWindow.isBusy()); 
- }; 
-   
- /** 
-  * 正在输入 
-  * @returns {boolean} 
-  */ 
- BattleManager.isInputting = function () { 
-     return this._phase === 'input'; 
- }; 
-   
- /** 
-  * 正在回合 
-  * @returns {boolean} 
-  */ 
- BattleManager.isInTurn = function () { 
-     return this._phase === 'turn'; 
- }; 
-   
- /** 
-  * 已Turn结束 
-  * @returns {boolean} 
-  */ 
- BattleManager.isTurnEnd = function () { 
-     return this._phase === 'turnEnd'; 
- }; 
-   
- /** 
-  * 正在中止 
-  * @returns {boolean} 
-  */ 
- BattleManager.isAborting = function () { 
-     return this._phase === 'aborting'; 
- }; 
-   
- /** 
-  * 战斗结束 
-  * @returns {boolean} 
-  */ 
- BattleManager.isBattleEnd = function () { 
-     return this._phase === 'battleEnd'; 
- }; 
-   
- /** 
-  * 可以逃跑 
-  * @returns {boolean} 
-  */ 
- BattleManager.canEscape = function () { 
-     return this._canEscape; 
- }; 
-   
- /** 
-  * 可以失败 
-  * @returns {boolean} 
-  */ 
- BattleManager.canLose = function () { 
-     return this._canLose; 
- }; 
-   
- /** 
-  * 已经逃走状态 
-  * @returns {boolean} 
-  */ 
- BattleManager.isEscaped = function () { 
-     return this._escaped; 
- }; 
-   
- /** 
-  * 当前行动角色 
-  * @returns {Game_Actor} 
-  */ 
- BattleManager.actor = function () { 
-     return this._actorIndex >= 0 ? $gameParty.members()[this._actorIndex] : null; 
- }; 
-   
- /** 
-  * 清空战斗的角色 
-  */ 
- BattleManager.clearActor = function () { 
-     this.changeActor(-1, ''); 
- }; 
-   
- /** 
-  * 变更战斗角色 
-  * @param newActorIndex 战斗角色号 
-  * @param lastActorActionState 最后一次角色行动的状态 
-  */ 
- BattleManager.changeActor = function (newActorIndex, lastActorActionState) { 
-     //最近行动的角色 
-     var lastActor = this.actor(); 
-     //当前的行动的角色号 = 新的角色号 
-     this._actorIndex = newActorIndex; 
-     //取得当前行动的角色 
-     var newActor = this.actor(); 
-     if (lastActor) { 
-         lastActor.setActionState(lastActorActionState); 
-     } 
-     if (newActor) { 
-         //新角色进入指令输入阶段 
-         newActor.setActionState('inputting'); 
-     } 
- }; 
-   
- /** 
-  * 战斗前置操作 
-  */ 
- BattleManager.startBattle = function () { 
-     //阶段 = start 
-     this._phase = 'start'; 
-     //游戏系统更新战斗前置操作 
-     $gameSystem.onBattleStart(); 
-     //我方队伍的战斗前置操作 
-     $gameParty.onBattleStart(); 
-     //敌方队伍的战斗前置操作 
-     $gameTroop.onBattleStart(); 
-     //显示战斗开始的文本内容 
-     this.displayStartMessages(); 
- }; 
-   
- /** 
-  * 显示战斗开始的文本信息 
-  */ 
- BattleManager.displayStartMessages = function () { 
-     //怪物名称 
-     $gameTroop.enemyNames().forEach(function (name) { 
-         $gameMessage.add(TextManager.emerge.format(name)); 
-     }); 
-     //先发遇敌 
-     if (this._preemptive) { 
-         $gameMessage.add(TextManager.preemptive.format($gameParty.name())); 
-     } else if (this._surprise) { 
-         $gameMessage.add(TextManager.surprise.format($gameParty.name())); 
-     } 
- }; 
-   
- /** 
-  * 开始输入指令 
-  */ 
- BattleManager.startInput = function () { 
-     //战斗阶段 = input 
-     this._phase = 'input'; 
-     //我方队伍生成行动指令 
-     $gameParty.makeActions(); 
-     //敌方队伍生成行动指令 
-     $gameTroop.makeActions(); 
-     //清除指令角色信息 
-     this.clearActor(); 
-     //被动遇敌 
-     if (this._surprise || !$gameParty.canInput()) { 
-         //开始回合 
-         this.startTurn(); 
-     } 
- }; 
-   
- /** 
-  * 正在输入行动指令的信息 
-  * @returns {Game_Action} 
-  */ 
- BattleManager.inputtingAction = function () { 
-     return this.actor() ? this.actor().inputtingAction() : null; 
- }; 
-   
- /** 
-  * 选择下一个行动指令 
-  */ 
- BattleManager.selectNextCommand = function () { 
-     do { 
-         if (!this.actor() || !this.actor().selectNextCommand()) { 
-             this.changeActor(this._actorIndex + 1, 'waiting'); 
-             if (this._actorIndex >= $gameParty.size()) { 
-                 this.startTurn(); 
-                 break; 
-             } 
-         } 
-     } while (!this.actor().canInput()); 
- }; 
-   
- /** 
-  * 选择上一个行动指令 
-  */ 
- BattleManager.selectPreviousCommand = function () { 
-     do { 
-         if (!this.actor() || !this.actor().selectPreviousCommand()) { 
-             this.changeActor(this._actorIndex - 1, 'undecided'); 
-             if (this._actorIndex < 0) { 
-                 return; 
-             } 
-         } 
-     } while (!this.actor().canInput()); 
- }; 
-   
- /** 
-  * 刷新状态信息 
-  */ 
- BattleManager.refreshStatus = function () { 
-     this._statusWindow.refresh(); 
- }; 
-   
- /** 
-  * 开始回合 
-  */ 
- BattleManager.startTurn = function () { 
-     //战斗阶段 =  turn 
-     this._phase = 'turn'; 
-     //清除角色信息 
-     this.clearActor(); 
-     //敌军增加回合 
-     $gameTroop.increaseTurn(); 
-     //生成行动命令 
-     this.makeActionOrders(); 
-     //requestMotionRefresh = true 
-     $gameParty.requestMotionRefresh(); 
-     //开始回合 
-     this._logWindow.startTurn(); 
- }; 
-   
- /** 
-  * 更新回合 
-  */ 
- BattleManager.updateTurn = function () { 
-     //requestMotionRefresh = true 
-     $gameParty.requestMotionRefresh(); 
-     //当前战斗人 
-     if (!this._subject) { 
-         this._subject = this.getNextSubject(); 
-     } 
-     if (this._subject) { 
-         //执行回合 
-         this.processTurn(); 
-     } else { 
-         //回合结束 
-         this.endTurn(); 
-     } 
- }; 
-   
- /** 
-  * 执行回合流程 
-  */ 
- BattleManager.processTurn = function () { 
-     //当前战斗人 
-     var subject = this._subject; 
-     //当前行动指令 
-     var action = subject.currentAction(); 
-     if (action) { 
-         //指令准备阶段 
-         action.prepare(); 
-         //行动指令验证 
-         if (action.isValid()) { 
-             //开始行动行动指令 
-             this.startAction(); 
-         } 
-         //移除当前行动指令 
-         subject.removeCurrentAction(); 
-     } else { 
-         //行动结束后通知后置行动操作操作 
-         subject.onAllActionsEnd(); 
-         //刷新状态信息 
-         this.refreshStatus(); 
-         //显示自动生效的状态 
-         this._logWindow.displayAutoAffectedStatus(subject); 
-         //显示当前状态 
-         this._logWindow.displayCurrentState(subject); 
-         //显示再生 
-         this._logWindow.displayRegeneration(subject); 
-         //下个行动对象 
-         this._subject = this.getNextSubject(); 
-     } 
- }; 
-   
- /** 
-  * 结束回合 
-  */ 
- BattleManager.endTurn = function () { 
-     //当前战斗阶段 == 回合结束 
-     this._phase = 'turnEnd'; 
-     //先发制人重置 
-     this._preemptive = false; 
-     //意外遇袭重置 
-     this._surprise = false; 
-     //所有战斗成员通知回合结束 
-     this.allBattleMembers().forEach(function (battler) { 
-         battler.onTurnEnd(); 
-         this.refreshStatus(); 
-         this._logWindow.displayAutoAffectedStatus(battler); 
-         this._logWindow.displayRegeneration(battler); 
-     }, this); 
-     //重置强制回合 
-     if (this.isForcedTurn()) { 
-         this._turnForced = false; 
-     } 
- }; 
-   
- /** 
-  * 是否为强制回合 
-  * @returns {boolean} 
-  */ 
- BattleManager.isForcedTurn = function () { 
-     return this._turnForced; 
- }; 
-   
- /** 
-  * 回合结束 
-  */ 
- BattleManager.updateTurnEnd = function () { 
-     this.startInput(); 
- }; 
-   
- /** 
-  * 下个战斗对象 
-  * @returns {Game_Battler} 
-  */ 
- BattleManager.getNextSubject = function () { 
-     for (; ;) { 
-         var battler = this._actionBattlers.shift(); 
-         if (!battler) { 
-             return null; 
-         } 
-         if (battler.isBattleMember() && battler.isAlive()) { 
-             return battler; 
-         } 
-     } 
- }; 
-   
- /** 
-  * 所有战斗成员信息(我方队伍+地方队伍) 
-  * @returns {Array:Game_Battler} 
-  */ 
- BattleManager.allBattleMembers = function () { 
-     return $gameParty.members().concat($gameTroop.members()); 
- }; 
-   
- /** 
-  * 生成战斗指令 
-  */ 
- BattleManager.makeActionOrders = function () { 
-     //战斗成员 
-     var battlers = []; 
-     //非意外遇袭 
-     if (!this._surprise) { 
-         //获得我方队伍信息 
-         battlers = battlers.concat($gameParty.members()); 
-     } 
-     //非先发制人 
-     if (!this._preemptive) { 
-         //获得敌方队伍信息 
-         battlers = battlers.concat($gameTroop.members()); 
-     } 
-   
-     battlers.forEach(function (battler) { 
-         //生成速度 
-         battler.makeSpeed(); 
-     }); 
-     //根据行动速度排序,速度快的先开始行动 
-     battlers.sort(function (a, b) { 
-         return b.speed() - a.speed(); 
-     }); 
-     this._actionBattlers = battlers; 
- }; 
-   
- /** 
-  * 开始行动指令 
-  */ 
- BattleManager.startAction = function () { 
-     //当前战斗角色 
-     var subject = this._subject; 
-     //当前行动指令 
-     var action = subject.currentAction(); 
-     //当前指令目标(敌方队伍|我方队伍) 
-     var targets = action.makeTargets(); 
-     //战斗阶段 = 行动指令 
-     this._phase = 'action'; 
-     //行动指令 
-     this._action = action; 
-     //目标对象 
-     this._targets = targets; 
-     //当前战斗角色使用的道具 
-     subject.useItem(action.item()); 
-     //附加当前行动特性效果 
-     this._action.applyGlobal(); 
-     //刷新状态 
-     this.refreshStatus(); 
-     //日志窗口记录当前行动指令信息 
-     this._logWindow.startAction(subject, action, targets); 
- }; 
-   
- /** 
-  * 更新行动指令 
-  */ 
- BattleManager.updateAction = function () { 
-     var target = this._targets.shift(); 
-     if (target) { 
-         //执行指令 
-         this.invokeAction(this._subject, target); 
-     } else { 
-         //执行指令结束 
-         this.endAction(); 
-     } 
- }; 
-   
- /** 
-  * 执行行动指令结束,进入下一回合 
-  */ 
- BattleManager.endAction = function () { 
-     this._logWindow.endAction(this._subject); 
-     this._phase = 'turn'; 
- }; 
-   
- /** 
-  * 执行行动指令 
-  * @param {Game_Battler} subject 当前行动角色 
-  * @param {Game_Battler} target 当前行动角色的目标角色 
-  */ 
- BattleManager.invokeAction = function (subject, target) { 
-     //压入日志进栈 
-     this._logWindow.push('pushBaseLine'); 
-     //发动反击 
-     if (Math.random() < this._action.itemCnt(target)) { 
-         //反击 
-         this.invokeCounterAttack(subject, target); 
-         //魔法反弹 
-     } else if (Math.random() < this._action.itemMrf(target)) { 
-         //魔法反弹 
-         this.invokeMagicReflection(subject, target); 
-     } else { 
-         //正常行动指令 
-         this.invokeNormalAction(subject, target); 
-     } 
-     //最近一次的目标对象 
-     subject.setLastTarget(target); 
-     //压出日志出栈 
-     this._logWindow.push('popBaseLine'); 
-     //更新状态 
-     this.refreshStatus(); 
- }; 
-   
- /** 
-  * 正常行动指令 
-  * @param {Game_Battler} subject 当前行动角色 
-  * @param {Game_Battler} target 当前行动角色的目标角色 
-  */ 
- BattleManager.invokeNormalAction = function (subject, target) { 
-     var realTarget = this.applySubstitute(target); 
-     this._action.apply(realTarget); 
-     this._logWindow.displayActionResults(subject, realTarget); 
- }; 
-   
- /** 
-  * 反击 
-  * @param {Game_Battler} subject 当前行动角色 
-  * @param {Game_Battler} target 当前行动角色的目标角色 
-  */ 
- BattleManager.invokeCounterAttack = function (subject, target) { 
-     var action = new Game_Action(target); 
-     action.setAttack(); 
-     action.apply(subject); 
-     this._logWindow.displayCounter(target); 
-     this._logWindow.displayActionResults(target, subject); 
- }; 
-   
- /** 
-  * 魔法反弹 
-  * @param {Game_Battler} subject 当前行动角色 
-  * @param {Game_Battler} target 当前行动角色的目标角色 
-  */ 
- BattleManager.invokeMagicReflection = function (subject, target) { 
-     this._action._reflectionTarget = target; 
-     this._logWindow.displayReflection(target); 
-     this._action.apply(subject); 
-     this._logWindow.displayActionResults(target, subject); 
- }; 
-   
- /** 
-  * 如果对象已经死亡,则找切换目标队伍中的其他成员来接收行动指令 
-  * @param {Game_Battler} target 当前行动角色的目标角色 
-  * @returns {Game_Battler} 
-  */ 
- BattleManager.applySubstitute = function (target) { 
-     if (this.checkSubstitute(target)) { 
-         var substitute = target.friendsUnit().substituteBattler(); 
-         if (substitute && target !== substitute) { 
-             this._logWindow.displaySubstitute(substitute, target); 
-             return substitute; 
-         } 
-     } 
-     return target; 
- }; 
-   
- /** 
-  * 检查目标是否死亡 
-  * @param target 目标对象 
-  * @returns {boolean} 
-  */ 
- BattleManager.checkSubstitute = function (target) { 
-     //目标已经死了&& 行动指令必中状态 
-     return target.isDying() && !this._action.isCertainHit(); 
- }; 
-   
- /** 
-  * 强制行动指令 
-  * @returns {boolean} 
-  */ 
- BattleManager.isActionForced = function () { 
-     return !!this._actionForcedBattler; 
- }; 
-   
- /** 
-  * 强制行动指令 
-  * @param battler 
-  */ 
- BattleManager.forceAction = function (battler) { 
-     //强制行动的角色 
-     this._actionForcedBattler = battler; 
-     var index = this._actionBattlers.indexOf(battler); 
-     if (index >= 0) { 
-         this._actionBattlers.splice(index, 1); 
-     } 
- }; 
-   
- /** 
-  * 执行强制行动指令 
-  */ 
- BattleManager.processForcedAction = function () { 
-     //强制行动角色 
-     if (this._actionForcedBattler) { 
-         //回合强制 
-         this._turnForced = true; 
-         //当前战斗角色为强制战斗角色 
-         this._subject = this._actionForcedBattler; 
-         //强制战斗角色(临时变量)变为空 
-         this._actionForcedBattler = null; 
-         //开始行动指令 
-         this.startAction(); 
-         //一处当前行动指令 
-         this._subject.removeCurrentAction(); 
-     } 
- }; 
-   
- /** 
-  * 中止 
-  */ 
- BattleManager.abort = function () { 
-     //当前战斗阶段为中止 
-     this._phase = 'aborting'; 
- }; 
-   
- /** 
-  * 检查战斗结束 
-  * @returns {boolean} 
-  */ 
- BattleManager.checkBattleEnd = function () { 
-     if (this._phase) { 
-         //战斗中止 
-         if (this.checkAbort()) { 
-             return true; 
-             //己方队伍成员全部阵亡 
-         } else if ($gameParty.isAllDead()) { 
-             //执行战斗失败流程 
-             this.processDefeat(); 
-             return true; 
-             //敌方队伍成员全部阵亡 
-         } else if ($gameTroop.isAllDead()) { 
-             //执行战斗胜利流程 
-             this.processVictory(); 
-             return true; 
-         } 
-     } 
-     return false; 
- }; 
-   
- /** 
-  * 检查中止状态 
-  * @returns {boolean} 
-  */ 
- BattleManager.checkAbort = function () { 
-     //己方队伍为空||中止状态== true 
-     if ($gameParty.isEmpty() || this.isAborting()) { 
-         //播放逃跑音效 
-         SoundManager.playEscape(); 
-         //逃跑成功!!! 
-         this._escaped = true; 
-         //中止成功!!! 
-         this.processAbort(); 
-     } 
-     return false; 
- }; 
-   
- /** 
-  * 执行战斗胜利流程 
-  */ 
- BattleManager.processVictory = function () { 
-     //移除己方队伍战斗状态 
-     $gameParty.removeBattleStates(); 
-     //调用己方队伍在胜利的时候通知 
-     $gameParty.performVictory(); 
-     //播放胜利音效 
-     this.playVictoryMe(); 
-     //回放背景音乐和背景音效 
-     this.replayBgmAndBgs(); 
-     //生成奖励 
-     this.makeRewards(); 
-     //显示战斗成功消息 
-     this.displayVictoryMessage(); 
-     //显示奖励物品信息 
-     this.displayRewards(); 
-     //增加奖励物品信息 
-     this.gainRewards(); 
-     //结束战斗 
-     this.endBattle(0); 
- }; 
-   
- /** 
-  * 执行逃跑流程 
-  * @returns {boolean} 
-  */ 
- BattleManager.processEscape = function () { 
-     //己方队伍逃跑前置通知 
-     $gameParty.performEscape(); 
-     //播放逃跑音效 
-     SoundManager.playEscape(); 
-     //逃跑成功计算(先发制人逃跑一定成功) 
-     var success = this._preemptive ? true : (Math.random() < this._escapeRatio); 
-     if (success) { 
-         //显示逃跑成功文本信息 
-         this.displayEscapeSuccessMessage(); 
-         //逃跑成功状态 == ture 
-         this._escaped = true; 
-         //执行中止流程 
-         this.processAbort(); 
-     } else { 
-         //显示逃跑失败的文本信息 
-         this.displayEscapeFailureMessage(); 
-         //逃跑成功率+0.1 
-         this._escapeRatio += 0.1; 
-         //清空指令信息 
-         $gameParty.clearActions(); 
-         //开始下一回合 
-         this.startTurn(); 
-     } 
-     return success; 
- }; 
-   
- /** 
-  * 执行中止流程 
-  */ 
- BattleManager.processAbort = function () { 
-     $gameParty.removeBattleStates(); 
-     this.replayBgmAndBgs(); 
-     this.endBattle(1); 
- }; 
-   
- /** 
-  * 执行战败流程 
-  */ 
- BattleManager.processDefeat = function () { 
-     //显示战败信息 
-     this.displayDefeatMessage(); 
-     //播放战败音效 
-     this.playDefeatMe(); 
-     //是否可以失败 
-     if (this._canLose) { 
-         //重放背景音乐和背景音效 
-         this.replayBgmAndBgs(); 
-     } else { 
-         //停止背景音乐 
-         AudioManager.stopBgm(); 
-     } 
-     //结束战斗 
-     this.endBattle(2); 
- }; 
-   
- /** 
-  * 战斗结束 
-  * @param result 
-  */ 
- BattleManager.endBattle = function (result) { 
-     this._phase = 'battleEnd'; 
-     if (this._eventCallback) { 
-         //战斗事件回调 
-         this._eventCallback(result); 
-     } 
-     if (result === 0) { 
-         //战斗成功 
-         $gameSystem.onBattleWin(); 
-     } else if (this._escaped) { 
-         //战斗失败,战斗逃跑 
-         $gameSystem.onBattleEscape(); 
-     } 
- }; 
-   
- /** 
-  * 更新战斗结束 
-  */ 
- BattleManager.updateBattleEnd = function () { 
-     //测试战斗 
-     if (this.isBattleTest()) { 
-         //停止播放背景音乐 
-         AudioManager.stopBgm(); 
-         //关闭场景 
-         SceneManager.exit(); 
-         //非逃跑成功和己方队伍并非全部阵亡 
-     } else if (!this._escaped && $gameParty.isAllDead()){ 
-         //允许失败 
-         if (this._canLose) { 
-             //救活战斗成员信息 
-             $gameParty.reviveBattleMembers(); 
-             //场景压出栈 
-             SceneManager.pop(); 
-         } else { 
-             //跳转战斗失败 
-             SceneManager.goto(Scene_Gameover); 
-         } 
-     } else { 
-         SceneManager.pop(); 
-     } 
-     this._phase = null; 
- }; 
-   
- /** 
-  * 生成战斗奖励 
-  */ 
- BattleManager.makeRewards = function () { 
-     this._rewards = {}; 
-     //敌军队伍的身上金币总数 
-     this._rewards.gold = $gameTroop.goldTotal(); 
-     //敌军队伍的总经验数 
-     this._rewards.exp = $gameTroop.expTotal(); 
-     //根据敌军的物品生成掉落物品 
-     this._rewards.items = $gameTroop.makeDropItems(); 
- }; 
-   
- /** 
-  * 显示战斗胜利的文本 
-  */ 
- BattleManager.displayVictoryMessage = function () { 
-     $gameMessage.add(TextManager.victory.format($gameParty.name())); 
- }; 
-   
- /** 
-  * 显示战败的文本 
-  */ 
- BattleManager.displayDefeatMessage = function () { 
-     $gameMessage.add(TextManager.defeat.format($gameParty.name())); 
- }; 
-   
- /** 
-  * 显示逃跑成功的文本 
-  */ 
- BattleManager.displayEscapeSuccessMessage = function () { 
-     $gameMessage.add(TextManager.escapeStart.format($gameParty.name())); 
- }; 
-   
- /** 
-  * 显示逃跑失败的文本 
-  */ 
- BattleManager.displayEscapeFailureMessage = function () { 
-     $gameMessage.add(TextManager.escapeStart.format($gameParty.name())); 
-     $gameMessage.add('\\.' + TextManager.escapeFailure); 
- }; 
-   
- /** 
-  * 显示奖励物品 
-  */ 
- BattleManager.displayRewards = function () { 
-     //显示经验 
-     this.displayExp(); 
-     //显示金币 
-     this.displayGold(); 
-     //显示掉落物品 
-     this.displayDropItems(); 
- }; 
-   
- /** 
-  * 显示经验 
-  */ 
- BattleManager.displayExp = function () { 
-     var exp = this._rewards.exp; 
-     if (exp > 0) { 
-         var text = TextManager.obtainExp.format(exp, TextManager.exp); 
-         $gameMessage.add('\\.' + text); 
-     } 
- }; 
-   
- /** 
-  * 显示金币 
-  */ 
- BattleManager.displayGold = function () { 
-     var gold = this._rewards.gold; 
-     if (gold > 0) { 
-         $gameMessage.add('\\.' + TextManager.obtainGold.format(gold)); 
-     } 
- }; 
-   
- /** 
-  * 显示掉落物品 
-  */ 
- BattleManager.displayDropItems = function () { 
-     var items = this._rewards.items; 
-     if (items.length > 0) { 
-         $gameMessage.newPage(); 
-         items.forEach(function (item) { 
-             $gameMessage.add(TextManager.obtainItem.format(item.name)); 
-         }); 
-     } 
- }; 
-   
- /** 
-  * 增加奖励 
-  */ 
- BattleManager.gainRewards = function () { 
-     //增加经验 
-     this.gainExp(); 
-     //增加金币 
-     this.gainGold(); 
-     //增加掉落物品 
-     this.gainDropItems(); 
- }; 
-   
- /** 
-  * 增加经验 
-  */ 
- BattleManager.gainExp = function () { 
-     var exp = this._rewards.exp; 
-     //己方队伍成员增加经验 
-     $gameParty.allMembers().forEach(function (actor) { 
-         actor.gainExp(exp); 
-     }); 
- }; 
-   
- /** 
-  * 增加金币 
-  */ 
- BattleManager.gainGold = function () { 
-     //己方队伍增加金币 
-     $gameParty.gainGold(this._rewards.gold); 
- }; 
-   
- /** 
-  * 增加掉落物品 
-  */ 
- BattleManager.gainDropItems = function () { 
-     var items = this._rewards.items; 
-     //己方队伍增加物品 
-     items.forEach(function (item) { 
-         $gameParty.gainItem(item, 1); 
-     }); 
- };