2008-11-19

状態の行動制限-10~-25とか

ぃよう!
混乱とか狂戦士とか食らわすのは楽しいかい?

魔法の封印とかする技が少ないorないゲームだと狂戦士化させて結果的に魔法を封じたりとかするもんだよな。
んでもってウディタの基本システムだ。

今回は
065:×┣ Phase3 AI計算 ~ 066:×┃┗ 使用対象計算&格納
を弄くってみようと思う。


実はもともと基本システムの敵AIには、混乱(-10台)とか狂戦士(-20台)の状態を場合分けしている部分がなかったりする。した。
まぁ、コマンド1~6とか指定されても困るって言うか、-3とかだったりもするわけだしね。
そのままじゃまずいんで、味方攻撃/敵攻撃に大雑把に分けて処理してみる。

■common065 より抜粋


■回数付きループ [ 7 ]回
|■変数操作: このコモンEvセルフ10 += 1 + 0
|■変数操作: このコモンEvセルフ40 = 0 + 0
|▼ 死んでてもアクションなし
|■DB読込(可変): このコモンEvセルフ20 = 可変DB[8:このコモンEvセルフ10:51](【戦闘不能カウント】)
|■条件分岐(変数): 【1】このコモンEvセルフ20が1と同じ
| ◇分岐: 【1】 [ このコモンEvセルフ20が1と同じ ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇◇
|▼ まず行動不能ならアクションなし
|■DB読込(可変): このコモンEvセルフ20 = 可変DB[8:このコモンEvセルフ10:49](【行動制限】)
|■条件分岐(変数): 【1】このコモンEvセルフ20が1と同じ
| ◇分岐: 【1】 [ このコモンEvセルフ20が1と同じ ]の場合↓
||■DB読込(可変): このコモンEvセルフ21 = 可変DB[8:このコモンEvセルフ10:41]([一時]計算済み敏捷性)
||■イベントの挿入: [このコモンから-3] コモン62:[ ×┣ [コマンドの登録 ソート] ] / このコモンEvセルフ10 / このコモンEvセルフ21 / -1 / -1
||■ループ開始へ戻る
||■
|◇分岐終了◇◇
|▼ ここにアタマおかしいときの処理を挿入(Y’s)
|■条件分岐(変数): 【1】このコモンEvセルフ20が-20以下 【2】このコモンEvセルフ20が-10以下
| ◇分岐: 【1】 [ このコモンEvセルフ20が-20以下 ]の場合↓
||▼ 40:混乱フラグ : 2=狂乱
||■変数操作: このコモンEvセルフ40 = 2 + 0
||■
| ◇分岐: 【2】 [ このコモンEvセルフ20が-10以下 ]の場合↓
||▼ 40:混乱フラグ : 1=混乱
||■変数操作: このコモンEvセルフ40 = 1 + 0
||■
|◇分岐終了◇◇

|▼ ここで自分のHPが残り何%か計算する
|▼
|▼ ここから一匹分の処理開始 セルフ14:現在行動回数 15:残り行動回数 20:敵データ番号
|■DB読込(可変): このコモンEvセルフ20 = 可変DB[8:このコモンEvセルフ10:15](キャラクタ番号[1万↑は敵])
|■変数操作: このコモンEvセルフ20 %= 10000 + 0
|■条件分岐(変数): 【1】このコモンEvセルフ20が0未満
| ◇分岐: 【1】 [ このコモンEvセルフ20が0未満 ]の場合↓
||■ループ開始へ戻る
||■
|◇分岐終了◇◇






|||▼ ★ここでユーザDBから敵のAI条件判定を一個読み込む
|||■DB読込(ユーザ): このコモンEvセルフ22 = ユーザDB[9:このコモンEvセルフ20:このコモンEvセルフ21]
|||■変数操作: このコモンEvセルフ21 += 1 + 0
|||■DB読込(ユーザ): このコモンEvセルフ23 = ユーザDB[9:このコモンEvセルフ20:このコモンEvセルフ21]
|||■変数操作: このコモンEvセルフ21 += 1 + 0
|||■DB読込(ユーザ): このコモンEvセルフ24 = ユーザDB[9:このコモンEvセルフ20:このコモンEvセルフ21]
|||▼
|||▼ ここにアタマおかしいときの処理を挿入(Y’s)
|||■条件分岐(変数): 【1】このコモンEvセルフ40が2と同じ 【2】このコモンEvセルフ40が1と同じ
||| ◇分岐: 【1】 [ このコモンEvセルフ40が2と同じ ]の場合↓
||||▼ 混乱フラグ==2 (バーサク) 139は[敵専用なぐり]
||||■変数操作: このコモンEvセルフ23 = 0 + 0
||||■変数操作: このコモンEvセルフ24 = 139 + 0
||||■ループ中断
||||■
||| ◇分岐: 【2】 [ このコモンEvセルフ40が1と同じ ]の場合↓
||||▼ 混乱フラグ==1 (混乱) 条件無視で選択したもの
||||■条件分岐(変数): 【1】このコモンEvセルフ24が-3以外
|||| ◇分岐: 【1】 [ このコモンEvセルフ24が-3以外 ]の場合↓
|||||■ループ中断
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇

|||▼
|||▼ ■■■■■■ここから壮大な行動判定チェックが始まる!!■■■■■■■■






|||■条件分岐(変数): 【1】このコモンEvセルフ22が1000以上
||| ◇分岐: 【1】 [ このコモンEvセルフ22が1000以上 ]の場合↓
||||■条件分岐(変数): 【1】このコモンEvセルフ22が1999以下
|||| ◇分岐: 【1】 [ このコモンEvセルフ22が1999以下 ]の場合↓
|||||▼ Xターンに一度
|||||■変数操作: このコモンEvセルフ27 = このコモンEvセルフ22 % 1000
|||||■変数操作: このコモンEvセルフ27 = V9-61[[戦闘]現在ターン] % このコモンEvセルフ27
|||||■条件分岐(変数): 【1】このコモンEvセルフ27が0と同じ
||||| ◇分岐: 【1】 [ このコモンEvセルフ27が0と同じ ]の場合↓
||||||▼ 成立
||||||■条件分岐(変数): 【1】このコモンEvセルフ24が-3以外
|||||| ◇分岐: 【1】 [ このコモンEvセルフ24が-3以外 ]の場合↓
|||||||■ループ中断
|||||||■
||||||◇分岐終了◇◇
||||||■変数操作: このコモンEvセルフ30 = -3 + 0
||||||■
|||||◇分岐終了◇◇

|||||■ループ開始へ戻る
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】このコモンEvセルフ22が2000以上
||| ◇分岐: 【1】 [ このコモンEvセルフ22が2000以上 ]の場合↓
||||■条件分岐(変数): 【1】このコモンEvセルフ22が2999以下
|||| ◇分岐: 【1】 [ このコモンEvセルフ22が2999以下 ]の場合↓
|||||▼ X回目の行動なら
|||||■変数操作: このコモンEvセルフ27 = このコモンEvセルフ22 % 1000
|||||■条件分岐(変数): 【1】このコモンEvセルフ27がこのコモンEvセルフ14と同じ
||||| ◇分岐: 【1】 [ このコモンEvセルフ27がこのコモンEvセルフ14と同じ ]の場合↓
||||||▼ 成立
||||||■条件分岐(変数): 【1】このコモンEvセルフ24が-3以外
|||||| ◇分岐: 【1】 [ このコモンEvセルフ24が-3以外 ]の場合↓
|||||||■ループ中断
|||||||■
||||||◇分岐終了◇◇
||||||■変数操作: このコモンEvセルフ30 = -3 + 0
||||||■
|||||◇分岐終了◇◇

|||||■ループ開始へ戻る
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇
|||▼ ■■■■■■■■■■■■行動判定終了地点■■■■■■■■■■■■
|||■
||◇ループここまで◇◇
||▼ 実行する処理(24)と指定先(23)を取得できたので、計算を行う
||■変数操作: このコモンEvセルフ25 = このコモンEvセルフ10 + 0
||■イベントの挿入: [このコモンから+1] コモン66:[ ×┃┗ 使用対象計算&格納 ] / このコモンEvセルフ25 / このコモンEvセルフ24 / このコモンEvセルフ23 / このコモンEvセルフ40
||■
|◇ループここまで◇◇


■common066 より抜粋


■条件分岐(変数): 【1】V9-4[[サンプルテスト用]デバッグ]が2と同じ
◇分岐: 【1】 [ V9-4[[サンプルテスト用]デバッグ]が2と同じ ]の場合↓
|■文章:\>敵:使用対象計算 \cself[0] -> \cself[1] AI\cself[2] OPT : \cself[3]
|■
◇分岐終了◇◇
■条件分岐(変数): 【1】このコモンEvセルフ1が-1と同じ
◇分岐: 【1】 [ このコモンEvセルフ1が-1と同じ ]の場合↓
|▼ 何もしない場合
|■イベントの挿入: [このコモンから-4] コモン62:[ ×┣ [コマンドの登録 ソート] ] / このコモンEvセルフ0 / このコモンEvセルフ20 / -1 / このコモンEvセルフ1
|■イベント処理中断
|■
◇分岐終了◇◇
■条件分岐(変数): 【1】このコモンEvセルフ1が-2と同じ
◇分岐: 【1】 [ このコモンEvセルフ1が-2と同じ ]の場合↓
|▼ 逃げる場合
|■イベントの挿入: [このコモンから-4] コモン62:[ ×┣ [コマンドの登録 ソート] ] / このコモンEvセルフ0 / このコモンEvセルフ20 / -1 / このコモンEvセルフ1
|■イベント処理中断
|■
◇分岐終了◇◇
■条件分岐(変数): 【1】このコモンEvセルフ1が0未満
◇分岐: 【1】 [ このコモンEvセルフ1が0未満 ]の場合↓
|■イベント処理中断
|■
◇分岐終了◇◇
■DB読込(ユーザ): このコモンEvセルフ10 = ユーザDB[0:このコモンEvセルフ1:2](┏ 効果対象)
▼ 混乱の場合セルフ10の値を書き換える(Y’s)
■条件分岐(変数): 【1】このコモンEvセルフ3が1と同じ
◇分岐: 【1】 [ このコモンEvセルフ3が1と同じ ]の場合↓
|■条件分岐(変数): 【1】このコモンEvセルフ10が10以上
| ◇分岐: 【1】 [ このコモンEvセルフ10が10以上 ]の場合↓
||■条件分岐(変数): 【1】このコモンEvセルフ10が11と同じ
|| ◇分岐: 【1】 [ このコモンEvセルフ10が11と同じ ]の場合↓
|||■変数操作: このコモンEvセルフ10 = 2 + 0
|||■
|| ◇上記以外
|||■変数操作: このコモンEvセルフ10 = 3 + 0
|||■
||◇分岐終了◇◇
||■
| ◇上記以外
||■条件分岐(変数): 【1】このコモンEvセルフ10が2と同じ
|| ◇分岐: 【1】 [ このコモンEvセルフ10が2と同じ ]の場合↓
|||■変数操作: このコモンEvセルフ10 = 11 + 0
|||■
|| ◇上記以外
|||■変数操作: このコモンEvセルフ10 = 12 + 0
|||■
||◇分岐終了◇◇
||■
|◇分岐終了◇◇
|■
◇分岐終了◇◇


■変数操作: このコモンEvセルフ20 = このコモンEvセルフ0 + 0
■DB読込(可変): このコモンEvセルフ20 = 可変DB[8:このコモンEvセルフ20:41]([一時]計算済み敏捷性)
■変数操作: このコモンEvセルフ1 += 40000 + 0





この色の部分が追加したトコ。
それからここは、おれが作成中のヤツで敵用の通常攻撃(殴り)の技番号なので、各自作品に応じて変更しとくれ。
でもって最後の066を呼び出しの最後の引数にcself[40]を渡すようにしてやればおk。
あとは066でやる。


それから、ついでなんでここね。
ちょーっと、お持ちの基本システムと見比べてみて欲しい。
どっか違っていることに気づくだろう。っていうか基本システム流用してるなら気づくと思う。気付いてっwww


実はこれ、条件満たしてるけど「次の条件も判定」によって&条件になってるか否かで決定か判定し直しか場合分けする処理なんだけど、ターンと攻撃回数の部分でビミョーなところがあったんだ。
きちんと条件満たしたわけでもないのにcself[30]に-3入れてたんだっけかな?確か。
さらに逆に、条件を満たしていた場合、cself[24]==-3 のときでも問答無用に決定されてしまっていたので、要するに&条件の前項には使えないものだった。

まぁ、もしかしたらそういう仕様なのかもしれないがw
とりあえずおれの期待した動作ではないので書き換えてみた(b^ー゚)♪
これで前にも後ろにも入れられて気持ち(・∀・)イイよね。


しかしアレだね。
基本システムにデバッグ用変数残してくれてるのはありがたいやね^^

0 件のコメント:

最新の投稿