戦闘
ダメージ計算
ダメージ計算が実行されるタイミング
ダメージ計算は攻撃対象ごとに実行される
全体攻撃の場合は攻撃対象の数だけ実行される
回復や蘇生スキルもダメージ計算として扱われる
基本となるダメージ計算式
A:アタッカー(攻撃者)
D:ディフェンダー(防御者)
- P = A.攻撃力 * A.攻撃力バフ * スキル攻撃力
- G = D.防御力 * D.防御力バフ
- ダメージ = P * P / (P + G) * A.与ダメージバフ * D.属性ダメージ係数 * D.被ダメージバフ
ダメージ計算に関する変数は『戦闘変数』のページを参照
物理攻撃のダメージ計算
- :
- : power = $A.attack * $A.attackBuff * $Skill.power;
- :
- : guard = $D.defence * $D.defenceBuff;
- :
- : dealDamage = power * power / (power + guard) * $A.dealDamageBuff * $D.takeDamageScale * $D.takeDamageBuff;
- :
- : dealDamage = BtlScatter( dealDamage, $Skill.scattering );
- :
- : BtlDealDamage( $D.isEnemy, $D.index, dealDamage );
魔法攻撃のダメージ計算
魔法攻撃も物理攻撃と基本的には同様
攻撃力を魔法攻撃力に、防御力を魔法防御力に変化させれば魔法攻撃の計算式となる
- :
- : power = $A.magicAttack * $A.magicAttackBuff * $Skill.power;
- :
- : guard = $D.magicDefence * $D.magicDefenceBuff;
- :
- : dealDamage = power * power / (power + guard) * $A.dealDamageBuff * $D.takeDamageScale * $D.takeDamageBuff;
- :
- : dealDamage = BtlScatter( dealDamage, $Skill.scattering );
- :
- : BtlDealDamage( $D, dealDamage );
回避判定
回避判定
回避判定は BtlAvoid() 関数を使用して判定を行う
この関数の戻り値が true なら回避成功、false なら回避失敗となる
回避は被ダメージ側のキャラの回避パラメータを使用して計算を行う
- : if (BtlAvoid( $D.isEnemy, $D.index ))
- :
- : BtlDealDamage( $D.isEnemy, $D.index, 0 );
- : else
- :
- :
- : endif