| 2012/02/19(Sun) 00:00:03 編集(投稿者) (ダメージ周りに不備があったため改訂しました) 2012/02/17(Fri) 09:17:57 編集(投稿者) 2012/02/17(Fri) 09:16:31 編集(投稿者) 2012/02/17(Fri) 09:14:34 編集(投稿者) 2012/02/17(Fri) 09:13:28 編集(投稿者)
こんにちは! 実装方法について悶々と考えていました。一つの参考にでもなれば幸いです。
>・頭、右腕、左腕、脚部の四つの部位を設定 >・部位ごとに耐久値を設定し、破壊された部位の武器は使用不可 >・全ての部位が破壊される、もしくは特定の部位(頭)が破壊されたら機能停止 >・通常のダメージはどの部位が受けるかランダム、特定の部位にダメージを与える攻撃を設定できる
上から順に見ていきます。
>・頭、右腕、左腕、脚部の四つの部位を設定
4つの部位については、それぞれをアイテムで実装する事で実現できます。 アイテムには効果と武器を、そして「パイロット付加能力として、そのパーツの最大耐久値(HP)」、あとユニットのHPに実際に加算する補正値を設定します。 あと理由は後述しますが、武器はすべて攻撃専用(反撃不可)とするのが望ましいです。
>・部位ごとに耐久値を設定し、破壊された部位の武器は使用不可
攻撃イベント及び攻撃後イベントで実装します。システムの実装はインクルードになるので、いつでも必ずイベントが発生するように、 *攻撃後 〜〜〜: と、必ず頭に * をつけて、常時イベントラベルにするのを忘れずに。
攻撃イベントで戦闘前のHPを保存します。変数「戦闘前HP」にSetすると良いかと思います。
戦闘前HPと攻撃後のHPの差をダメージとします。
ランダムまたは選択によって既に決定しているパーツにダメージを加えます。
ダメージの処理については ・パイロット用特殊能力「(パーツ名)耐久値」のレベルから、ダメージ分を差し引く(SetSkillで特殊能力レベルを下げます) ・パイロット用特殊能力「(パーツ名)耐久値」がなければ、アイテムに設定した最大耐久値から、ダメージを引いたレベルの「(パーツ名)耐久値」をSetSkillする が良いかと思います。
また、超過したダメージが他のパーツに及ばない場合は、バトルコンフィグを使って、ダメージがパーツの耐久値ぴったりになるようにします。 パイロット用特殊能力「(パーツ名)耐久値」(なければアイテムに設定した最大耐久値)がそのパーツの残りの耐久値になります。 IIf関数を用い、ダメージが現在の耐久値未満ならそのまま、耐久値以上なら残り耐久値ぴったりのダメージになるようにします。
耐久値が0を下回ったアイテムは装備から外します。(自動的に武器と効果も失われます) 特殊能力「(パーツ名)耐久値」もClearSkillします。
>・全ての部位が破壊される、もしくは特定の部位(頭)が破壊されたら機能停止
部位が頭、かつ耐久値が0を下回った場合は、そのユニットのHPを10にし、また状態を永続の「行動不能」にします。 (イベントで破壊してしまうと、各種のイベントが発生しないためです)
全ての部位が破壊される時は、自ずとユニットのHPが0になって破壊されている場合なので、特に処理は記述しません。
>・通常のダメージはどの部位が受けるかランダム、特定の部位にダメージを与える攻撃を設定できる
武器属性で指定し、攻撃イベントで実施します。 武器属性はさしずめ「狙」あたりでしょうか。
攻撃イベントで部位を設定します。 まず、相手のパーツにあたるアイテムを取得します。 Forコマンドで、相手のアイテムから、装備箇所が「頭 右腕 左腕 脚部」のものを見つけ、配列の変数に保存します。
武器属性「狙」がある場合、Askコマンドで攻撃するパーツを指定します。 ない場合は、ランダムにパーツを選択します。
概ねこんな感じでしょうか。 上記の「武器はすべて攻撃専用(反撃不可)」という部分についてですが、これは反撃によって、破壊されたはずのパーツによる攻撃を防ぐためです。
パーツにダメージを加える際、AutoTalkでメッセージを表示するとユーザーフレンドリーかも。 「〜〜〜に1800のダメージ!」 「〜〜〜は破壊された!」 みたいな。メダロットは2以来やってないので、ゲームで実際どういう演出だったかうろ覚え(;=ω=)
なんというか、実際に作っている方のシナリオには敵いませんが、 「もしかしたらこれで作れるんじゃないか」 という草案の一つ、もしくはロジックの一つとして、参考にでもなれば幸いです。
長くなってしまいました。シナリオ制作頑張りましょう(´・ω・`)ノ それでは!
|