Summary. ダメージ計算スクリプトの中身についてです(HTML側の解説)。

始めに

世の大半のWebページと同様、「ダメージ計算スクリプト」は
  • ベースとなるHTMLファイル
  • 外部にあるスクリプトファイル(calc_damage.js)
の2つを組み合わせた格好になっています。細かいデータや計算規則など、キャラに依存しない要素は後者のスクリプトファイルに納められています。こういったシステム寄りの事柄については他のページで解説します。

これに対し、HTMLファイルの中では「具体的な技の定義」を記述しています。もし他のキャラのスクリプトを作るなら、HTML側だけをいじればよいと思います。以下、どうやって技を定義するか簡単にまとめてみました。

技の定義

個々の技の実装はHTML側のSCRIPTタグ内で行っています。ダメージ計算スクリプトに技を認識させるには、次のどちらかの連想配列に「技を実装する関数」を登録します:

Variables
Skills      ほとんどの場合、技の登録はこちらに行います
SP 特殊コマンド用です。ウタカタのように引数のルールが違う場合はこちらに登録します

Skills に登録する場合は、同時に Skills.HC へ最大ヒット数を登録しないといけません。

まあ、とにかく実物を見てみましょう。

Skillsの例

たとえば、Cレンの5Aは次のように定義されます:
Skills.HC["5A"] = 2;
Skills["5A"] = function(i){
  normal(350, 78);
} 
1行目は最大ヒット数の登録です。引数チェックなどのために必要になります。
2行目以降が本題で、「技の関数」を定義します。

「技の関数」とは、 1つの引数nを受け取って、その技のn段目が当たったときの処理を行う関数 です。レンの5Aの場合は1段目も2段目も同じ攻撃力なので1行で済ませていますが、一般的には条件分岐が必要になります。if文なり3項演算子なりを使って記述してください。これらは1ヒットずつ何回も呼び出されます。

さて、関数の中で何をやればよいかというと、
  • 上書き補正なら normal(ダメージ, 補正)
  • 乗算補正なら mult(ダメージ, 補正)
  • 減算補正なら sub(ダメージ, 補正)
を使って、ダメージを計上します。浮かせ技の場合は _f を関数名の後ろに付けてください。
より複雑な処理を行う場合は、計算の解説を参照してください。

特殊実装の例

レンのウタカタはヒット数が不定ですので、最大ヒット数というものがそもそもありません。そのため、ウタカタに対して引数を省略することはできません。こういう技は特殊コマンドとして実装します:
SP["AD"] = function(v){
  for( ; v > 0; v--) normal(440, 50);
} 
特殊コマンドとして登録した場合、ユーザが指定した引数を int にパースした値がそのままこの関数の引数として渡されます。そのため、for文を使って必要な回数の処理を行っています。

他に特殊実装が必要な例としては、さつきのAADなどがあります。

派生技の登録

たとえば、ワンツースリーの場合は "6AA" と "6AAA" を登録すればよいです。





最終更新:2012年11月10日 15:32