[掲示板へもどる]
一括表示

記事No: 21668 [関連記事]
タイトル効果が数ターン後に発動する技能を作りたい
投稿日: 2024/10/10 14:26
投稿者せいら [rOgFLd753(海外)]

[やりたいこと]
基本システム3の使用を前提として、技能の使用とSPの支払いを行ったターンから、数ターン後のターン終了時に効果が発動する技能を作成したいです。
仕様としてはポケモンのわざ「みらいよち」が近いと思います。(ただし敵がグループであることや、数ターン後の発動であることを考慮して対象は敵単体ランダムを想定しています。)
技能の使用キャラはその後のターンも普通に行動できるようにしたいです。可能であれば、技能の使用キャラが発動ターンに戦闘不能でも効果が発動するようにしたいです。(戦闘中のパーティーの入れ替え等は想定していないとします。)

[やってみたこと]
・技能の設定
実際に技能使用ターンに使用・SP消費を行う技能「みらいよち処理(開始)」と、実際に敵に効果を与える技能「みらいよち(発動)」の2つを、ユザーデータベース「0:技能」のデータIDに設定。

・コモンイベントの作成
技能「みらいよち(開始)」技能が使用されると、使用ターンから発動ターンまでターン数をカウントするコモン「みらいよち処理(仮名)」を作成。、「コモン205○[変更可]1ターン終了時処理」に挿入します。

コモン「みらいよち処理(仮名)」の中身は下記のような感じです↓
技能ID37=「みらいよち(開始)」、技能ID38=「みらいよち(発動)」

▼ 魔法発動後はカウント処理へ飛ぶ
■条件分岐(変数): 【1】 V97[開始ターン] が 1 以上
-◇分岐: 【1】 [ V97[開始ターン] が 1 以上 ]の場合↓
|▼ 開始ターンのカウントが発動ターンのカウントと同じになるまで足していく。
|■変数操作: V97[開始ターン] += 1 + 0
|■デバッグ文:開始ターン\v[97]\n経過ターン\v[98]\n発動ターン\v[99]
|●ラベル「発動後」に飛ぶ >>>>>>>>>>>>>>>>>>>>>>>>>
|■
◇分岐終了◇
▼ 技能使用キャラの主人公IDを習得→コマンド処理された技能IDを習得
■変数操作: CSelf10[主人公ID] = 0 + 0
■変数操作: CSelf11[○番目?] = 1 + 0
■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
■DB読込(可変): CSelf12[技能ID] = 可変DB[ ×┣ コマンド処理リスト : CSelf10[主人公ID] : 発動技能 ] (14 : - : 3)
▼ 技能が選択されていた場合処理開始
■条件分岐(変数): 【1】 CSelf12[技能ID] が 37 と同じ
-◇分岐: 【1】 [ CSelf12[技能ID] が 37 と同じ ]の場合↓
|▼ 開始ターンのカウントを1へ、経過ターンと発動ターンの決定
|■変数操作: V97[開始ターン] = 1 + 0
|■変数操作: V98[経過ターン] = 1 〜 3
|■変数操作: V99[発動ターン] = V98[経過ターン] + 1
|■デバッグ文:開始ターン\v[97]\n経過ターン\v[98]\n発動ターン\v[99]
|■
◇分岐終了◇
▼ 技能発動後(V97=1になった後)はこちらへ
●ラベル地点「発動後」 <<<<<<<<<<<<<<<<<<<<<<<<★
▼ 開始ターンのカウント=発動ターンのカウントになったら技が出る
■条件分岐(変数): 【1】 V97[開始ターン] が V99[発動ターン] と同じ
-◇分岐: 【1】 [ V97[開始ターン] が V99[発動ターン] と同じ ]の場合↓
|▼ 技能使用キャラを再度チェック
|■変数操作: CSelf10[主人公ID] = 0 + 0
|■変数操作: CSelf11[○番目?] = 1 + 0
|■回数付きループ [ 可変DB(18,4,0)[現在パーティー人数 数値 ] ]回
| |■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
| |■イベントの挿入[名]: CSelf13[習得している?] = ["▲特殊技能の有無取得"] <コモンEv 25> / CSelf10[主人公ID] / 38:みらいよち(発動)
| |■条件分岐(変数): 【1】 CSelf13[習得している?] が 1 と同じ
| |-◇分岐: 【1】 [ CSelf13[習得している?] が 1 と同じ ]の場合↓
| | |▼ そのターンにすでに使用した発動技能IDを「みらいよち(発動)」に書き換え
| | |■DB読込(可変): CSelf12[技能ID] = 可変DB[ ×┣ コマンド処理リスト : CSelf10[主人公ID] : 発動技能 ] (14 : - : 3)
| | |■変数操作: CSelf12[技能ID] = 38 + 0
| | |▼ 再度技能を発動させる(ここからがわからない。)
| | |■
| |◇分岐終了◇
| |■
|◇ループここまで◇◇
|▼ 発動後ターンカウントリセット
|■変数操作: V97[開始ターン] = 0 + 0
|■変数操作: V98[経過ターン] = 0 + 0
|■変数操作: V99[発動ターン] = 0 + 0
|■デバッグ文:開始ターン\v[97]\n経過ターン\v[98]\n発動ターン\v[99]
|■
◇分岐終了◇


