バトル計算式

デフォルト計算式

各種デフォルトの計算式は次のようになります。
スクリプトファイルの書き換えによって、計算式は変更することができます。
キーワード 説明
攻撃力 ユニットの力(魔力) + 武器の威力で表されます。武器が特効の場合は、この結果が2倍になります。
防御力 ユニットの守備力(魔防力) + 地形情報の守備力(魔防力) で表されます。
実際のダメージ こちらの攻撃力 - 相手の守備力で表されます。クリティカルが発動した場合は、この結果が3倍になります。
命中率 (ユニットの技 * 3) + 武器の命中率で表されます。
回避率 (ユニットの速さ * 2) + 地形情報の回避率で表されます。
実際の命中率 こちらの命中率 - 相手の回避率で表されます。
クリティカル率 ユニットの技 + 武器のクリティカル率で表されます。
クリティカル回避率 ユニットの幸運で表されます。
実際のクリティカル率 こちらのクリティカル率 - 相手のクリティカル回避率で表されます。
敏捷 ユニットの速さで表されます。重さが有効な場合は、重さ - 力(魔力)の結果が0より大きい場合は、その分だけ減算されます。たとえば、ユニットの速さが10で武器の重さが7、力が6の場合は、敏捷は9になります。
再攻撃の条件 こちらの敏捷が相手の敏捷を指定値分だけを超える場合に発生します。この指定値は、「データ設定」の「コンフィグ」の「再攻撃差分」で設定できます。
回復アイテムの回復値 アイテムの回復値で表されます。アイテムが杖の場合は、ユニットの魔力が加算されます。
ダメージ アイテムのダメージ値 アイテムのダメージ値で表されます。アイテムが杖の場合は、ユニットの魔力が加算されます。


計算式の変更方法


まずは、Scriptフォルダの中にあるsingletonフォルダの中のsingleton-calculator.jsというファイルをコピーし、
それをプロジェクト内のPluginフォルダの中に貼り付けます。
次に、それを右クリック→編集するとjsファイルの中をメモ帳で開くことが可能となります(jsファイルそのものをメモ帳にドラッグ&ドロップでも良いです)
今回は試しに、命中率と回避率、クリティカル率を変更してみましょう

jsファイルの中身を見てみると、このような文が見つかります。

getHit: function(unit, weapon) {
	// 武器の命中率 + (技 * 3)
	return weapon.getHit() + (RealBonus.getSki(unit) * 3);
},

getAvoid: function(unit) {
	var avoid, terrain;
	var cls = unit.getClass();
	
	// 回避は、(速さ * 2)
	avoid = RealBonus.getSpd(unit) * 2;
	
	// クラス系統が地形ボーナスを考慮する場合は、地形効果の回避率を加算する
	if (cls.getClassType().isTerrainBonusEnabled()) {
		terrain = PosChecker.getTerrainFromPos(unit.getMapX(), unit.getMapY());
		avoid += terrain.getAvoid();
	}
	
	return avoid;
},

getCritical: function(unit, weapon) {
	// 技 + 武器のクリティカル率
	return RealBonus.getSki(unit) + weapon.getCritical();
},

この中の//で書かれている部分は要するにメモのようなものなので、ここの日本語は変更しても意味がありません。
変えるのはその下の行の英文になります。
では、命中率を武器の命中+技×2+幸運、回避率を速さ×2+幸運、クリティカル率を技÷2+武器の必殺率としてみましょう。

まずは幸運の値を得るために、RealBonus.getLuk(unit)というコマンドを追加します。
これによってユニットの幸運の値を得て、計算式に使用することが可能になります。
また、デフォルトでは技×3となっているので、この部分を技×2に変更する事も必要となります。
幸運の値はそのまま加算したいので、この値を計算式に加えて

	return weapon.getHit() + (RealBonus.getSki(unit) * 2) + RealBonus.getLuk(unit);

このようにします。
これで命中の計算式が武器の命中+技×2+幸運となりました。


この調子で他の計算式も変えて、以下の通りにします。

getHit: function(unit, weapon) {
	// 武器の命中率 + (技 * 3)
	return weapon.getHit() + (RealBonus.getSki(unit) * 2) + RealBonus.getLuk(unit);
},

getAvoid: function(unit) {
	var avoid, terrain;
	var cls = unit.getClass();
	
	// 回避は、(速さ * 2)
	avoid = RealBonus.getSpd(unit) * 2 + RealBonus.getLuk(unit);
	
	// クラス系統が地形ボーナスを考慮する場合は、地形効果の回避率を加算する
	if (cls.getClassType().isTerrainBonusEnabled()) {
		terrain = PosChecker.getTerrainFromPos(unit.getMapX(), unit.getMapY());
		avoid += terrain.getAvoid();
	}
	
	return avoid;
},

getCritical: function(unit, weapon) {
	// 技 + 武器のクリティカル率
	return (RealBonus.getSki(unit)/2) + weapon.getCritical();
},

これで計算式の変更は終了です。忘れずに上書き保存をしましょう。


計算式を変更するにあたっての注意点があります。
①Scriptフォルダ内のsingleton-calculator.jsを変更しない
アップデートをした場合、Scriptフォルダ内の全てのファイルが更新されます。
その場合、自分が書き換えた内容も全て消えてしまうので、Scriptフォルダ内のjsファイルは原則編集しないように。

②アップデートした場合に、Pluginフォルダ内のsingleton-calculator.jsが機能しなくなる(エラーが発生する)場合がある
アップデートによって、Scriptフォルダ内のsingleton-calculator.jsの内容そのものが変更される場合があります。
その場合、当然古いsingleton-calculator.jsをコピーしたものをPluginフォルダで使っているわけですからエラーが発生します。
対処方法としては、面倒ですが最新にアップデートした後でもう1度Scriptフォルダ内のsingleton-calculator.jsをコピーしてPluginフォルダに入れ、
計算式を設定し直しましょう。
アップデートがある程度済んでから設定する、という手もあります。

計算式で使われているパラメータ(一部)

ユニットのパラメータ

  • 力 RealBonus.getStr(unit)
  • 技 RealBonus.getSki(unit)
  • 速さ RealBonus.getSpd(unit)
  • 幸運 RealBonus.getLuk(unit)
  • 魔力 RealBonus.getMag(unit)

武器パラメータ

  • 武器のクリティカル率 weapon.getCritical()
  • 武器の重さ weapon.getWeight()
  • 武器の威力 weapon.getPow()
  • 武器の命中率 weapon.getHit()