3Dダンジョンロールプレイングゲーム 第67回目です。
今回は、戦闘の前準備として各々計算式を組んでいきます。
計算式出展:『GCGX』
https://gcgx.games/dq1/damage.html
まず、プレイヤー→敵の与ダメージ値計算。
(乱数*(攻撃力-敵防御力/2+1)/255+攻撃力-敵防御力/2)/4 |
必要なので16ビット割り算ルーチンを用意。
次に、敵→プレイヤーの被ダメージ値計算。
条件 | 計算式 |
敵攻撃力-防御力/2≧敵攻撃力/2+1 | (乱数*(敵攻撃力-防御力/2+1)/255+敵攻撃力-防御力/2)/4 |
敵攻撃力-防御力/2<0 または 敵攻撃力-防御力/2<敵攻撃力/2+1 | 乱数*(敵攻撃力/2+1)/255+2 |
次に、敵の先制攻撃判定計算。
敵が先制攻撃ならAレジスタに1。
(素早さ*乱数(0〜255))<(敵防御力*乱数(0〜63)) | 敵の先制攻撃 |
次にプレイヤーの逃走成功判定。
逃走失敗ならAレジスタに1。
敵種 | 計算式 |
スライム、シルバーウルフ、ミミック、ワイト | (素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜63)) |
スケルトン | (素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜94)) |
ゴースト | (素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜127)) |
マミー、ドラゴン | (素早さ*乱数(0〜255))≧(敵防御力*乱数(0〜255)) |
最後に敵の逃走判定。
逃走するならAレジスタに1。
攻撃力(武具除く)/2≧敵攻撃力 | 且つ、逃走確立1/4 |
一応これだけの計算式が必要になります。
各計算ルーチンで、ループし計算結果を算出するBASICプログラムを組んで結果を検証。
想定範囲内の値しか出ないことを確認。
計算ロジック完成です。