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

返信する
カトウ
記事: 8
登録日時: 2017年8月31日(木) 20:41

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

投稿記事 by カトウ »

トピックお借りします。
戦闘の処理、から始まるイベント戦等で
強制的に先制攻撃、もしくは不意打ちにするにはどうすればよいでしょうか?
スクリプトを調べましたが方法を見つけることができず、お力をお貸しいただければ幸いです。
最後に編集したユーザー カトウ [ 2017年8月31日(木) 23:17 ], 累計 1 回
アバター
まっつUP
記事: 1149
登録日時: 2016年8月11日(木) 15:38
お住まい: タケノコ王国

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

投稿記事 by まっつUP »

フロア様
お世話になります。
こちらのトピックで公開しているプラグインが有効だと思います。
http://tm.yumineko.com/viewtopic.php?f= ... 142#p12142
RPGで笑顔を・・・

ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup

github
https://github.com/mattuup/RPGMakerMZ
アバター
しぐれん
記事: 975
登録日時: 2017年3月28日(火) 22:22
連絡する:

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

投稿記事 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とでも書けば、不意打ちが発生すると思います。
戦闘開始時に特定のコモンイベントを呼び出すようなプラグインを導入し、そのプラグインで上記のフラグを変更すればよいでしょう。
現在、プラグイン依頼はお休み中です。
カトウ
記事: 8
登録日時: 2017年8月31日(木) 20:41

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

投稿記事 by カトウ »

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

“MV:質問”に戻る