【C#】ポケモン(第8世代)のダメージ計算スクリプト

概要

ポケモン風のゲームを作ろうとしたときに、対戦部分で何が必要になるか考えてたときに試作した機能です。技効果のトリガー管理とかも考えてたんですが面倒そうだったので、簡単そうだったダメージ計算から取り掛かってみました。

キャラデータや技データは有志の方々がエクセルデータとかで上げていると思うので、それと合わせればダメージ計算アプリっぽいものを作れるかと思います。

※ 数パターン検証しかできていないので、正確であるとはいえないです。

サンプル

GitHub:https://github.com/Okamochi000/PokemonDamageCalculatier

主な機能

  • ステータス実数値計算
  • 性格
    • 性格のenum化
    • 性格の日本語名取得
    • 性格の補正値計算
  • タイプ
    • タイプのenum化
    • タイプの日本語名取得
    • タイプ相性計算
  • ダメージ計算

サンプル解説

サンプルでは計算結果の正確性を確認するためにちょっと複雑な状況で計算しています。

CharaStatus.GetRealStatus()では「レベル・性格・種族値・努力値・個体値」からステータス実数値を計算できます。

ステータス実数値に持ち物補正やランク補正、その他もろもろを計算してDamageCalculatier.GetFinalDamage()で最終ダメージを出しています。

ポケモンの「攻撃」は攻撃補正と威力補正で分かれていて、どの効果がどこに補正がかかるのかを知っておかないといけません。例えば、特性「あついしぼう」は防御を上げるのではなく攻撃を下げています(威力を下げるのではなく攻撃を下げる)。

「いのちのたま」補正について

持ち物「いのちのたま」のダメージ計算は特殊で、他の1.3倍率補正のものと誤差が出るそうなので「1.2998046875」として計算するとよいそうです。

   

コメントを残す


CAPTCHA