2016年12月11日日曜日

戦闘中アクター召喚スキル、アイテムの作り方

こんばんはー!

ビービーです!

今回の記事は”戦闘中アクター召喚スキル、アイテムの作り方”です!

まずはスキルの画像から

こんな感じですね。
アイテムは
こんな感じになります。

どちらも使用効果からコモンイベントを呼び出す設定になっています。
というわけでコモンイベントの設定はこんな感じになります。
スキルとアイテムの画像から呼び出しているコモンイベントとは違いますが、こちらのミスです。
ご自分で作成される場合は同じものにしてください。

と、ミスがありましたが、まぁこんな感じで召喚完了です。
それと◆スイッチの操作:#0015 パーティ加入の瞬間 = ON←この部分は私の作成したプラグイン
SVアクター参戦演出変更プラグインhttp://bb-entertainment-blog.blogspot.jp/)で必要な物なのでこちらを使用されない場合は必要ありません。

ただこのままでは少しさみしいのでバトルログに「召喚したよ」ということを表示したいと思います。
まぁ文章の表示でもいいのですが、それだと決定ボタンを押さないといけなくなるので、テンポが悪くなるかなぁと思いまして。

スイッチの操作:#0015 パーティ加入の瞬間 = ON
メンバーの入れ替え:ルキウスを加える
スクリプト:if(BattleManager._logWindow !== null){
スクリプト  BattleManager._logWindow.push('addText', 'ルキウスが光よりあらわれた!');
スクリプト  BattleManager._logWindow.push('waitForMovement'); 
スクリプト  BattleManager._logWindow.push('clear');  
スクリプト}


こんな感じになります。
addTextがテキストを表示し、
waitForMovementでキャラクターの移動が終わるまで待ち、
clearでバトルログを消しています。

さてこれでだいぶ召喚っぽくなりましたが、このままだとルキウスがすでにパーティーにいたり、パーティーメンバーがすでに4人いて戦闘に参加できなくても「ルキウスが光よりあらわれた!」と表示されてしまいます。
ですので条件分岐を追加します。

条件分岐:ルキウスがパーティにいる
変数の操作:#0017 召喚者 = $gameParty.inBattle() ? BattleManager._subject._actorId : $gameParty.menuActor()._actorId
MPの増減:{召喚者}, + 50
スクリプト:if(BattleManager._logWindow !== null){
スクリプト  BattleManager._logWindow.push('addText', 'ルキウスはすでに召喚しているので召喚できない!');
スクリプト  BattleManager._logWindow.push('wait'); 
スクリプト  BattleManager._logWindow.push('clear');  
スクリプト}

それ以外のとき
条件分岐:スクリプト:$gameParty.size() == 4
変数の操作:#0017 召喚者 = $gameParty.inBattle() ? BattleManager._subject._actorId : $gameParty.menuActor()._actorId
MPの増減:{召喚者}, + 50
スクリプト:if(BattleManager._logWindow !== null){
スクリプト  BattleManager._logWindow.push('addText', '戦闘参加人数がいっぱいだ!');
スクリプト  BattleManager._logWindow.push('wait'); 
スクリプト  BattleManager._logWindow.push('addText', 'ルキウスを召喚することはできなかった。');
スクリプト  BattleManager._logWindow.push('wait'); 
スクリプト  BattleManager._logWindow.push('clear');  
スクリプト}

それ以外のとき
スイッチの操作:#0015 パーティ加入の瞬間 = ON
メンバーの入れ替え:ルキウスを加える
スクリプト:if(BattleManager._logWindow !== null){
スクリプト  BattleManager._logWindow.push('addText', 'ルキウスが光よりあらわれた!');
スクリプト  BattleManager._logWindow.push('waitForMovement'); 
スクリプト  BattleManager._logWindow.push('clear');  
スクリプト}
スイッチの操作:#0016 召喚アクター加入中 = ON

分岐終了

分岐終了

これでルキウスが戦闘に参加できる時のみルキウスがパーティーに加入するようになります。
バトルログのwaitは文章の長さでウエイトする時間が変わるようです。

ついでに召喚できなかったときはMPが回復するようにしてみました。
ただ一回減ったMPが2秒後ぐらいに回復するので、ビジュアル的には少しおかしくなっていまいます。
ですが私が調べた感じだと、パーティー人数や、特定のアクターがパーティーにいる場合に指定したスキルを使えなくするというプラグインはなかったので、まぁこれで我慢してください。
(いい方法があればコメントなどで教えていただけると助かります。)

それと加入した場合の最後にスイッチの操作を追加しています。
これは”召喚”なので戦闘終了後にもパーティーにいられると困ります。
なので「召喚したよ」ってことをフラグ建てしておきます。
戦闘中のコモンイベントは直接呼び出さない限り並列処理のフラグが立っても実行されないようです。
なのでそれを利用してスイッチで起動する並列処理のコモンイベントを作れば戦闘終了後に自動でパーティーから離脱します。

こんな感じです。
これで召喚キャラがいつまでもついてくるという事は無くなります。

これでだいたい完成です。
ですが、私の場合召喚されたアクターが戦闘不能になった場合
戦闘中でもパーティーから離脱してほしかったので、このようにバトルイベントを作成してみました。
これでターン終了時に召喚されたアクターはパーティーから離脱するようになります。
バトルイベントなので、面倒ですが召喚できるすべての敵グループにコピーしなければいけません。

以上でだいたいできたのではないかと思います。

ただ私もツクール初心者なので間違ていることもあるかと思います。
間違いを発見された方は、コメントやツイッターなどで教えていただけるとありがたいです。

0 件のコメント:

コメントを投稿