> 実装できました。
> ありがとうございます!
>
> 例えばですが、似たような処理をする状態異常で、名前を変えたものをあと10種類以上作る場合はすべての状態異常に行動不能処理が入るかどうかをチェックさせるループを組んだ方がいいですか?
> もっと軽くする方法があれば知っておきたいです。
「何もしないを確率で実行」と言った基本仕様が変わらず、単に状態の名前や発生確率だけを変える場合は、ループ処理で設定した方が簡単に設定できます。
その場合は、ユーザーDB[8:状態設定]の状態「怠惰」で使用するデータIDを「23〜32」などと連番にした方がループ処理が設定しやすくなります。
▼ユーザーDB[8:状態設定]のデータID「23〜32」をループ処理(ユーザーDB[8:状態設定]に項目47「行動しなくなる確率」があるバージョン)
■変数操作: CSelf10[一時変数A] = 23 + 0
■回数付きループ [ 10 ]回
|■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 13 : CSelf16[発動スロット] : CSelf10[一時変数A] ] (×┣ 状態リスト : - : -)
|■条件分岐(変数): 【1】 CSelf11[一時変数B] が 1 以上
|-◇分岐: 【1】 [ CSelf11[一時変数B] が 1 以上 ]の場合↓
| |■DB読込(ユーザ): CSelf12[一時変数C] = ユーザDB[ 8 : CSelf10[一時変数A] : 行動しなくなる確率 ] (状態設定 : - : 47)
| |■変数操作: CSelf12[一時変数C] += 0 〜 99
| |■条件分岐(変数): 【1】 CSelf12[一時変数C] が 100 以上
| |-◇分岐: 【1】 [ CSelf12[一時変数C] が 100 以上 ]の場合↓
| | |■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 50:行動前
| | |■条件分岐(変数): 【1】 CSelf16[発動スロット] が 10 未満 【2】 CSelf16[発動スロット] が 10 以上
| | |-◇分岐: 【1】 [ CSelf16[発動スロット] が 10 未満 ]の場合↓
| | | |■イベントの挿入[名]: ["X[戦]味方欄_単体描画"] <コモンEv 178> / 40:フラッシュエフェクト / CSelf16[発動スロット] / CSelf16[発動スロット]
| | | |■
| | |-◇分岐: 【2】 [ CSelf16[発動スロット] が 10 以上 ]の場合↓
| | | |■イベントの挿入[名]: ["X[戦]敵キャラ_単体描画"] <コモンEv 179> / 40:フラッシュエフェクト / CSelf16[発動スロット]
| | | |■
| | |◇分岐終了◇
| | |■DB読込(可変): CSelf9[一時項目名] = 可変DB[ 10 : CSelf16[発動スロット] : キャラ名 ] (×┏ 戦闘一時ステータス[基] : - : 0)
| | |■DB読込(ユーザ): CSelf9[一時項目名] += ユーザDB[ 8 : CSelf10[一時変数A] : 13 ] (状態設定 : - : 行動制限時文章(空欄:ナシ)
| | |■イベントの挿入[名]: ["X[戦]戦闘メッセージ表示"] <コモンEv 182> / 0:表示→自動削除 / CSelf9[一時項目名]
| | |■イベント処理中断
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf10[一時変数A] += 1 + 0
|■
◇ループここまで◇◇
WoditorEvCOMMAND_START
[121][4,0]<0>(1600010,23,0,0)()
[179][1,0]<0>(10)()
[250][5,4]<1>(13,1600016,1600010,4096,1600011)("","","","")
[111][4,0]<1>(1,1600011,1,1)()
[401][1,0]<1>(1)()
[250][5,4]<2>(8,1600010,47,266752,1600012)("","","","行動しなくなる確率")
[121][4,0]<2>(1600012,0,99,24832)()
[111][4,0]<2>(1,1600012,100,1)()
[401][1,0]<2>(1)()
[300][3,1]<3>(0,1,50)("X[共]システムSE再生")
[111][7,0]<3>(2,1600016,10,4,1600016,10,1)()
[401][1,0]<3>(1)()
[300][5,1]<4>(0,3,40,1600016,1600016)("X[戦]味方欄_単体描画")
[0][0,0]<4>()()
[401][1,0]<3>(2)()
[300][4,1]<4>(0,2,40,1600016)("X[戦]敵キャラ_単体描画")
[0][0,0]<4>()()
[499][0,0]<3>()()
[250][5,4]<3>(10,1600016,0,266240,1600009)("","","","キャラ名")
[250][5,4]<3>(8,1600010,13,4624,1600009)("","","","")
[300][4,1]<3>(0,17,0,1600009)("X[戦]戦闘メッセージ表示")
[172][0,0]<3>()()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[121][4,0]<1>(1600010,1,0,256)()
[0][0,0]<1>()()
[498][0,0]<0>()()
WoditorEvCOMMAND_END
上記設定では、データID「23〜32」の状態異常の中で、複数の状態異常になった場合は、複数の確率が処理されます。
例えば何もしない確率が「50%」と「10%」の2つの状態異常になった場合、
50%=何もしない
50%=通常行動
と処理されたあとに、50%の通常行動の方はさらに、
50%の10%=何もしない
50%の90%=通常行動
と処理されるため、結果的に、
55%=何もしない
45%=通常行動
と言った処理になります。
上記の仕様で問題ない場合はそのままで良いですが、例えば複数の状態「怠惰」になった時に、
その中で最も大きい確率(「50%」と「10%」の場合は「50%」のみ)が処理されるようにする場合は、以下のように設定する必要があります。
■変数操作: CSelf10[一時変数A] = 23 + 0
■変数操作: CSelf12[一時変数C] = 0 + 0
■回数付きループ [ 10 ]回
|■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 13 : CSelf16[発動スロット] : CSelf10[一時変数A] ] (×┣ 状態リスト : - : -)
|■条件分岐(変数): 【1】 CSelf11[一時変数B] が 1 以上
|-◇分岐: 【1】 [ CSelf11[一時変数B] が 1 以上 ]の場合↓
| |■DB読込(ユーザ): CSelf11[一時変数B] = ユーザDB[ 8 : CSelf10[一時変数A] : 行動しなくなる確率 ] (状態設定 : - : 47)
| |■条件分岐(変数): 【1】 CSelf12[一時変数C] が CSelf11[一時変数B] 未満
| |-◇分岐: 【1】 [ CSelf12[一時変数C] が CSelf11[一時変数B] 未満 ]の場合↓
| | |■変数操作: CSelf12[一時変数C] = CSelf11[一時変数B] + 0
| | |■変数操作: CSelf13[一時変数D] = CSelf10[一時変数A] + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■変数操作: CSelf10[一時変数A] += 1 + 0
|■
◇ループここまで◇◇
■変数操作: CSelf12[一時変数C] += 0 〜 99
■条件分岐(変数): 【1】 CSelf12[一時変数C] が 100 以上
-◇分岐: 【1】 [ CSelf12[一時変数C] が 100 以上 ]の場合↓
|■イベントの挿入[名]: ["X[共]システムSE再生"] <コモンEv 49> / 50:行動前
|■条件分岐(変数): 【1】 CSelf16[発動スロット] が 10 未満 【2】 CSelf16[発動スロット] が 10 以上
|-◇分岐: 【1】 [ CSelf16[発動スロット] が 10 未満 ]の場合↓
| |■イベントの挿入[名]: ["X[戦]味方欄_単体描画"] <コモンEv 178> / 40:フラッシュエフェクト / CSelf16[発動スロット] / CSelf16[発動スロット]
| |■
|-◇分岐: 【2】 [ CSelf16[発動スロット] が 10 以上 ]の場合↓
| |■イベントの挿入[名]: ["X[戦]敵キャラ_単体描画"] <コモンEv 179> / 40:フラッシュエフェクト / CSelf16[発動スロット]
| |■
|◇分岐終了◇
|■DB読込(可変): CSelf9[一時項目名] = 可変DB[ 10 : CSelf16[発動スロット] : キャラ名 ] (×┏ 戦闘一時ステータス[基] : - : 0)
|■DB読込(ユーザ): CSelf9[一時項目名] += ユーザDB[ 8 : CSelf13[一時変数D] : 13 ] (状態設定 : - : 行動制限時文章(空欄:ナシ)
|■イベントの挿入[名]: ["X[戦]戦闘メッセージ表示"] <コモンEv 182> / 0:表示→自動削除 / CSelf9[一時項目名]
|■イベント処理中断
|■
◇分岐終了◇
WoditorEvCOMMAND_START
[121][4,0]<0>(1600010,23,0,0)()
[121][5,0]<0>(1600012,0,0,65536,1)()
[179][1,0]<0>(10)()
[250][5,4]<1>(13,1600016,1600010,4096,1600011)("","","","")
[111][4,0]<1>(1,1600011,1,1)()
[401][1,0]<1>(1)()
[250][5,4]<2>(8,1600010,47,266752,1600011)("","","","行動しなくなる確率")
[111][4,0]<2>(1,1600012,1600011,4)()
[401][1,0]<2>(1)()
[121][4,0]<3>(1600012,1600011,0,0)()
[121][4,0]<3>(1600013,1600010,0,0)()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[121][4,0]<1>(1600010,1,0,256)()
[0][0,0]<1>()()
[498][0,0]<0>()()
[121][4,0]<0>(1600012,0,99,24832)()
[111][4,0]<0>(1,1600012,100,1)()
[401][1,0]<0>(1)()
[300][3,1]<1>(0,1,50)("X[共]システムSE再生")
[111][7,0]<1>(2,1600016,10,4,1600016,10,1)()
[401][1,0]<1>(1)()
[300][5,1]<2>(0,3,40,1600016,1600016)("X[戦]味方欄_単体描画")
[0][0,0]<2>()()
[401][1,0]<1>(2)()
[300][4,1]<2>(0,2,40,1600016)("X[戦]敵キャラ_単体描画")
[0][0,0]<2>()()
[499][0,0]<1>()()
[250][5,4]<1>(10,1600016,0,266240,1600009)("","","","キャラ名")
[250][5,4]<1>(8,1600013,13,4624,1600009)("","","","")
[300][4,1]<1>(0,17,0,1600009)("X[戦]戦闘メッセージ表示")
[172][0,0]<1>()()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END