2011年05月08日

ロジックが決まれば必要なデータも決まるよね

前回戦闘ロジックをひと通り定義したけど、これで必要なデータが何かってのもあらかた定義できたなぁ。
 基本のステータス

基本ステータスは5つの宝島の時とほとんど変わらない感じで行けるはず。具体的には

名前
説明
初期値
HP
最大HP
 1
MP
最大MP
 0
攻撃力
装備品がない状態での基本攻撃力
 0
防御力
装備品がない状態での基本防御力 0
素早さ
イニシアチブの決定基本値
 0

これだけ。武器攻撃時には攻撃力+適当なランダム値-防御力分のダメージを受ける。

なお、上記は基本的に変動しない固定ステータス。これらに加えて

名前
説明
初期値
hp
現在HP
 1
mp
現在MP
 0
initiative
行動順番を決める行動値
 0

上記3つの変動ステータスがある。initiativeはラウンドの最初に素早さ+適当なランダム値が割り振られる。

味方専用のステータス

基本ステータス以外に、味方は以下の情報を定義する必要がある。

名前
説明
装備/武器
武器。戦闘中に変更可能。攻撃力に加算
装備/盾盾。戦闘中に変更可能。防御力に加算
装備/鎧鎧。戦闘中に変更不可。防御力に加算
装備/兜
兜。戦闘中に変更不可。防御力に加算
装備可能種別
どの種別の装備品を装備できるか
特技1
MPを使って特殊攻撃ができる。
特技2
MPを使って特殊攻撃ができる。

装備可能種別については、アイテム一覧のところで別途説明。

敵専用のステータス

敵は装備などないので装備品のステータスはない。その上、ランダムに行動を決める必要があるのでこんな感じになる

行動決定
行動を決定するアルゴリズム。関数を入力する
行動1
普通の攻撃。特殊攻撃かもしれない
行動2
普通の攻撃。特殊攻撃かもしれない
行動3
普通の攻撃。特殊攻撃かもしれない
行動4
普通の攻撃。特殊攻撃かもしれない

行動決定プロパティには行動決定関数を入れる。普通は

actionName = this[行動 + (randi(4) + 1)];
とかを入れる。関数randi()は0から引数までの整数を返す自作のユーティリティ関数だ。
つまり、普通の敵は1〜4までの行動をランダムに行う

アイテム一覧

攻撃力や防御力はアイテムによって決まるので、アイテムの一覧を定義しなきゃいけない。
アイテム一覧は以下のとおり

名前
アイテム名
装備箇所
武器・盾・鎧・兜・消耗品・その他 のうちいずれか
種別
剣とか軽鎧とか
効果値
装備したときの攻撃力・防御力の上がり方
使用効果
使ったときの効果

種別は各キャラクターが装備できるアイテムかどうかを書くところだ。
たとえば軽戦士系のキャラクターは「剣・ナイフ・盾・鎧・軽鎧・服・兜・帽子」を装備できるとする。
アイテム種別が剣のものなら装備可能だけど、斧だったら装備不可。そんなふうに判定する。

あと、消費アイテムかどうかは装備箇所プロパティで決定する。
なんでこんなところに定義するんだよとも思われるかもしれないけど、あれだろ。装備できるアイテムなんて普通消費しないでしょ。

特技一覧

最後に回復や炎の魔法などを定義する特技一覧だ。

名前
特技名
効果
特技の効果を表す。関数を入力する
消費MP
特技を使用する際に消費するMPを入力する

なお、アイテムを使って特技を実行する場合(ポーションを使って回復1を実行する場合)はMPは消費しない。そのかわりアイテムを消耗したりする。

こんな感じかな!ここまで作ったソースを↓に上げたよ。

dunspe.zip
posted by LoyalTouch at 20:02| Comment(0) | TrackBack(0) | ダンジョンスペシャル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック