戦闘行動の強制で、敵の思考ルーチンからランダムで1つ選ぶスクリプト、もしくはプラグインコマンド
Posted: 2017年4月08日(土) 20:03
【問題】
エディタのイベント「戦闘行動の強制」は便利ですが、スキルをたくさん設定したい場合、
一つ一つ分岐をつくらないといけないので、凝った追加行動システムをつくりたい場合、めんどうです。
【質問】
そこで、タイトルのように、通常の敵1回の行動をスクリプトで強制できれば、
数時間にも及ぶエディタの編集作業が短縮化できるのですが、どなたかご存じないでしょうか?
ご存じであれば、味方版(自動戦闘ON時の行動でよい)も教えていただけるとありがたいです。
【補足】
なお、敵や味方の行動パターンは、ターン開始時にすでに決まってしまっている仕様のため、
戦闘行動の強制は、(a)敵が行動可能であり、かつ、(b)行動を再抽選しないと、できなさそうです。
(※20170417更新。行動完了していても、できるようです。トリアコンタンさんより教えてもらいました。感謝!)
ですが、(a)敵が行動可能かどうか調べるスクリプトは、
で、(b)敵の行動を再抽選するスクリプトは、
で知っているので、これらを実行した後に、そのスクリプトを実行すれば、
エラーなくできるのではないかと考えています。
(考えてみれば、これだけエラーになりやすいものはスクリプトより、プラグインコマンド化するほうがいいのかも…)
編集:コードタグは、<code>~</code>ではなく、[こーど]~[/こーど](こーどはcode)だったのですね。修正しました。
エディタのイベント「戦闘行動の強制」は便利ですが、スキルをたくさん設定したい場合、
一つ一つ分岐をつくらないといけないので、凝った追加行動システムをつくりたい場合、めんどうです。
【質問】
そこで、タイトルのように、通常の敵1回の行動をスクリプトで強制できれば、
数時間にも及ぶエディタの編集作業が短縮化できるのですが、どなたかご存じないでしょうか?
ご存じであれば、味方版(自動戦闘ON時の行動でよい)も教えていただけるとありがたいです。
【補足】
なお、敵や味方の行動パターンは、ターン開始時にすでに決まってしまっている仕様のため、
戦闘行動の強制は、(a)敵が行動可能であり、かつ、(b)行動を再抽選しないと、できなさそうです。
(※20170417更新。行動完了していても、できるようです。トリアコンタンさんより教えてもらいました。感謝!)
ですが、(a)敵が行動可能かどうか調べるスクリプトは、
コード: 全て選択
// 敵インデックス#1が行動可能ならスイッチ1031番をON、OFFなら何らかの行動制約のあるステートにかかっている、というようにします。デフォルトはtrue
$gameSwitches.setValue(1031, true);
// 敵インデックス#1が行動可能かは、以下でとれます。
if($gameTroop != null && $gameTroop.aliveMembers()!= null && $gameTroop.members().length >= 1){
// 敵インデックス#1に、行動制約のあるステートが一つでも付与されていればtrueだよ。
var _isRestricted = $gameTroop.members()[0].restriction();
// 行動可能かを取りたいから、「!」で反転してるよ
$gameSwitches.setValue(1031, !_isRestricted);
}
コード: 全て選択
// ターン開始時に決まってしまっている敵の行動やターゲットを、再抽選します。
// ただし、isWaiting()で行動終了した敵を除外しないと、もう一度行動できる様になります。
// ですので、敵のスキル使用後に呼び出すと、永続的に行動してしまうので、注意してください。
if($gameTroop != null && $gameTroop.members() != null){
$gameTroop.members().forEach(function(enemy){
if (enemy.isWaiting()){
enemy.makeActions()
}
});
}
エラーなくできるのではないかと考えています。
(考えてみれば、これだけエラーになりやすいものはスクリプトより、プラグインコマンド化するほうがいいのかも…)
編集:コードタグは、<code>~</code>ではなく、[こーど]~[/こーど](こーどはcode)だったのですね。修正しました。