[やってみた結果、どううまくいかないか]
技能使用ターンから、ターン数をカウントして、発動ターンまで数えていく仕組み自体は作れました。(コモン004○回復・ダメージ処理などで、味方のHP・SP・ステータス状態を変更する処理のみであればこれでうまくいきます。)
しかし、「コモン205○[変更可]1ターン終了時処理」のタイミングで技能を発動させるための仕組みがうまく作れませんでした。「みらいよち(開始)」を習得しているかどうか確認→習得キャラのそのターンにすでに使用した別技能IDを「みらいよち(発動)」の技能IDに差し替え→技能使用キャラのみ再行動して技能使用という流れになると思うのですが、使用キャラのみ再行動させて、技能使用処理を行う流れが色々調べても方法がよくわからない状態です。

私がもう少し基本システムの戦闘処理を理解できれば解決するのかなとは思います。力不足で申し訳ないです。
ご助力いただけるとありがたいです。どうぞよろしくお願いいたします。


記事No: 21670 [関連記事]
タイトル補足
投稿日: 2024/10/10 21:51
投稿者せいら [rOgFLri298(海外)]

すみません。改めてテストプレイを行ってみたら、コモンイベントが思った通りの挙動をしませんでした。
・最後から3行目の、■変数操作: V99[発動ターン] = 0 + 0が不要。
・11行目からの、パーティーの直前のコマンドを読み込む処理ができてない。(そもそも上記の処理だと、回数付きループを付けても、最後に行動した技能発動者のコマンドしか読み取れませんでした…。)

初心者なので、複雑な処理をしようとするのはそもそも厳しいのかもしれません。
もう少し慣れてから、システムをいじってみた方がよいでしょうか…。


記事No: 21672 [関連記事]
タイトルRe: 効果が数ターン後に発動する技能を作りたい
投稿日: 2024/10/11 21:50
投稿者YADO [LerLWW459(海外)]

まず
■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
が設定されていますが、戦闘中の処理では、主人公IDを使用しておらず、パーティの並び順がデータIDになっています。
そのため、サンプルゲームのウルファールは主人公ID[12]ですが、パーティの1人目にいるので、戦闘中はデータID[0]になります。

戦闘の処理で使う可変DBの中で、可変DB[10〜13]は、
データID[0〜5]=主人公(パーティの並び順)
データID[10〜16]=敵キャラ(ユーザーDB[13]の項目[0〜6])
と言った仕様になりますが、可変DB[14:×┣ コマンド処理リスト]は異なっており、
まずデータID[0]は一時保存用としてカウンターによる反撃を行う時に使われます。
データID[1]以降はターン内の行動順(敏捷性順)に設定されており、主人公1人、敵キャラ1体の場合で、主人公の方が敏捷性が高い場合は、
データID[1]=0(主人公)
データID[2]=10(敵キャラ)
となり、敵キャラの方が敏捷性が高い場合は、
データID[1]=10
データID[2]=0
となります。
固定では無いので、もしも技能IDがあるかどうかを調べる場合は、ループ処理でデータIDをすらしながらひとつずつ技能IDを調べていく必要があります。

