Project1
标题: 想让暗雷战斗失败后,不会进入游戏失败页面 [打印本页]
作者: 鑫晴 时间: 2017-5-30 12:47
标题: 想让暗雷战斗失败后,不会进入游戏失败页面
本帖最后由 鑫晴 于 2017-5-30 15:46 编辑
默认情况下,在暗雷战斗中,如果队伍成员在战斗中都附加了“战斗不能”的状态,游戏结束。
我想要角色能在战斗失败后保留“战斗不能”状态,即使团灭也不会结束游戏,
而是以“战斗不能”状态和HP=1,返回地图场景。
换了种解决方式,算是解决了
团灭后调用公共事件
$gameTemp.reserveCommonEvent(1);
但有个新的问题出现了。。。
我想在这个时机调用公共事件(失败信息关闭后,战斗场景还存在时)
矛盾历史
BattleManager.updateBattleEnd = function() {
if (this.isBattleTest()) {
AudioManager.stopBgm();
SceneManager.exit();
} else if (!this._escaped && $gameParty.isAllDead()) {
if (this._canLose) {
$gameParty.reviveBattleMembers();
SceneManager.pop();
} else {
this._canLose = true;
this.endBattle(2);
$gameParty.reviveBattleMembers();
$gameTemp.reserveCommonEvent(1); /* 调用公共事件 */
SceneManager.pop(); /*SceneManager.goto(Scene_Map); */
/*SceneManager.goto(Scene_Gameover);*/
}
} else {
SceneManager.pop();
}
this._phase = null;
};
BattleManager.updateBattleEnd = function() {
if (this.isBattleTest()) {
AudioManager.stopBgm();
SceneManager.exit();
} else if (!this._escaped && $gameParty.isAllDead()) {
if (this._canLose) {
$gameParty.reviveBattleMembers();
SceneManager.pop();
} else {
this._canLose = true;
this.endBattle(2);
$gameParty.reviveBattleMembers();
$gameTemp.reserveCommonEvent(1); /* 调用公共事件 */
SceneManager.pop(); /*SceneManager.goto(Scene_Map); */
/*SceneManager.goto(Scene_Gameover);*/
}
} else {
SceneManager.pop();
}
this._phase = null;
};
想要的效果:
暗雷战斗失败后,不会进入“GameOver”页面,而是像设置了“允许失败”的战斗一样,战斗结束后返回战斗前的位置。“战斗不能”的状态也不会因为战斗结束而消失。(默认“允许失败”的战斗结束后没有“战斗不能”的状态)。
在RMXP中,可以这样实现想要的效果
# 游戏结束的情况下
if $game_temp.gameover
$game_temp.battle_can_lose = true
battle_end(1)
$game_temp.gameover = false
$game_system.bgm_play(nil)
$game_system.bgs_play(nil)
return
end
# 游戏结束的情况下
if $game_temp.gameover
$game_temp.battle_can_lose = true
battle_end(1)
$game_temp.gameover = false
$game_system.bgm_play(nil)
$game_system.bgs_play(nil)
return
end
作者: sonicdonggua 时间: 2017-5-30 13:44
一个比较菜鸟的办法,在需要canlose的时候,地图脚本编辑器代码BattleManager._canLose = true这样的话战斗失败直接退出战斗继续剧情。需要的时候BattleManager._canLose = false来取消效果。
作者: 铅笔描绘的思念 时间: 2017-5-30 14:18
本帖最后由 铅笔描绘的思念 于 2017-5-30 14:44 编辑
isAllDead()只是一个有返回值的方法罢了。。所以 $gameParty.isAllDead = false; 肯定出错啊。。
我的想法是if…… then break 就好
或者在给isAllDead()加个访问器 但isAllDead()其实也是返回别的方法的值罢了 所以麻烦又没必要
break错了并没有什么区别
类似canlose的话
if (条件) {SceneManager.pop();}
if (条件) {SceneManager.pop();}
但pop到上个scene的话 因为scene_base有checkGameover所以还要
Scene_Base.prototype.checkGameover = function() {
if ($gameParty.isAllDead()&&条件) {
SceneManager.goto(Scene_Gameover);
}
};
Scene_Base.prototype.checkGameover = function() {
if ($gameParty.isAllDead()&&条件) {
SceneManager.goto(Scene_Gameover);
}
};
类似这样的可以用一个开关来加条件
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |