Script Document

戦闘

ダメージ計算

ダメージ計算が実行されるタイミング

ダメージ計算は攻撃対象ごとに実行される
全体攻撃の場合は攻撃対象の数だけ実行される
回復や蘇生スキルもダメージ計算として扱われる

基本となるダメージ計算式

:アタッカー(攻撃者)
:ディフェンダー(防御者)

  1. P = A.攻撃力 * A.攻撃力バフ * スキル攻撃力
  2. G = D.防御力 * D.防御力バフ
  3. ダメージ = P * P / (P + G) * A.与ダメージバフ * D.属性ダメージ係数 * D.被ダメージバフ

ダメージ計算に関する変数は『戦闘変数』のページを参照

物理攻撃のダメージ計算

  1. : // 攻撃値の計算
  2. : power = $A.attack * $A.attackBuff * $Skill.power;
  3. : // 防御値の計算
  4. : guard = $D.defence * $D.defenceBuff;
  5. : // ダメージ値の計算
  6. : dealDamage = power * power / (power + guard) * $A.dealDamageBuff * $D.takeDamageScale * $D.takeDamageBuff;
  7. : // 分散させたダメージ値を計算
  8. : dealDamage = BtlScatter( dealDamage, $Skill.scattering );
  9. : // 対象にダメージを適用
  10. : BtlDealDamage( $D.isEnemy, $D.index, dealDamage );

魔法攻撃のダメージ計算

魔法攻撃も物理攻撃と基本的には同様
攻撃力を魔法攻撃力に、防御力を魔法防御力に変化させれば魔法攻撃の計算式となる

  1. : // 攻撃値の計算
  2. : power = $A.magicAttack * $A.magicAttackBuff * $Skill.power;
  3. : // 防御値の計算
  4. : guard = $D.magicDefence * $D.magicDefenceBuff;
  5. : // ダメージ値の計算
  6. : dealDamage = power * power / (power + guard) * $A.dealDamageBuff * $D.takeDamageScale * $D.takeDamageBuff;
  7. : // 分散させたダメージ値を計算
  8. : dealDamage = BtlScatter( dealDamage, $Skill.scattering );
  9. : // 対象にダメージを適用
  10. : BtlDealDamage( $D, dealDamage );

回避判定

回避判定

回避判定は BtlAvoid() 関数を使用して判定を行う
この関数の戻り値が true なら回避成功、false なら回避失敗となる
回避は被ダメージ側のキャラの回避パラメータを使用して計算を行う

  1. : if (BtlAvoid( $D.isEnemy, $D.index ))
  2. : // 回避に成功した場合の処理
  3. : BtlDealDamage( $D.isEnemy, $D.index, 0 ); // ダメージ量を 0 とすると "MISS" のポップアップが出る
  4. : else
  5. : // 回避に失敗した場合の処理
  6. : // (ダメージ処理等)
  7. : endif
TOP