一括表示

記事No: 21356
タイトル敵に同じ技を連続で使わせないようにしたい
投稿日: 2021/07/16 11:16
投稿者ポタ郎 [riFrWLrLi248(海外)]

[やりたいこと]
・戦闘が単調にならないように敵が同じスキルを連発しないようにしたい


[やってみたこと]
・敵は数ターンに一度特定のスキルを使用するように設定した
・敵はスキルを一定の確率で発動するように設定した
・公式サイトのコモンイベント集にある「クールタイムコモン」を挿入した
・敵が使うスキルにクールタイムを設定した


[やってみた結果、どううまくいかないか]
・敵が同じスキルを連続で発動してしまう
・恐らくスキルに設定されているクールタイムが上手く機能していない


数年ぶりのゲーム更新なので十分な知識や説明がなくて申し訳ないです
(ゲームのデータを公開していましたが、
 問題が解決したのでデータを削除しました)


記事No: 21357
タイトルRe: 敵に同じ技を連続で使わせないようにしたい
投稿日: 2021/07/17 07:02
投稿者YADO [LerLWW459(海外)]

> [やりたいこと]
> ・戦闘が単調にならないように敵が同じスキルを連発しないようにしたい
>
>
> [やってみたこと]
> ・敵は数ターンに一度特定のスキルを使用するように設定した
> ・敵はスキルを一定の確率で発動するように設定した
> ・公式サイトのコモンイベント集にある「クールタイムコモン」を挿入した
> ・敵が使うスキルにクールタイムを設定した
>
>
> [やってみた結果、どううまくいかないか]
> ・敵が同じスキルを連続で発動してしまう
> ・恐らくスキルに設定されているクールタイムが上手く機能していない
>
>
> 数年ぶりのゲーム更新なので十分な知識や説明がなくて申し訳ないです


ちょっと作品データを見てみましたが、クールタイム用の可変DBには、敵のクールタイムの値が設定されていましたが、
敵の行動を決める処理には、そのクールタイム用の可変DBが使われている様子が無く、クールタイムが機能していないようでした。

もしも敵のクールタイムを設定するとしたら、コモンイベント[139:X[戦]AI実行]の中になるでしょう。

例えばコモンイベント[139:X[戦]AI実行]の401行目に以下のイベントを追加。

■DB読込(可変): CSelf10[一時変数A] = 可変DB[タイプ使用スキル記録(22)の内容数]
■回数付きループ [ CSelf10[一時変数A] ]回
|■変数操作: CSelf10[一時変数A] -= 1 + 0
|■DB読込(可変): CSelf11[一時変数B] = 可変DB[ 使用スキル記録 : CSelf0[対象戦闘スロット] : CSelf10[一時変数A] ] (22 : - : -)
|■条件分岐(変数): 【1】 CSelf11[一時変数B] が CSelf37[[AI]行動内容] と同じ
|-◇分岐: 【1】 [ CSelf11[一時変数B] が CSelf37[[AI]行動内容] と同じ ]の場合↓
| |■DB読込(可変): CSelf11[一時変数B] = 可変DB[ クールタイム判定 : CSelf0[対象戦闘スロット] : CSelf10[一時変数A] ] (23 : - : -)
| |■条件分岐(変数): 【1】 CSelf11[一時変数B] が 1 以上
| |-◇分岐: 【1】 [ CSelf11[一時変数B] が 1 以上 ]の場合↓
| | |■変数操作: CSelf39[条件満たすフラグ] = 0 + 0
| | |■
| |◇分岐終了◇
| |■
|◇分岐終了◇
|■
◇ループここまで◇◇

WoditorEvCOMMAND_START
[250][5,4]<0>(20,1600000,-1,69632,1600010)("","使用スキル記録","","")
[179][1,0]<0>(1600010)()
[121][4,0]<1>(1600010,1,0,512)()
[250][5,4]<1>(22,1600000,1600010,69632,1600011)("","使用スキル記録","","")
[111][4,0]<1>(1,1600011,1600037,2)()
[401][1,0]<1>(1)()
[250][5,4]<2>(23,1600000,1600010,69632,1600011)("","クールタイム判定","","")
[111][4,0]<2>(1,1600011,1,1)()
[401][1,0]<2>(1)()
[121][4,0]<3>(1600039,0,0,0)()
[0][0,0]<3>()()
[499][0,0]<2>()()
[0][0,0]<2>()()
[499][0,0]<1>()()
[0][0,0]<1>()()
[498][0,0]<0>()()
WoditorEvCOMMAND_END

ユーザーDBにある敵AIの設定は、例えば敵「Chapter1-1」の場合は、
アクション4の「スパーク」の所にある「┗4条件に該当しない場合」の設定を「[1]アクション1を判定」に変えると、
もう一度アクション1から処理し直して、別の行動を選択するようになるでしょう。

あとクールタイムの減少処理が主人公分しか設定されていないので、コモンイベント[176:X┣◆ターン終了処理]の21行目にある
■イベントの挿入[名]: ["◆クールタイム減少"] <コモンEv 193> / 0 / 0:通常
のキャラ「0」の設定を「1600010」に変えて
■イベントの挿入[名]: ["◆クールタイム減少"] <コモンEv 193> / CSelf10[一時変数A] / 0:通常
にして下さい。


記事No: 21358
タイトルRe: 敵に同じ技を連続で使わせないようにしたい
投稿日: 2021/07/17 12:09
投稿者YADO [LerLWW459(海外)]

コモンイベント[178:X┗◆戦闘終了処理]の19行目にある
■イベントの挿入[名]: ["◆クールタイム減少"] <コモンEv 193> / CSelf20[対象ID] / 1:戦闘終了時
の変数の設定は「セルフ変数[20]」ではなく、「セルフ変数[10]」だと思います。

あと13行目の
■変数操作: CSelf10[一時変数] = 0 + 0
の設定は
■変数操作: CSelf10[一時変数] = -1 + 0
が正しいかと。


記事No: 21359
タイトル解決しました
投稿日: 2021/07/17 22:22
投稿者ポタ郎 [riFrWLrLr267(海外)]

ありがとうございます
敵のスキルにもクールタイムが適応されるようになりました