出国前のツクール覚え書き

年も明け期末試験も終わり、ツクールに戻ろうとしたところで戦闘中の動作を把握しきれていないと思ったのでここでまとめておきます。
一か月間のホームステイの間ツクールに触れていなくても理解できる程度に詳しく書こうと思います。
ついでに用語の整理も少々。



1.編成
本作では戦闘中にコマンドを選択して行動できるメンバー(以後前衛)だけでなく行動できず後ろで待機しているメンバー(以後後衛)もいる。
パーティー全員併せて11人もいるので前衛4人後衛7人の編成で、戦闘中に前衛と後衛のメンバーを自由に編成できる(SceneFormation)。
編成画面ではステータスや状態異常も見られるので状況確認に便利。
指定したスイッチ(私は20番)がONでないと編成コマンドが使用できないので最初にONにしておくこと。
なお、ツクール公式ツールのウィンドウビルダーでウィンドウの改変をした場合、編成ウィンドウには反映されない模様。



2.援護行動
戦闘中に前衛のTPの合計が一定(210)以上になるとターン終了時に後衛から援護が飛んでくる。
前衛だけでなく後衛も戦闘に参加しているわちゃわちゃ感が欲しかった。
戦闘画面左にゲージを追加してTPの合計を見やすく。
ゲージには「連係値総和」と書いてあり用語を「TP」から「連係値」に変える必要があるが、「HP」「MP」も変更してレイアウト画像を作り直さなければいけないのでしばらく保留。
今はこんな感じ
キャプチャ2.PNG
キャプチャ2.1.PNG

以下やり方一例
必要なプラグインは
  • MPP_ChoiceEx(選択肢拡張)
  • BattlePallarelEvent(戦闘時に並列処理イベントを可能に)
  • TimingInvokeCommon(場所移動/戦闘開始/終了時にコモンイベント)
  • PicturePriorityCustomize(ピクチャの表示優先度)
  • TMTpReset(戦闘開始時のTPを一定に)
  • DTextPicture(動的文字列ピクチャ)
の6つ。
  1. プラグイン設定
    PicturePriorityCustomizeのの下層ピクチャ番号のパラメータを5にする。
    これでピクチャ番号5以下のピクチャはアニメーションの下に表示されるようになる。
    TMTpResetで初期TPを設定する。
    MPP_ChoiceExは特に設定なし。

  2. 戦闘開始時に実行するコモンイベント(TimingInvokeCommonで指定した番号に書く)
    枠、緑ゲージ、赤ゲージ3種の画像を表示させる。
    緑ゲージは拡大率0%×0%透明度255、赤ゲージは拡大率0%×0%透明度0で。
    座標は両色ともに枠画像の一番下にくるように。
    DTextPictureのヘルプに則ってTPの合計を代入した変数を表示(リアルタイムで表示)。
    (DTextPicture.jsに追記が必要だったようなそうでないような)
    戦闘中に常時並列処理するコモンイベントを実行。

  3. 戦闘中に常時実行するコモンイベント(トリガー並列処理)
    1つ目は前衛のTPを合計するイベント。
    TPの取得はスクリプトでないとできない。
    画像にある処理はちょっと無駄が多いけど動いているのでよしとしている。
    キャプチャ2.2.PNG
    2つ目はゲージ描画をするイベント。
    画像表示に変数を使うにはスクリプトを使うしかないので
    $gameScreen.movePicture(番号,原点,x座標,y座標,幅の拡大率,高さの拡大率,
    不透明度,合成方法,移動時間)
    ってやる。
    ゲージを増減させるには拡大率とTP合計値を対応させて
    三角形の斜辺にゲージの座標が合えばいいので、
    画像の座標が左上基準になることに注意して
    (TP400時のゲージ座標)-(TP合計値)*(ゲージ画像の縦(or横)のピクセル数)/400
    で座標を指定して、拡大率を
    (TP合計値)/4
    で指定する(TP合計が400のとき拡大率100%にするため4で割る)。
    正直三角形よりも長方形、なんなら横にして座標の位置調整を楽にしたかった。
    キャプチャ2.4.PNG
    3つ目もあるけど援護行動には関係ないので後で。

  4. 援護行動イベント条件分岐
    TP合計≧210の場合は
    選択肢の表示
    各選択肢の中身は
    if(v[31] != 1 && v[32] != 1 && v[33] != 1 && v[34] != 1)\n[1]
    で、v[31]~v[34]には編成1~4番目アクターナンバーが入る。
    つまりアクターID1のキャラが前衛にいなければ選択肢に名前が入る。
    MPP_ChoiceExでは選択肢表示を連ねることで6つ以上の選択肢ができる。
    選択肢表示で「~のとき」の直後に注釈で
    「選択肢ヘルプ
     ジャケレべのすごいやつください」
    と書くと、選択肢にカーソルがあったときにこうなる。
    これで援護行動の説明を表示することができる。
    キャプチャ2.5.PNG

  5. 援護行動の条件付け
    全ての敵グループに
    ターン終了時敵のHP<=100の条件で援護行動イベントを実行する。
    プラグインで実装できればしたい。
  6. 援護スキルの発動
    戦闘行動の強制。

以上やり方一例