可変DB[14]の設定は、戦闘不能や睡眠などの状態異常になって、技能が発動しなかった場合でも、発動技能の記録が残ります。
そのため、可変DB[14]を調べただけでは、技能を使ったかどうかまでは分かりません。

技能「みらいよち(開始)」をユーザーDB[0:技能]でどのように設定しているのかが分かりませんが、例えば…
項目[2]効果対象=イベント呼出(バトル)
項目[3](あれば)┗イベント番号指定=500215
などと設定し、コモンイベント[215]に
■変数操作: V97[開始ターン] = 1 + 0
■変数操作: V98[経過ターン] = 1 〜 3
■変数操作: V99[発動ターン] = V98[経過ターン] + 1
を設定すれば、可変DB[14]で技能を発動したかどうかを調べなくても、技能を使ったかどうかが分かります。
またこの時に発動者の情報(データID[0〜5])も変数に保存すれば、誰が使用したのかを調べる処理が必要なくなります。

技能「みらいよち(開始)」を複数の主人公が同時に使った場合や同じ主人公が2ターン連続で使った場合は、
現在の設定では技能を使う度に通常変数[97〜99]の値が初期化され、
最初に使った技能「みらいよち(開始)」が無効(SPを無駄に消費)になってしまいます。
また技能「みらいよち(開始)」を毎ターンごとに使った場合は、毎ターンごとに通常変数[97〜99]の値が初期化され、
いつまで経っても技能「みらいよち処理(仮名)」が発動しなくなります。
この仕様のままで良いのか、別の仕様にしたいのかなどによって、設定方法が変わってくるでしょう。

