SRPG Studio ~ シミュレーションRPG作成ソフト

計算式の変更

ゲーム中の計算式の変更は、スクリプトを通じて行います。 まず、プロジェクトフォルダ内のPluginというフォルダにアクセスします。

このフォルダの中に、独自のスクリプトファイルを作成します。 ファイル名は自由ですが、今回はmyscript.jsというファイルを作成します。

上図のようなファイルを作成したら、ファイルをテキストエディタで開きます。 記述するスクリプトコードは、下記の中の1つ以上の処理です。

AbilityCalculator.getPower = function(unit, weapon) {
	var pow;
	
	if (Miscellaneous.isPhysicsBattle(weapon)) {
		// 物理攻撃または投射攻撃
		pow = RealBonus.getStr(unit);
	}
	else {
		// 魔法攻撃
		pow = RealBonus.getMag(unit);
	}
	
	// 武器の威力 + (力 or 魔力)
	return pow + weapon.getPow();
};

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

AbilityCalculator.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;
};

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

AbilityCalculator.getCriticalAvoid = function(unit) {
	// 幸運がクリティカル回避率
	return RealBonus.getLuk(unit);
};

AbilityCalculator.getAgility = function(unit, weapon) {
	var agi, pow, value;
	var spd = RealBonus.getSpd(unit);
	
	if (DataConfig.isItemWeightDisplayable() && weapon !== null) {
		if (Miscellaneous.isPhysicsBattle(weapon)) {
			pow = RealBonus.getStr(unit);
		}
		else {
			pow = RealBonus.getMag(unit);
		}
		
		// 重さ - 力(魔力)
		value = weapon.getWeight() - pow;
		if (value > 0) {
			// 力(魔力)が重さより低いため、その差分だけ敏捷を下げる
			agi = spd - value;
		}
		else {
			agi = spd;
		}
	}
	else {
		// 重さを表示しない場合は、速さが敏捷と同一になる
		agi = spd;
	}
	
	return agi;
};
	

修正対象以外の部分は記載しないことが望ましいため、 たとえばクリティカル率のみを変更したい場合は、 AbilityCalculator.getCritical以外の部分は削除していただいて問題ありません。

サンプルとして下記コードを用意しています。 これをそのままmyscript.jsに貼り付けていただくことが可能です。

AbilityCalculator.getCritical = function(unit, weapon) {
	// クリティカル率は、武器のクリティカル率と同一
	return weapon.getCritical();
};

AbilityCalculator.getCriticalAvoid = function(unit) {
	// クリティカル回避率は常に0
	return 0;
};
	

クリティカル率とクリティカル回避率を変更したいと仮定し、 getCriticalとgetCriticalAvoidを上書きしています。 上記のようにした場合、ゲーム中でクリティカルが発動するのは、 クリティカル率が設定された武器を装備している場合のみになります。

目次

ヘルプ・マニュアル

スクリプト・マニュアル