Project1
标题: 再动(额外回合)系统 [打印本页]
作者: 洛林 时间: 2016-11-18 13:20
标题: 再动(额外回合)系统
本帖最后由 洛林 于 2016-11-18 13:20 编辑
再动系统令灵感来自7龙传说。是指一个角色进入额外回合。在这个回合中,你可以输入指令,控制这个角色的行动,且只有这个角色可以行动,敌人和其他角色都不能行动。之后,继续进行正常的回合。
此外,额外回合不计数,也就是说不改变总回合数,也不影响状态持续时间。
一开始以为很麻烦,结果发现很简单……
首先,标记额外回合和行动者:
BattleManager.IsExtraTurn = function() {
return this._extra;
};
BattleManager.ExtraActor = function() {
return this._extraActor;
};
BattleManager.IsExtraTurn = function() {
return this._extra;
};
BattleManager.ExtraActor = function() {
return this._extraActor;
};
额外回合中输入指令:
BattleManager.startInput = function() {
this._phase = 'input';
if (this.IsExtraTurn()) {
this._extraActor.makeActions();
this.clearActor();
return;
}
$gameParty.makeActions();
$gameTroop.makeActions();
this.clearActor();
if (this._surprise || !$gameParty.canInput()) {
this.startTurn();
}
};
BattleManager.startInput = function() {
this._phase = 'input';
if (this.IsExtraTurn()) {
this._extraActor.makeActions();
this.clearActor();
return;
}
$gameParty.makeActions();
$gameTroop.makeActions();
this.clearActor();
if (this._surprise || !$gameParty.canInput()) {
this.startTurn();
}
};
要让只有这一个单位可以行动,让GameParty只有这个角色就可以了
Game_Party.prototype.allMembers = function() {
if (BattleManager.IsExtraTurn()) {
return [BattleManager.ExtraActor()];
}
return this._actors.map(function(id) {
return $gameActors.actor(id);
});
};
Game_Party.prototype.allMembers = function() {
if (BattleManager.IsExtraTurn()) {
return [BattleManager.ExtraActor()];
}
return this._actors.map(function(id) {
return $gameActors.actor(id);
});
};
回到正常回合
BattleManager.endTurn = function() {
if (this.IsExtraTurn()) {
this._extra = false;
this.startTurn();
return;
}
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);
};
BattleManager.endTurn = function() {
if (this.IsExtraTurn()) {
this._extra = false;
this.startTurn();
return;
}
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);
};
接口:
Game_BattlerBase.prototype.TakeExtraTurn = function() {
BattleManager._extra = true;
BattleManager._extraActor = this;
BattleManager.startInput();
};
Game_BattlerBase.prototype.TakeExtraTurn = function() {
BattleManager._extra = true;
BattleManager._extraActor = this;
BattleManager.startInput();
};
使用时用 Actor.TakeExtraTurn() 即可。
最后,应该和其他的和战斗过程有关的插件是不兼容的。
作者: 小叮鈴 时间: 2016-11-18 13:32
內建不就有一個額外行動階段了.......
作者: 洛林 时间: 2016-11-18 13:35
没有啊,哪有额外行动阶段
作者: 枫叶的北方 时间: 2016-11-18 18:07
可能是特性里面的额外动作?但是我一直不懂那个是怎么算的,有的时候是平A有的时候是防御
作者: 洛林 时间: 2016-11-21 12:57
那个完全不符合要求啊……
作者: 574656549 时间: 2020-8-3 21:27
提示: 作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |