ページ 11

【解決済み】手動で先制、不意打ち判定

Posted: 2017年8月31日(木) 21:07
by カトウ
トピックお借りします。
戦闘の処理、から始まるイベント戦等で
強制的に先制攻撃、もしくは不意打ちにするにはどうすればよいでしょうか?
スクリプトを調べましたが方法を見つけることができず、お力をお貸しいただければ幸いです。

Re: 手動で先制、不意打ち判定

Posted: 2017年8月31日(木) 21:20
by まっつUP
フロア様
お世話になります。
こちらのトピックで公開しているプラグインが有効だと思います。
http://tm.yumineko.com/viewtopic.php?f= ... 142#p12142

Re: 手動で先制、不意打ち判定

Posted: 2017年8月31日(木) 21:27
by しぐれん
不意打ち・先制の判定は以下の処理でチェックされています。

コード: 全て選択

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;
};

var battlers =[]とあるのは、これから行動を行うアクター・エネミーの一覧を格納する配列です。
不意打ちフラグがOFFなら、アクター(&gameParty.members())を追加。
先制フラグがOFFならエネミー($gameTroop.members())を追加となっています。
おそらく、0ターン目のバトルイベントにスクリプトでBattleManager._surprise=treuとでも書けば、不意打ちが発生すると思います。
戦闘開始時に特定のコモンイベントを呼び出すようなプラグインを導入し、そのプラグインで上記のフラグを変更すればよいでしょう。

Re: 手動で先制、不意打ち判定

Posted: 2017年8月31日(木) 23:17
by カトウ
まっつUP様、しぐれん様迅速なご回答をありがとうございました。
教えて頂きました方法を試したところ、無事に実行することができました。
MVに移行してからコードが全く読み取れなくなってしまい、苦労していたので
本当に助かりました。
こちらのトピックは解決済みとさせていただきます。