戦闘行動の強制 / ツクールMZスクリプトリファレンスwiki
ツクールMZで戦闘行動の強制をスクリプトで行うなら以下の通りです。
this.iterateBattler(敵キャラかアクターか, 対象ID, battler => {
if (!battler.isDeathStateAffected()) {
battler.forceAction(スキルID, 対象)
BattleManager.forceAction(battler)
this.setWaitMode('action')
}
})
敵キャラかアクターかは0で敵キャラ、1でアクターを対象にします。
対象については0で指定IDが1となり、以降番号順になります。
負の値で敵か味方指定した方の全体が対象となります。
スキルIDはデフォルトで1で攻撃、2で防御、以下番号順に対応しています。
対象は値が-2でラストターゲット、-1でランダム、0から1番目のキャラとなります。
サンプルコード(ID2の敵にスキルIDが9のスキル(デフォルトでファイア)をハロルドを対象にした戦闘行動を強制)
this.iterateBattler(0, 1, battler => {
if (!battler.isDeathStateAffected()) {
battler.forceAction(9, 0)
BattleManager.forceAction(battler)
this.setWaitMode('action')
}
})
コード解説
1行目:this.iterateBattler(敵キャラかアクターか, 対象ID, battler => {
"iterateBattler"メソッドは対象が敵か味方かを判別し、対象IDの情報を取得しています。
2行目:if (!battler.isDeathStateAffected()) {
この行では指定したキャラクターが戦闘不能でないかどうかを判別しています。
戦闘不能だった場合は戦闘行動の強制が実行されません。
"battler"には対象のバトラーの情報が入っており、"isDeathStateAffected"で戦闘不能ステートでないかどうかを確かめています。
必ず生きているバトラーを対象としている時は省略可能です。
3行目:battler.forceAction(10, 0)
この行では戦闘行動の強制の設定を行っています。
パラメータで指定したスキルを対象に実行するよう実際のアクションに反映させています。
4行目:BattleManager.forceAction(battler)
この行で実際に戦闘行動の強制を操作しています。
"BattleManager.forceAction"メソッドでは戦闘行動の強制をさせるアクターを設定している他、スクリプトを実行するターンに元々設定していた行動が実行されないように指定バトラーの行動をキャンセルさせています。
4行目:this.setWaitMode('action')
戦闘行動が終了するまでウェイトするための記述です。
この記述がないとこの後にイベントが設定されていた場合、これより上にあるスクリプトが実行されません。
これはウェイトをしないとアニメーションの再生だけではなく、戦闘行動の処理(HPの増減など)も実行されないためです。
イベントでの行動の最後がこの戦闘行動の強制だった場合はこのウェイトは省略可能ですが、念のため記述しておいた方が良いでしょう。
オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。