236 lines
8.8 KiB
JavaScript
236 lines
8.8 KiB
JavaScript
//=============================================================================
|
||
// SystemSoundCustomize.js
|
||
// ----------------------------------------------------------------------------
|
||
// Copyright (c) 2015-2017 Triacontane
|
||
// This software is released under the MIT License.
|
||
// http://opensource.org/licenses/mit-license.php
|
||
// ----------------------------------------------------------------------------
|
||
// Version
|
||
// 1.0.0 2017/05/22 初版
|
||
// ----------------------------------------------------------------------------
|
||
// [Blog] : https://triacontane.blogspot.jp/
|
||
// [Twitter]: https://twitter.com/triacontane/
|
||
// [GitHub] : https://github.com/triacontane/
|
||
//=============================================================================
|
||
|
||
/*:
|
||
* @plugindesc SystemSoundCustomizePlugin
|
||
* @author triacontane
|
||
*
|
||
* @help システム効果音をゲーム中に動的に変更します。
|
||
* 変更したシステム効果音はセーブデータごとに有効になります。
|
||
*
|
||
* 変更はプラグインコマンドから行います。最初の引数にシステム効果音ごとの
|
||
* タイプインデックス(後述)を指定してください。
|
||
*
|
||
* プラグインコマンド詳細
|
||
* イベントコマンド「プラグインコマンド」から実行。
|
||
* (パラメータの間は半角スペースで区切る)
|
||
*
|
||
* SSC_CHANGE_SYSTEM_SE 0 seName 90 100 0 # カーソルSEをseNameに変更
|
||
* SSC_システム効果音変更 0 seName 90 100 0 # 同上
|
||
* SSC_RESET_SYSTEM_SE 1 # 決定SEをデフォルトに戻す
|
||
* SSC_システム効果音削除 1 # 同上
|
||
* ※音量、ピッチ、位相を省略した場合は通常のデフォルト値が適用されます。
|
||
*
|
||
* タイプインデックス一覧
|
||
* 0:カーソル
|
||
* 1:決定
|
||
* 2:キャンセル
|
||
* 3:ブザー
|
||
* 4:装備
|
||
* 5:セーブ
|
||
* 6:ロード
|
||
* 7:戦闘開始
|
||
* 8:逃走
|
||
* 9:敵攻撃
|
||
* 10:敵ダメージ
|
||
* 11:敵消滅
|
||
* 12:ボス消滅1
|
||
* 13:ボス消滅2
|
||
* 14:味方ダメージ
|
||
* 15:味方戦闘不能
|
||
* 16:回復
|
||
* 17:ミス
|
||
* 18:回避
|
||
* 19:魔法回避
|
||
* 20:魔法反射
|
||
* 21:ショップ
|
||
* 22:アイテム使用
|
||
* 23:スキル使用
|
||
*
|
||
* This plugin is released under the MIT License.
|
||
*/
|
||
/*:ja
|
||
* @plugindesc システム効果音変更プラグイン
|
||
* @author トリアコンタン
|
||
*
|
||
* @help システム効果音をゲーム中に動的に変更します。
|
||
* 変更したシステム効果音はセーブデータごとに有効になります。
|
||
*
|
||
* 変更はプラグインコマンドから行います。最初の引数にシステム効果音ごとの
|
||
* タイプインデックス(後述)を指定してください。
|
||
*
|
||
* プラグインコマンド詳細
|
||
* イベントコマンド「プラグインコマンド」から実行。
|
||
* (パラメータの間は半角スペースで区切る)
|
||
*
|
||
* SSC_CHANGE_SYSTEM_SE 0 seName 90 100 0 # カーソルSEをseNameに変更
|
||
* SSC_システム効果音変更 0 seName 90 100 0 # 同上
|
||
* SSC_RESET_SYSTEM_SE 1 # 決定SEをデフォルトに戻す
|
||
* SSC_システム効果音削除 1 # 同上
|
||
* ※音量、ピッチ、位相を省略した場合は通常のデフォルト値が適用されます。
|
||
*
|
||
* タイプインデックス一覧
|
||
* 0:カーソル
|
||
* 1:決定
|
||
* 2:キャンセル
|
||
* 3:ブザー
|
||
* 4:装備
|
||
* 5:セーブ
|
||
* 6:ロード
|
||
* 7:戦闘開始
|
||
* 8:逃走
|
||
* 9:敵攻撃
|
||
* 10:敵ダメージ
|
||
* 11:敵消滅
|
||
* 12:ボス消滅1
|
||
* 13:ボス消滅2
|
||
* 14:味方ダメージ
|
||
* 15:味方戦闘不能
|
||
* 16:回復
|
||
* 17:ミス
|
||
* 18:回避
|
||
* 19:魔法回避
|
||
* 20:魔法反射
|
||
* 21:ショップ
|
||
* 22:アイテム使用
|
||
* 23:スキル使用
|
||
*
|
||
* 利用規約:
|
||
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
|
||
* についても制限はありません。
|
||
* このプラグインはもうあなたのものです。
|
||
*/
|
||
|
||
(function () {
|
||
'use strict';
|
||
var metaTagPrefix = 'SSC_';
|
||
|
||
//=============================================================================
|
||
// ローカル関数
|
||
// プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
|
||
//=============================================================================
|
||
var getArgNumber = function (arg, min, max) {
|
||
if (arguments.length < 2) min = -Infinity;
|
||
if (arguments.length < 3) max = Infinity;
|
||
return (parseInt(arg) || 0).clamp(min, max);
|
||
};
|
||
|
||
var convertEscapeCharacters = function (text) {
|
||
if (isNotAString(text)) text = '';
|
||
var windowLayer = SceneManager._scene._windowLayer;
|
||
return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text) : text;
|
||
};
|
||
|
||
var isNotAString = function (args) {
|
||
return String(args) !== args;
|
||
};
|
||
|
||
var convertAllArguments = function (args) {
|
||
for (var i = 0; i < args.length; i++) {
|
||
args[i] = convertEscapeCharacters(args[i]);
|
||
}
|
||
return args;
|
||
};
|
||
|
||
var setPluginCommand = function (commandName, methodName) {
|
||
pluginCommandMap.set(metaTagPrefix + commandName, methodName);
|
||
};
|
||
|
||
//=============================================================================
|
||
// パラメータの取得と整形
|
||
//=============================================================================
|
||
var pluginCommandMap = new Map();
|
||
setPluginCommand('CHANGE_SYSTEM_SE', 'execChangeSystemSe');
|
||
setPluginCommand('システム効果音変更', 'execChangeSystemSe');
|
||
setPluginCommand('RESET_SYSTEM_SE', 'execResetSystemSe');
|
||
setPluginCommand('システム効果音削除', 'execResetSystemSe');
|
||
|
||
//=============================================================================
|
||
// Game_Interpreter
|
||
// プラグインコマンドを追加定義します。
|
||
//=============================================================================
|
||
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
|
||
Game_Interpreter.prototype.pluginCommand = function (command, args) {
|
||
_Game_Interpreter_pluginCommand.apply(this, arguments);
|
||
var pluginCommandMethod = pluginCommandMap.get(command.toUpperCase());
|
||
if (pluginCommandMethod) {
|
||
this[pluginCommandMethod](convertAllArguments(args));
|
||
}
|
||
};
|
||
|
||
Game_Interpreter.prototype.execChangeSystemSe = function (args) {
|
||
var typeIndex = getArgNumber(args.shift());
|
||
$gameSystem.setSystemSound(typeIndex, args);
|
||
};
|
||
|
||
Game_Interpreter.prototype.execResetSystemSe = function (args) {
|
||
$gameSystem.resetSystemSound(getArgNumber(args[0]));
|
||
};
|
||
|
||
//=============================================================================
|
||
// Game_System
|
||
// カスタムシステム効果音を保持します。
|
||
//=============================================================================
|
||
var _Game_System_onAfterLoad = Game_System.prototype.onAfterLoad;
|
||
Game_System.prototype.onAfterLoad = function () {
|
||
_Game_System_onAfterLoad.apply(this, arguments);
|
||
this.initSystemSound(false);
|
||
this._systemSounds.forEach(function (sound) {
|
||
if (sound) AudioManager.loadStaticSe(sound);
|
||
});
|
||
};
|
||
|
||
Game_System.prototype.initSystemSound = function () {
|
||
if (!this._systemSounds) {
|
||
this._systemSounds = [];
|
||
}
|
||
};
|
||
|
||
Game_System.prototype.setSystemSound = function (typeIndex, systemSoundArgs) {
|
||
this.initSystemSound();
|
||
var systemSound = {
|
||
name: systemSoundArgs[0] || '',
|
||
volume: getArgNumber(systemSoundArgs[1] || 90, 0, 100),
|
||
pitch: getArgNumber(systemSoundArgs[2] || 100, 50, 150),
|
||
pan: getArgNumber(systemSoundArgs[3] || 0, -100, 100)
|
||
};
|
||
this._systemSounds[typeIndex] = systemSound;
|
||
AudioManager.loadStaticSe(systemSound);
|
||
};
|
||
|
||
Game_System.prototype.resetSystemSound = function (typeIndex) {
|
||
this.initSystemSound();
|
||
this._systemSounds[typeIndex] = undefined;
|
||
};
|
||
|
||
Game_System.prototype.getSystemSound = function (typeIndex) {
|
||
return this._systemSounds && this._systemSounds[typeIndex] ? this._systemSounds[typeIndex] : null;
|
||
};
|
||
|
||
//=============================================================================
|
||
// SoundManager
|
||
// カスタムシステム効果音を演奏します。
|
||
//=============================================================================
|
||
var _SoundManager_playSystemSound = SoundManager.playSystemSound;
|
||
SoundManager.playSystemSound = function (n) {
|
||
var customSound = $gameSystem.getSystemSound(n);
|
||
if (customSound) {
|
||
AudioManager.playStaticSe(customSound);
|
||
} else {
|
||
_SoundManager_playSystemSound.apply(this, arguments);
|
||
}
|
||
};
|
||
})();
|
||
|