232 lines
9.9 KiB
JavaScript
232 lines
9.9 KiB
JavaScript
//=============================================================================
|
||
// DifficultyExtend.js
|
||
// ----------------------------------------------------------------------------
|
||
// Copyright (c) 2015-2016 Triacontane
|
||
// This software is released under the MIT License.
|
||
// http://opensource.org/licenses/mit-license.php
|
||
// ----------------------------------------------------------------------------
|
||
// Version
|
||
// 1.0.1 2016/05/18 弱点・耐性倍率の小数点が無視されていた問題を修正
|
||
// 1.0.0 2016/05/18 初版
|
||
// ----------------------------------------------------------------------------
|
||
// [Blog] : http://triacontane.blogspot.jp/
|
||
// [Twitter]: https://twitter.com/triacontane/
|
||
// [GitHub] : https://github.com/triacontane/
|
||
//=============================================================================
|
||
|
||
/*:
|
||
* @plugindesc 難易度選択拡張プラグイン
|
||
* @author トリアコンタン
|
||
*
|
||
* @param 難易度ID変数
|
||
* @desc 難易度IDの値が格納される変数です。
|
||
* @default 0
|
||
*
|
||
* @param 難易度IDスイッチ_1
|
||
* @desc 難易度IDが[1]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_1
|
||
* @desc 難易度IDが[1]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_1
|
||
* @desc 難易度IDが[1]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_2
|
||
* @desc 難易度IDが[2]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_2
|
||
* @desc 難易度IDが[2]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_2
|
||
* @desc 難易度IDが[2]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_3
|
||
* @desc 難易度IDが[3]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_3
|
||
* @desc 難易度IDが[3]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_3
|
||
* @desc 難易度IDが[3]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_4
|
||
* @desc 難易度IDが[4]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_4
|
||
* @desc 難易度IDが[4]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_4
|
||
* @desc 難易度IDが[4]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_5
|
||
* @desc 難易度IDが[5]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_5
|
||
* @desc 難易度IDが[5]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_5
|
||
* @desc 難易度IDが[5]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_6
|
||
* @desc 難易度IDが[6]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_6
|
||
* @desc 難易度IDが[6]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_6
|
||
* @desc 難易度IDが[6]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_7
|
||
* @desc 難易度IDが[7]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_7
|
||
* @desc 難易度IDが[7]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_7
|
||
* @desc 難易度IDが[7]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度IDスイッチ_8
|
||
* @desc 難易度IDが[8]のときに自動でONになるスイッチです。
|
||
* @default 0
|
||
*
|
||
* @param 難易度ID弱点倍率_8
|
||
* @desc 難易度IDが[8]のときの弱点属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @param 難易度ID耐性倍率_8
|
||
* @desc 難易度IDが[8]のときの耐性属性の攻撃を行ったときにさらに乗算される値です。
|
||
* @default 1.0
|
||
*
|
||
* @help 尾角 つの様作成の難易度選択プラグインの機能を拡張します。
|
||
* プラグイン管理画面で同プラグインより下に配置してください。
|
||
*
|
||
* 配布元:http://tm.lucky-duet.com/viewtopic.php?t=430
|
||
*
|
||
* 現在の難易度を変数・スイッチに格納します。
|
||
* これにより、特定の難易度でのみ有効になる敵キャラのスキル等が
|
||
* 実現できたり、難易度変数を計算式に組み込むことで、難易度によって威力の変動する
|
||
* スキルが作成できます。
|
||
*
|
||
* さらに、難易度によって弱点・耐性倍率を変えられるようになります。
|
||
* 弱点倍率を2.0に設定した難易度の場合、1.1倍の弱点属性が2.2倍になります。
|
||
*
|
||
* このプラグインにはプラグインコマンドはありません。
|
||
*
|
||
* 利用規約:
|
||
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
|
||
* についても制限はありません。
|
||
* このプラグインはもうあなたのものです。
|
||
*/
|
||
|
||
var Vitsuno = Vitsuno || {};
|
||
|
||
(function () {
|
||
'use strict';
|
||
var pluginName = 'DifficultyExtend';
|
||
|
||
var getParamNumber = function(paramNames, min, max) {
|
||
var value = getParamOther(paramNames);
|
||
if (arguments.length < 2) min = -Infinity;
|
||
if (arguments.length < 3) max = Infinity;
|
||
return (parseInt(value, 10) || 0).clamp(min, max);
|
||
};
|
||
|
||
var getParamFloat = function(paramNames, min, max) {
|
||
var value = getParamOther(paramNames);
|
||
if (arguments.length < 2) min = -Infinity;
|
||
if (arguments.length < 3) max = Infinity;
|
||
return (parseFloat(value) || 0).clamp(min, max);
|
||
};
|
||
|
||
var getParamOther = function (paramNames) {
|
||
if (!Array.isArray(paramNames)) paramNames = [paramNames];
|
||
for (var i = 0; i < paramNames.length; i++) {
|
||
var name = PluginManager.parameters(pluginName)[paramNames[i]];
|
||
if (name) return name;
|
||
}
|
||
return null;
|
||
};
|
||
|
||
//=============================================================================
|
||
// パラメータの取得と整形
|
||
//=============================================================================
|
||
var paramDiffIdVariable = getParamNumber(['DiffIdVariable', '難易度ID変数'], 0, 5000);
|
||
var paramDiffIdSwitches = [];
|
||
var paramWeakElementRates = [];
|
||
var paramResistElementRates = [];
|
||
for (var i = 1; i <= 8; i++) {
|
||
var idString = String(i);
|
||
paramDiffIdSwitches[i] = getParamNumber(['DiffIdSwitch_' + idString, '難易度IDスイッチ_' + idString], 0, 5000);
|
||
paramWeakElementRates[i] = getParamFloat(['WeakElementRate_' + idString, '難易度ID弱点倍率_' + idString], 0, 5000);
|
||
paramResistElementRates[i] = getParamFloat(['ResistElementRate_' + idString, '難易度ID耐性倍率_' + idString], 0, 5000);
|
||
}
|
||
|
||
if (!Vitsuno.Difficulty) {
|
||
alert('難易度選択プラグインが有効になっていません。[' + pluginName + '.js]より上に配置してください。');
|
||
}
|
||
|
||
//=============================================================================
|
||
// SceneManager
|
||
// 初期設定時にスイッチと変数を設定します。
|
||
//=============================================================================
|
||
var _SceneManager_setDifficultyMutable = SceneManager.setDifficultyMutable;
|
||
SceneManager.setDifficultyMutable = function() {
|
||
_SceneManager_setDifficultyMutable.apply(this, arguments);
|
||
$gameSystem.setDifficultyId($gameSystem.difficultyId());
|
||
};
|
||
|
||
//=============================================================================
|
||
// Game_System
|
||
// 対象のスイッチと変数を設定します。
|
||
//=============================================================================
|
||
var _Game_System_setDifficultyId = Game_System.prototype.setDifficultyId;
|
||
Game_System.prototype.setDifficultyId = function(difficultyId) {
|
||
_Game_System_setDifficultyId.apply(this, arguments);
|
||
if (paramDiffIdVariable > 0) {
|
||
$gameVariables.setValue(paramDiffIdVariable, difficultyId);
|
||
}
|
||
for (var i = 1, n = paramDiffIdSwitches.length + 1; i < n; i++) {
|
||
var diffIdSwitch = paramDiffIdSwitches[i];
|
||
if (diffIdSwitch > 0) {
|
||
$gameSwitches.setValue(diffIdSwitch, i === difficultyId);
|
||
}
|
||
}
|
||
};
|
||
|
||
//=============================================================================
|
||
// Game_BattlerBase
|
||
// 弱点および耐性属性の補正を適用させます。
|
||
//=============================================================================
|
||
var _Game_BattlerBase_elementRate = Game_BattlerBase.prototype.elementRate;
|
||
Game_BattlerBase.prototype.elementRate = function(elementId) {
|
||
var result = _Game_BattlerBase_elementRate.apply(this, arguments);
|
||
if (result > 1) {
|
||
result *= paramWeakElementRates[$gameSystem.difficultyId()];
|
||
} else if (result < 1) {
|
||
result *= paramResistElementRates[$gameSystem.difficultyId()];
|
||
}
|
||
return result;
|
||
};
|
||
})();
|
||
|