//============================================================================= // AutoStateInBattle.js // ---------------------------------------------------------------------------- // <利用規約> // 利用はRPGツクールMV/RPGMakerMVの正規ユーザーに限られます。 // 商用、非商用、ゲームの内容を問わず利用可能です。 // ゲームへの利用の際、報告や出典元の記載等は必須ではありません。 // 二次配布や転載は禁止します。 // ソースコードURL、ダウンロードURLへの直接リンクも禁止します。 // 不具合対応以外のサポートやリクエストは受け付けておりません。 // スクリプト利用により生じたいかなる問題においても、一切責任を負いかねます。 // 不具合報告は https://twitter.com/koma_neko まで。 // ---------------------------------------------------------------------------- // Ver1.00 2016/02/21 初版 //============================================================================= /*: * @plugindesc バトル開始時に、アクターの並び位置に応じて自動的にステートを付与します。 * @author こま * * @help * 概要: * バトル開始時に、アクターの並び位置に応じて自動的にステートを付与します。 * 付与されたステートは、バトル終了時に解除されます。 * 拙作の別プラグイン「サイドビューのアクター配置設定」と組み合わせて使用するこ * とで、陣形による特殊効果のようなものを演出できます。 * * プラグインコマンド: * ASIB_SET_STATE * : バトル開始時に付与するステートと、付与する対象のリストを設定します。 * : には、付与するステートのIDを指定してください。 * : には、付与する対象(並び位置基準)を指定してください。 * : * : 使用例:ASIB_SET_STATE 10 2,3 * : > バトル開始時、隊列の3番目と4番目のアクターに、ステートID:0010の * : > ステートを付与します。 * : > 「2,3」と指定して「3番目と4番目」になることに注意してください。 * : > indexは、1番目を「0」とし、以降、+1ずつとなります。 * * ASIB_CLEAR_SETTINGS * : ステート付与の設定をクリア(全て削除)します。 */ (function(){ var pluginName = 'AutoStateInBattle'; function pluginProperty(obj) { return (obj[pluginName] = obj[pluginName] || {}); } var pprop = pluginProperty; var _Scene_Battle_start = Scene_Battle.prototype.start; Scene_Battle.prototype.start = function() { if (pprop($gameParty).targets) { for (key in pprop($gameParty).targets) { pprop($gameParty).targets[key].forEach(function(target) { if ($gameParty.members()[target]) { $gameParty.members()[target].addState(key); } }); } } _Scene_Battle_start.call(this); }; var _Scene_Battle_stop = Scene_Battle.prototype.stop; Scene_Battle.prototype.stop = function() { if (pprop($gameParty).targets) { for (key in pprop($gameParty).targets) { pprop($gameParty).targets[key].forEach(function(target) { if ($gameParty.members()[target]) { $gameParty.members()[target].removeState(key); } }); } } _Scene_Battle_stop.call(this); }; var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function (command, args) { _Game_Interpreter_pluginCommand.call (this, command, args); switch (command.toUpperCase()) { case 'ASIB_SET_STATE': pprop($gameParty).targets = pprop($gameParty).targets || {}; pprop($gameParty).targets[args[0]] = args[1].split(',').map(function(value) { return Number(value); }); break; case 'ASIB_CLEAR_SETTINGS': pprop($gameParty).targets = {}; break; } } }());