lust-oni/www/js/plugins/DifficultyExtend.js
2025-10-26 23:43:42 -05:00

232 lines
9.9 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// 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;
};
})();