dmgCalc

by Sure Sure

HTML

【Notice】<br>
<p>※スマホは画面を横向きにしてお使いくださいOTZ</p>
<p>※弱点有無は有り(1)、無し(0)を指定してください。</p>
<p>※カットイン補正は通常カットイン(1.0)、稲妻カットイン(1.5)を指定してください。</p>
<p>※ユニット名はメモ用にご自由にどうぞ。</p>
<br>
【Input】
<table>
<thead>
<tr>
<td>項目名</td>
<td>Unit1</td>
<td>Unit2</td>
<td>Unit3</td>
<td>Unit4</td>
<td>Unit5</td>
<td>Unit6</td>
</tr>
</thead>
<tr>
<td>ユニット名</td>
<td><INPUT TYPE="text" id="name1" VALUE="" SIZE=5/></td>
<td><INPUT TYPE="text" id="name2" VALUE="" SIZE=5/></td>
<td><INPUT TYPE="text" id="name3" VALUE="" SIZE=5/></td>
<td><INPUT TYPE="text" id="name4" VALUE="" SIZE=5/></td>
<td><INPUT TYPE="text" id="name5" VALUE="" SIZE=5/></td>
<td><INPUT TYPE="text" id="name6" VALUE="" SIZE=5/></td>
</tr>
<tr>
<td>ユニット攻撃力</td>
<td><INPUT TYPE="number" id="base_atk1" VALUE="10000" SIZE=5/></td>
<td><INPUT TYPE="number" id="base_atk2" VALUE="10000" SIZE=5/></td>
<td><INPUT TYPE="number" id="base_atk3" VALUE="10000" SIZE=5/></td>
<td><INPUT TYPE="number" id="base_atk4" VALUE="10000" SIZE=5/></td>
<td><INPUT TYPE="number" id="base_atk5" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="base_atk6" VALUE="0" SIZE=5/></td>
</tr>
<tr>
<td>攻撃力ボーナス</td>
<td><INPUT TYPE="number" id="bonus_atk1" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_atk2" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_atk3" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_atk4" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_atk5" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_atk6" VALUE="0" SIZE=5/></td>
</tr>
<tr>
<td>特化ダメージ</td>
<td><INPUT TYPE="number" id="bonus_dmg1" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_dmg2" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_dmg3" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_dmg4" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_dmg5" VALUE="0" SIZE=5/></td>
<td><INPUT TYPE="number" id="bonus_dmg6" VALUE="0" SIZE=5/></td>
</tr>
<tr>
<td>アサルト補正率</td>
<td><INPUT TYPE="number"...

CSS

p {
  font-size: x-small;
}

td {
  white-space: nowrap;
  margin: 1px;
  padding: 1px;
  border: none;
  font-size: x-small;
}
tr td:nth-of-type(1){
//  background-color: white;
}
thead {
  color: white;
  font-size: x-small;
}
thead td:nth-of-type(1),thead td{
  background-color: seagreen;
  text-align:center;
}

input{
  font-size: x-small;
}

input[type=number] {
  text-align: right;
  width: 95%;
}
input[type=text] {
  text-align: center;
  width: 95%;
}

input[type=button] {
  text-align:center;
  width: 95%;
}

@media only screen and (max-device-width: 480px) {
  /* デバイス幅によって以下を適用 */
  p {
    font-size: xx-small;
  }
  td {
    white-space: nowrap;
    margin: 0px;
    padding: 0px;
    border: none;
    font-size: xx-small;
  }
  thead {
    margin: 0px;
    padding: 0px;
    border: none;
    color: white;
    font-size: xx-small;
  }  
  thead td:nth-of-type(1),thead td{
    margin: 0px;
    padding: 0px;
    border: none;
    background-color: seagreen;
    text-align:center;
    font-size: xx-small;
  }

  input[type=number] {
    width: 60%;
    font-size: xx-small;
  }
  input[type=button] {
    text-align:center;
    font-size: xx-small;
    width: 80%;
  }
}

JavaScript

/***************************
Powered by Sure
Tuned by Mr.Gran @ all of thanks
/***************************
/***************************
//計算ボタン押下時メイン処理
****************************/
function calc() {

  //初期化
  var party_hit = 0;
  var party_base_dmg = 0;
  var party_full_dmg = 0;
  var party_exp_dmg = 0;

  //画面入力値取得
  for (i = 1; i < 7; i++) {
    var num = [i]; //列番号
    //入力値読込み
    //整数型は整数型に
    //小数型は5桁切上げに
    //ユニット攻撃力
    var base_atk = parseInt($('base_atk' + num).value);
    //攻撃力ボーナス
    var bonus_atk = parseInt($('bonus_atk' + num).value);
    //特化ダメージ
    var bonus_dmg = parseInt($('bonus_dmg' + num).value);
    //アサルト補正率
    var assault_rate = (parseFloat($('assault_rate' + num).value) * 100000 + 0.5) / 100000;
    //全力補正率
    var full_rate = (parseFloat($('full_rate' + num).value) * 100000 + 0.5) / 100000;
    //弱点補正
    var bonus_weak = parseInt($('bonus_weak' + num).value);
    //属性補正
    var bonus_element = parseInt($('bonus_element' + num).value);
    //属性補正数
    var number_element = parseInt($('number_element' + num).value);
    //チェイン補正
    var chain_rate = Math.floor(parseFloat($('chain_rate' + num).value) * 100000 + 0.5) / 1000;
    //ダメージ倍率
    var multiple_rate = (parseFloat($('multiple_rate' + num).value) * 100000 + 0.5) / 100000;
    //ヒット数
    var number_hit = parseInt($('number_hit' + num).value);
    //弱点有(1)無(0)
    var weak_flg = $('weak_flg' + num).value;
    //カットイン倍率
    var cutin_rate = (parseFloat($('cutin_rate' + num).value) * 100000 + 0.5) / 100000;

    //ユニット単位算出(戻り:json配列)
    var jsonDmg = calc_dmg(num, base_atk, bonus_atk,
      bonus_dmg, assault_rate, full_rate,
      bonus_weak, bonus_element, number_element,
      chain_rate, multiple_rate, number_hit, weak_flg, cutin_rate);

    //ユニット単位出力
    setUnitDmg(num, jsonDmg);

    //パーティ合計Hit数計算
    party_hit += number_hit;

    //パーティ合計ダメージ計算
    //基礎ダメージ(下限値)
    party_base_dmg += jsonDmg["total_base_dmg"];
    //全力ダメージ(上限値)
    party_full_dmg +=...