技能の発動は、以下の設定を行えば可能です。
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = 0(発動する主人公のデータID[0〜5]を設定)
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21(ランダムで敵キャラ一体を攻撃)
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 38
■イベントの挿入[名]: ["X[戦]行動実行結果算出"] <コモンEv 164> / 1 / -1:通常処理 / 0:通常(カウンター有り

WoditorEvCOMMAND_START
[250][5,4]<0>(16,1,0,327680,0)("","×┣ コマンド処理リスト","","発動者番号")
[250][5,4]<0>(16,1,2,327680,-21)("","×┣ コマンド処理リスト","","受け側番号")
[250][5,4]<0>(16,1,3,327680,38)("","×┣ コマンド処理リスト","","発動技能")
[300][5,1]<0>(0,3,1,-1,0)("X[戦]行動実行結果算出")
WoditorEvCOMMAND_END

試しにコモンイベント[205:○[変更可]1ターン終了時処理]の0行目に設定して、ターン終了時に発動するかどうかを確認してみると良いでしょう。


記事No: 21675 [関連記事]
タイトルRe: 効果が数ターン後に発動する技能を作りたい
投稿日: 2024/10/13 23:43
投稿者せいら [rOgFLge298(海外)]

YADO様

親切なご回答ありがとうございます。
まだ、問題は解決していませんが、おかげさまでいくらか進捗しましたので一旦ご報告いたします。

> 技能「みらいよち(開始)」をユーザーDB[0:技能]でどのように設定しているのかが分かりませんが、例えば…
> 項目[2]効果対象=イベント呼出(バトル)
> 項目[3](あれば)┗イベント番号指定=500215
> などと設定し、コモンイベント[215]に
> ■変数操作: V97[開始ターン] = 1 + 0
> ■変数操作: V98[経過ターン] = 1 〜 3
> ■変数操作: V99[発動ターン] = V98[経過ターン] + 1
> を設定すれば、可変DB[14]で技能を発動したかどうかを調べなくても、技能を使ったかどうかが分かります。

こちらのアドバイスをもとに、技能「みらいよち(開始)」からイベント呼出バトルで設定するコモンイベント215 [みらいよち処理(開始)]を作成しました↓

コモンイベント215[みらいよち処理(開始)]
■条件分岐(変数): 【1】 V96[みらいよちフラグ] が 1 と同じ
-◇分岐: 【1】 [ V96[みらいよちフラグ] が 1 と同じ ]の場合↓
|■デバッグ文:すでに発動済の場合はメッセージを表示し中断、技能を不発にする
|■イベントの挿入: コモン30:[ ◆[戦闘用]メッセージ表示 ] / 0:流れるメッセージで表示 / 今は使用できない
|■ウェイト:60 フレーム
|■イベント処理中断
|■
◇分岐終了◇
■条件分岐(変数): 【1】 V96[みらいよちフラグ] が 0 と同じ
-◇分岐: 【1】 [ V96[みらいよちフラグ] が 0 と同じ ]の場合↓
|▼ 発動フラグが立てられる場合は、処理開始
|▼ エフェクト等処理
|■イベントの挿入: コモン183:[ X[戦]技能エフェクト描画 ] / 14 / 320 / 200 / 0
|▼ ターンカウント開始準備
|■変数操作: V97[開始ターン] = 1 + 0
|■変数操作: V98[経過ターン] = 3 〜 4
|■変数操作: V99[発動ターン] = V98[経過ターン] + 1
|■変数操作: V96[みらいよちフラグ] = 1 + 0
|■
◇分岐終了◇

新たに変数V96[みらいよちフラグ]を作成し、V96 =1になった場合に、もう一つの【コモンイベント[216みらいよち処理(ターンカウント・発動)]をコモンイベント[205:○[変更可]1ターン終了時処理]で発動するようにします。

[216みらいよち処理(ターンカウント・発動)]
■V96 =1でカウント開始
■条件分岐(変数): 【1】 V96[みらいよちフラグ] が 1 以上
-◇分岐: 【1】 [ V96[みらいよちフラグ] が 1 以上 ]の場合↓
|■変数操作: V97[開始ターン] += 1 + 0
|■条件分岐(変数): 【1】 V97[開始ターン] が V99[発動ターン] と同じ
|-◇分岐: 【1】 [ V97[開始ターン] が V99[発動ターン] と同じ ]の場合↓
| |▼ 技能発動処理自体は数ターン前に終わっている。発動予定者の情報=技能習得者の情報を再習得する?
| |■変数操作: CSelf10[主人公ID] = 0 + 0
| |■変数操作: CSelf11[○番目?] = 1 + 0
| |■回数付きループ [ 可変DB(18,4,0)[現在パーティー人数 数値 ] ]回
| | |■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
| | |■デバッグ文:主人公ID\cself[10]
| | |■イベントの挿入: CSelf12[習得している?] = コモン25:[ ▲特殊技能の有無取得 ] / CSelf10[主人公ID] / 37:みらいよち(開始)
| | |■条件分岐(変数): 【1】 CSelf12[習得している?] が 1 と同じ
| | |-◇分岐: 【1】 [ CSelf12[習得している?] が 1 と同じ ]の場合↓
| | | |■変数操作: CSelf13[発動者] = CSelf10[主人公ID] + 0
| | | |■変数操作: CSelf11[○番目?] += 1 + 0
| | | |■
| | |◇分岐終了◇
| | |■
| |◇ループここまで◇◇
| |▼ 発動者を、可変DB8[×┣ コマンド処理リスト:1:発動者番号]の1に登録する処理が必要がある?
| |▼ 発動者に技能を発動させる
| |■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = CSelf13[発動者]
| |■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 38
| |■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21
| |■イベントの挿入: コモン164:[ X[戦]行動実行結果算出 ] / 1 / -1:通常処理 / 0:通常(カウンター有り)
| |▼ 変数リセット
| |■変数操作: V96[みらいよちフラグ] = 0 + 0
| |■変数操作: V97[開始ターン] = 0 + 0
| |■変数操作: V98[経過ターン] = 0 + 0
| |■
|◇分岐終了◇
|■
◇分岐終了◇

YADO様の回答の中で、技能の連続使用や、複数使用者がいる場合の処理について疑問があったのでその辺も改善しました。まず新たな変数を導入して技能「みらいよち(発動)」が発動するまで、技能「みらいよち(開始)」を使用できない(「今は使用できない」などメッセージを表示しイベント中断、技能が不発になる)処理をしました。
今製作しているゲームでは、この技能の使用者が一人なので「同パーティーの複数の主人公が連続使用する」際の処理については考えていませんでしたが、技能習得者の数が少ないのであれば、力技ですが同じ名前の「みらいよち」技能を複数設定し別々に習得させ、違うコモンと変数で同じ動きをするという方法が考えられるかなと思います。(「みらいよち(2)」はコモン217・218、V100~103を使用して同じ処理を作るなど。)ウディタ基本システムのパーティー人数6人くらいまでだったらいけそうですが、パーティー入れ替え可能で操作できる主人公の数がかなり多い場合の処理はちょっと思いつかないです…。
おかげさまで、ターンカウント周りの処理はほぼ解決しました。

しかし、技能の技能の発動処理についてはまだうまくできていません。
教えていただいた下記の処理↓

> 技能の発動は、以下の設定を行えば可能です。
> ■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = 0(発動する主人公のデータID[0〜5]を設定)
> ■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21(ランダムで敵キャラ一体を攻撃)
> ■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 38
> ■イベントの挿入[名]: ["X[戦]行動実行結果算出"] <コモンEv 164> / 1 / -1:通常処理 / 0:通常(カウンター有り

をコモン216に入れてテストプレイすると、技能のエフェクトだけが発生しダメージ計算などが行われない状態でした。
「> ■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = 0(発動する主人公のデータID[0〜5]を設定)」あたりがうまくできていないと思います。最初の「みらいよち(開始)」からターンが経つので、「みらいよち(開始)」習得者を発動者として登録する処理をすればよいかと思い試してみましたがうまくいきませんでした。(そもそも主人公IDではなくデータIDが必要なので、そこの橋渡しをしないといけない。)

もう少し色々調べて、うまい処理ができないか考えてみたいと思います。
回答ありがとうございました。また時間がありましたら、ご助力いただけるとありがたいです。


記事No: 21676 [関連記事]
タイトルRe: 効果が数ターン後に発動する技能を作りたい
投稿日: 2024/10/14 06:45
投稿者YADO [LerLWW459(海外)]

発動のターン数などを処理する通常変数は、1個の変数だけでも処理できそうですが、まあ現状の設定でも問題はないです。
(使う変数の数が少ない方がイベント設定が見やすくなりそう)

コモン216の処理は修正が必要です。
以下はコモン216の修正内容を含めた、通常変数を1個だけ使用した時の設定例です。

戦闘開始時の初期化
■変数操作: V96[発動までの残りターン] = 0 + 0


コモンイベント215[みらいよち処理(開始)]
■条件分岐(変数): 【1】 V96[発動までの残りターン] が 1 以上
-◇分岐: 【1】 [ V96[発動までの残りターン] が 1 以上 ]の場合↓
|■デバッグ文:すでに発動済の場合はメッセージを表示し中断、技能を不発にする
|■イベントの挿入: コモン30:[ ◆[戦闘用]メッセージ表示 ] / 0:流れるメッセージで表示 / 今は使用できない
|■ウェイト:60 フレーム
|■イベント処理中断
|■
◇分岐終了◇
▼ 発動フラグが立てられる場合は、処理開始
▼ エフェクト等処理
■イベントの挿入: コモン183:[ X[戦]技能エフェクト描画 ] / 14 / 320 / 200 / 0
▼ ターンカウント開始準備
■変数操作: V96[発動までの残りターン] = 3 〜 4

「ウェイト:60フレーム」は上記のままでも良いですが、
■イベントの挿入[名]: ["X[共]ウェイト2(キー押しで加速)"] <コモンEv 60> / 60
に変えると、キーを押している時には、ウェイトを短くする事ができます。


コモンイベント216[みらいよち処理(ターンカウント・発動)] ※【 】で修正内容を記載
■変数操作: V96[発動までの残りターン] -= 1 + 0【「-=」に変更】
■条件分岐(変数): 【1】 V96[発動までの残りターン] が 0 と同じ【条件分岐をこれだけに変更】
-◇分岐: 【1】 [ V96[発動までの残りターン] が 0 と同じ ]の場合↓
|▼ 技能発動処理自体は数ターン前に終わっている。発動予定者の情報=技能習得者の情報を再習得する?
|■変数操作: CSelf10[主人公ID] = 0 + 0【このままでも良いですが、削除しても問題ないです】
|■変数操作: CSelf11[○番目?] = 0 + 0【「0 + 0」に変更】
|■回数付きループ [ 可変DB(18,4,0)[現在パーティー人数 数値 ] ]回
||■変数操作: CSelf11[○番目?] += 1 + 0【設定位置を移動】
||■DB読込(可変): CSelf10[主人公ID] = 可変DB[ パーティー情報 : メイン設定 : CSelf11[○番目?] ] (6 : 0 : -)
||■デバッグ文:主人公ID\cself[10]
||■イベントの挿入: CSelf12[習得している?] = コモン25:[ ▲特殊技能の有無取得 ] / CSelf10[主人公ID] / 37:みらいよち(開始)
||■条件分岐(変数): 【1】 CSelf12[習得している?] が 1 と同じ
||-◇分岐: 【1】 [ CSelf12[習得している?] が 1 と同じ ]の場合↓
|||■変数操作: CSelf13[発動者] = CSelf11[○番目?] - 1【「セルフ変数[11] - 1」に変更(発動者設定はパーティの並び順(0〜5)で設定する必要があるため)】
|||■ループ中断【追加】
|||■
||◇分岐終了◇
||■
|◇ループここまで◇◇
|▼ 発動者を、可変DB[×┣ コマンド処理リスト:1:発動者番号]の1に登録する処理が必要がある?
|▼ 発動者に技能を発動させる
|■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = CSelf13[発動者]
|■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 38
|■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21
|■イベントの挿入: コモン164:[ X[戦]行動実行結果算出 ] / 1 / -1:通常処理 / 0:通常(カウンター有り)
|■【通常変数の初期化設定を削除】
◇分岐終了◇


複数の主人公が技能「みらいよち」を使える場合、
同じ名前の技能「みらいよち」で呼び出すコモンIDを変えたものを主人公ごとに設定するアイデアは良いと思います。
残りターン数のカウントする変数番号も、呼び出すコモンごとに変数番号を変えれば、
複数の主人公が同時に使用しても、それぞれで技能の発動が有効になるでしょう。

技能「みらいよち」が使える主人公がパーティに複数いる場合で、パーティメンバーが固定ではない場合は、例えば
通常変数[100]=パーティの1人目
通常変数[101]=パーティの2人目
通常変数[102]=パーティの3人目
通常変数[103]=パーティの4人目
通常変数[104]=パーティの5人目
通常変数[105]=パーティの6人目
のようにパーティの並び順ごとに、残りターン数をカウントする変数を準備し、
コモンイベント[215]からコモンイベント[197:X┃┗◆1行動ループ]のセルフ変数[16]の値を取得して、
パーティの何番目の主人公が技能「みらいよち」を使ったのかを調べて、
その並び順から通常変数[100〜105]のどれを使うのかを決定するような処理を作れば良さそう。
この場合は、主人公が習得する技能「みらいよち」は1つだけ(全員がコモンID[215]を呼び出す設定)で良さそうですが、処理構造はちょっと複雑になりそう。

もしも不特定多数が使うコモン素材として作る場合は、通常変数が使えない上、戦闘中にパーティの入れ替えを行うケースもあるため、
色々とあの手この手奥の手を使わないと、正常に動かすのは難しいです。


技能の発動に関しては、現状のコモン216の設定でうまくいかなかった場合は、上記のようにコモン216を修正した上で動作テストを行ってみてください。

こちらの動作テストでは
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = 0
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21
■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 5(サンプルゲームでは「ファイアーボール」)
を設定して、問題無くランダムに敵一体に攻撃を行っています。

ダメージ計算が行われない原因は分かりませんが、
例えばユーザーDB[0:技能]の項目[8: 何に影響する?]が「[-1]<なし>」になっていると、ダメージ計算は行われません。

試しに技能「みらいよち(発動)」を主人公の可変DB[1:┣ 技能習得Lv]に設定して、
戦闘中に「特殊技能」から通常の技能として使用し、ちゃんと実行できるかどうかを確認してみると良いでしょう。
技能が使えない場合はユーザーDB[0:技能]の設定の問題、
技能が使える場合はコモンイベントの設定の問題と分かるでしょう。


記事No: 21677 [関連記事]
タイトルRe: 効果が数ターン後に発動する技能を作りたい
投稿日: 2024/10/14 23:07
投稿者せいら [rOgFLg683(海外)]

YADO様

再度の回答ありがとうございます。おかげさまで問題は解決しました。

> ダメージ計算が行われない原因は分かりませんが、
> 例えばユーザーDB[0:技能]の項目[8: 何に影響する?]が「[-1]<なし>」になっていると、ダメージ計算は行われません。
→お考えの通り、こちらの項目の設定が「[-1]<なし>」のままになっておりました。(私の設定ミスが原因でお恥ずかしい。)設定を「[0]<HPダメージ/回復>」に直してテストプレイしたところ、ちゃんとダメージ計算が行われました。
コモン216の修正後、使用者を変更しても、ちゃんとステータスがダメージに反映されていましたので大丈夫そうです。

> 発動のターン数などを処理する通常変数は、1個の変数だけでも処理できそうですが、まあ現状の設定でも問題はないです。
> (使う変数の数が少ない方がイベント設定が見やすくなりそう)
→そうですね。変数が少ないほうが処理がごちゃごちゃせずわかりやすくなっていい感じです。こちらも修正に反映させて頂きました。それと、ターンカウントの途中で戦闘が終了した場合を考慮し、変数をリセットする処理が必要でしたね。

コモンの内容はほぼYADO様のご提案のとおり修正しましたが、コモン216の最後の方のみ発動時にメッセージを表示する処理を追加しています。(「ウルファールはヒールを唱えた!」のようなメッセージ文の作成を担当しているコモンイベント[196:X┃┣◆行動可能判定](271-273行目)をコモン164:[ X[戦]行動実行結果算出 ] では呼び出していないので、必要なら直接追加する必要があるのかと。)↓
|▼ 発動者に技能を発動させる
|■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動者番号 ] (14 : : 0) = CSelf13[発動者]
|■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 発動技能 ] (14 : : 3) = 38
|■可変DB書込:DB[ ×┣ コマンド処理リスト : 1 : 受け側番号 ] (14 : : 2) = -21
|■イベントの挿入: コモン164:[ X[戦]行動実行結果算出 ] / 1 / -1:通常処理 / 0:通常(カウンター有り)
|■DB読込(可変): CSelf5[発動者名] = 可変DB[ ×┏ 戦闘一時ステータス[基] : CSelf13[発動者] : キャラ名 ] (10 : - : 0)
|■DB読込(ユーザ): CSelf6[メッセージ] = ユーザDB[ 魔法・技能 : みらいよち(発動) : 使用時文章[戦闘](人名~ ] (0 : 38 : 14)
|■文字列操作:CSelf6[メッセージ] = "\cself[5]\cself[6]"
|■イベントの挿入[名]: ["X[戦]戦闘メッセージ表示"] <コモンEv 182> / 0:表示→自動削除 / CSelf6[メッセージ]

> もしも不特定多数が使うコモン素材として作る場合は、通常変数が使えない上、戦闘中にパーティの入れ替えを行うケースもあるため、
> 色々とあの手この手奥の手を使わないと、正常に動かすのは難しいです。
→コモンイベント集で詠唱時間の設定を追加するコモンがあり、それを参考にすればどうかとも考えましたが、各データベースや基本システムのコモンの大規模な改変が必要そうだったので断念しました。今回はここまででいいこととしようと思います。
今回製作したものはあまり複雑な設定はできませんが、ほとんど基本システムを改変せずに追加できるのが利点だと思います。

分からないことが多くいろいろとご迷惑をおかけしましたが、YADO様のおかげで無事問題が解決しました。本当にありがとうございます。
引き続きゲーム制作を頑張っていきたいと思います。