3.連係攻撃
援護行動とは別(重要)。
敵に連続して攻撃するとダメージが上昇していく。
AttackChainのみで可能。
1チェインごとに10%ずつ、最大で500%まで上昇。
援護行動と合わせてうまいこと生かしてもらう。



4.仲良し効果(仮名)と合体技
まずは仲良し効果から。
特定の2人が戦闘に出ていると能力値が10%上昇するバフステート。
戦闘中に並列処理するイベントで

if($gameVariables.value(31) == 1 || $gameVariables.value(32) == 1 || $gameVariables.value(33) == 1 || $gameVariables.value(34) == 1){

$gameVariables.setValue(52,1)

}else{

$gameVariables.setValue(52,0)

}

if($gameVariables.value(31) == 2 || $gameVariables.value(32) == 2 || $gameVariables.value(33) == 2 || $gameVariables.value(34) == 2){

$gameVariables.setValue(52,$gameVariables.value(52)*1)

}else{

$gameVariables.setValue(52,$gameVariables.value(52)*0)

}


を書く。

アクターID1のキャラが前衛メンバーにいる場合は変数52番に1、そうでなければは0を代入。

アクターID2のキャラが前衛メンバーにいる場合は変数52番に1、そうでなければは0をかける。

つまり変数52番が1ならアクターID1と2の2人が揃った状態になる。

あとは条件分岐で52番が1か0かで仲良し効果のステートを付けるか外すかを行うと仲良し効果の完成。


次に合体技を。

最初はJay_Dualtechs.jsを使おうとしたけどなんやかんやで実装できた。

変数52番が1のときさらに条件分岐で

アクターID1と2のTPをそれぞれスクリプトで取得し、どちらも100なら合体技のスイッチをON。

合体技スイッチは各ペアごとにつくること。

ここでプラグイン、FTKR_SkillExpansionの出番。

スキルの使用を拡張し、使用条件を設定するなどできる。

のメモ欄に

<Set Sep Required>

Condition: s[21]

</Set Sep Required>

 と書くとスイッチ21番(必殺技スイッチ)がONの時に使用可能になる。

あとは2人の能力値を交えた計算式を変数に代入して、ダメージ計算式に変数を書くだけ。

なお、このままの設定では片方が合体技を使ってももう片方は行動できる。
正直この問題を解決するにはスクリプト弄る技術が必要なので私は諦めている。
そのため、合体技の優先度を最大(2000、防御は1500)にして、バフを考慮しても全キャラの敏捷値が500以上離れないようにする。
絶対先制で合体技を発動した後、使用後にコモンイベントで2人にそのターンだけ行動不能ステートを付与することで部分的に改善。
それに伴って、レベル上限を50にした。
スキルの優先度はFTKR_SkillExpansionで設定できなくはないものの、ゲーム開始時に実行するイベントに全スキルについてスクリプトコマンドを実行しなければいけないので面倒。
長編RPGで超インフレゲーなら頑張ってスクリプトコマンドを書くしかない。
また、ActionPriorityを導入してメモ欄での記述にするとFTKR_SkillExpansionと競合して合体技が発動しない。
ついでにカットインも入れたかったので、BeforeCommonも導入。
スキルのメモ欄に
<発動前コモン:24>
と書くと、24番のコモンイベントが発動前に実行される。



5.その他色々
運の値の仕様をTMLuckFixで変更。
下記のトピックでちょっと気になったので試しに導入してみた。
ツクールデフォルトの運の仕様ではステート付与率は次の式で与えられる。
Math.max(1.0 + (a.luk - b.luk) * 0.001, 0.0)
つまり相手との運の差が10ある時、ステート付与率は1%上がる。
この仕様だとあまりにも影響が小さかったのでプラグインで10倍の補正をかけて、相手との運の差が10ある時、ステート付与率は10%上がるようにした。
他にも運をダメージ/回復計算式に入れるなど試行錯誤中。

バフデバフステートの仕様変更
デフォルトでは1段階の強化で25%、2段階で50%能力上昇する。
デバフでも変化量は同じ。
ExtendBuffAndDebuffでこれを変更。
パーティ人数が多いのにボス1体を相手にするとデバフの影響が強すぎるので
1段階当たりの変化量を12.5%にし、バフは2段階までデバフは1段階まで重ね掛け可に。

ダメージSEの変更
弱点/耐性属性の攻撃時に通常とは異なるSEを再生できる(CustomizeDamegeSe)。

テンプレートイベントプラグイン
TemplateEventが便利そうだった。
以下場所移動を例に簡易的使い方。
  1. テンプレート専用マップにEVxxxの名前でイベントを作る(xxxは数字)
    プラグインパラメータにテンプレート専用マップのIDを設定する
    TE固有イベント呼び出し とプラグインコマンドに書くことで、テンプレを呼び出したイベントにある処理を実行できる
    ex)
    SEの演奏
    プラグインコマンド TE固有イベント呼び出し
  2. テンプレートを呼び出すイベントを作る
    イベントのメモ欄に
    <TE:xxx>
    と記述し、テンプレ外の処理を書く
    イベントの画像はテンプレートのものが優先される
    ex)
    場所移動
以上簡易的使い方


とりあえず今はこんな感じ
2/7~3/9までアイルランドに行ってくるのでその間に忘れていないことを祈ります。
サークル冬合宿追いコン?いやぁ何のことかわかりかねます

この記事へのコメント