【ウディタSRPG】ユニットの方向別に防御力を分ける

この前買ったTRPG本のルール説明を読んでいたんですけど、ちゃんと読むと長い長い...(汗

本一冊が丸ごとルールブックみたいな感じになってて驚きました。


で、制作中のゲームに何か利用できないかなーなんて考えながら読み進めていたんですけど、見てくださいこれ。

なんか知らない使徒いるーーー!!

こういうのゲームで出してもいいかも。てかゲームのストーリーとかどうしよう(←あとで考えます



それはさておき、この前面防御・背面防御っていうルールがおもしろそう。

ユニット毎に前面・背面それぞれから攻撃された時の防御力に違いがあるみたいで、基本的には背面から攻撃を喰らうと大ダメージになってしまうみたい。
これ戦略的にもおもしろそうなのでSRPGに導入したいですねー。


しかも、銀日記さんのSRPGって元から方向指定ができるようになってるんですよ!!!

これはラッキーというか、もはや前面背面防御ルールを導入しろと言われているようなもの!!!!




というわけで実装しました。(早

コモンEv256[■ダメージ計算]の防御力計算前に前面から攻撃を受けたのか、背面から攻撃を受けたのか判定して分岐させればいいので、その処理を作成しました。


ウディタでは「方向」がテンキーに対応しているので、こんな感じにユーザーDBで方向に対する背面判定となる3方向を定義しておきます。

例えば処理中ユニットの方向が左下の時、被弾側のユニットの方向がor左下orなら背面から攻撃したと判定(真横は前面とみなす)


判定後、前面からの攻撃なのか、背面からの攻撃なのかで分岐して、CSelf15[相手キャラの防御力]の値を変えてやれば完成。
可変DB[ユニットデータ]前面防御力背面防御力のステータスを追加)



これでユニットの方向によって防御力を変化させる処理になりました。




あと、コモンEv257[■命中判定]も改造しました。
上と同じように分岐させて、背面から攻撃された場合は回避率が10%減少する仕様にしてみました。




はい、今回は『新世紀エヴァンゲリオンRPG―決戦!第3新東京市』を参考にした改造でした。
この本に載っている武器一覧も後で使えそう。ダメージとか命中率的なことも書いてあるし。



※2022/10/8 追記
こちらを参考に、上記のユーザーDB[背面判定]を廃止して、計算だけで判定処理できるようにしたコモンを作成。

一応イベントコードも載せときます

WoditorEvCOMMAND_START
[121][4,0]<0>(1600023,0,0,0)()
[124][4,0]<0>(1600020,4096,1600000,5)()
[124][4,0]<0>(1600021,4096,1600001,5)()
[103][0,1]<0>()("反対方向")
[121][4,0]<0>(1600010,10,1600020,4096)()
[103][0,1]<0>()("反対方向の隣")
[121][4,0]<0>(1600013,1600020,5,6144)()
[111][7,0]<0>(18,1600013,1,2,1600013,3,2)()
[401][1,0]<0>(1)()
[103][0,1]<1>()("横方向")
[121][4,0]<1>(1600011,1600010,3,4096)()
[121][4,0]<1>(1600012,1600010,3,0)()
[0][0,0]<1>()()
[401][1,0]<0>(2)()
[103][0,1]<1>()("縦方向")
[121][4,0]<1>(1600011,1600010,1,4096)()
[121][4,0]<1>(1600012,1600010,1,0)()
[0][0,0]<1>()()
[420][1,0]<0>(0)()
[103][0,1]<1>()("斜め方向")
[121][4,0]<1>(1600013,1600010,1,4096)()
[121][4,0]<1>(1600014,1600013,3,16384)()
[121][4,0]<1>(1600015,1600013,3,12288)()
[121][5,0]<1>(1600014,1,0,66048,1)()
[121][4,0]<1>(1600013,1600014,-1,8192)()
[121][4,0]<1>(1600011,1600010,1600013,0)()
[121][4,0]<1>(1600013,1600015,-3,8192)()
[121][4,0]<1>(1600012,1600010,1600013,0)()
[0][0,0]<1>()()
[499][0,0]<0>()()
[99][1,0]<0>(0)()
[111][10,0]<0>(3,1600021,1600010,2,1600021,1600011,2,1600021,1600012,2)()
[401][1,0]<0>(1)()
[121][4,0]<1>(1600023,1,0,0)()
[0][0,0]<1>()()
[401][1,0]<0>(2)()
[121][4,0]<1>(1600023,1,0,0)()
[0][0,0]<1>()()
[401][1,0]<0>(3)()
[121][4,0]<1>(1600023,1,0,0)()
[0][0,0]<1>()()
[499][0,0]<0>()()
WoditorEvCOMMAND_END