164 lines
No EOL
6.3 KiB
JavaScript
164 lines
No EOL
6.3 KiB
JavaScript
//
|
||
// 発動前コモン ver1.01
|
||
//
|
||
// ------------------------------------------------------
|
||
// Copyright (c) 2016 Yana
|
||
// Released under the MIT license
|
||
// http://opensource.org/licenses/mit-license.php
|
||
// ------------------------------------------------------
|
||
//
|
||
// author Yana
|
||
//
|
||
|
||
var Imported = Imported || {};
|
||
Imported['BeforeCommon'] = 1.01;
|
||
|
||
/*:
|
||
* @target MZ MV
|
||
* @url https://raw.githubusercontent.com/munokura/Yana-MV-plugins/master/Battle/BeforeCommon.js
|
||
* @plugindesc ver1.01/スキルやアイテムの発動前に、スキルやアイテムに設定されたコモンイベントを発生させます。
|
||
* @author Yana
|
||
*
|
||
* @param IndexVariableID
|
||
* @text 発動者インデックス変数ID
|
||
* @type variable
|
||
* @desc 発動者のインデックスを保存する変数IDです。
|
||
* 発動者がエネミーの場合は値に+1000されます。
|
||
* @default 11
|
||
*
|
||
* @param TargetIndexVariableID
|
||
* @text 対象インデックス変数ID
|
||
* @type variable
|
||
* @desc 対象のインデックスを保存する変数IDです。
|
||
* 対象が2体以上の場合は変数の値は-1が設定されます。
|
||
* @default 12
|
||
*
|
||
* @param ActorVariableID
|
||
* @text 発動者ID変数ID
|
||
* @type variable
|
||
* @desc 発動者のIDを保存する変数IDです。
|
||
* ?
|
||
* @default 103
|
||
*
|
||
* @help
|
||
* ムノクラ追記
|
||
* ------------------------------------------------------
|
||
* RPGツクールMZでの動作を確認。
|
||
*
|
||
* ------------------------------------------------------
|
||
* プラグインコマンドはありません。
|
||
* ------------------------------------------------------
|
||
* ------------------------------------------------------
|
||
* 設定方法
|
||
* ------------------------------------------------------
|
||
*
|
||
* スキルやアイテムのメモ欄に
|
||
* <発動前コモン:x>
|
||
* または、
|
||
* <BeforeCommon:x>
|
||
* と記述することで、スキルやアイテムが発生する前に、
|
||
* IDがx番のコモンイベントの実行を予約します。
|
||
*
|
||
* また、IndexVariableID(発動者インデックス変数ID)で指定した番号の変数に、
|
||
* 行動者のインデックスが、
|
||
* TargetIndexVariableID(対象インデックス変数ID)で指定した番号の変数に、
|
||
* 対象のインデックスが格納されます。
|
||
* ただし、対象のインデックスは対象が単体の時しか格納されず、かつ、
|
||
* エネミーの行動では、コモンを実行するタイミングで対象が決定していないため、
|
||
* 対象には-1(特定不可)が設定されます。
|
||
*
|
||
* ------------------------------------------------------
|
||
* 利用規約
|
||
* ------------------------------------------------------
|
||
* 当プラグインはMITライセンスで公開されています。
|
||
* 使用に制限はありません。商用、アダルト、いずれにも使用できます。
|
||
* 二次配布も制限はしませんが、サポートは行いません。
|
||
* 著作表示は任意です。行わなくても利用できます。
|
||
* 要するに、特に規約はありません。
|
||
* バグ報告や使用方法等のお問合せはネ実ツクールスレ、
|
||
* または、Twitterにお願いします。
|
||
* https://twitter.com/yanatsuki_/
|
||
* 素材利用は自己責任でお願いします。
|
||
*
|
||
* ------------------------------------------------------
|
||
* 更新履歴:
|
||
* ver1.01:
|
||
* 対象を保存する変数の設定を追加。
|
||
* ver1.00:
|
||
* 公開
|
||
*/
|
||
|
||
|
||
(function () {
|
||
|
||
'use strict';
|
||
|
||
////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
var parameters = PluginManager.parameters('BeforeCommon');
|
||
var indexVariableId = Number(parameters['IndexVariableID']);
|
||
var targetIndexVariableId = Number(parameters['TargetIndexVariableID']) || 0;
|
||
var actorVariableId = Number(parameters['ActorVariableID']);
|
||
|
||
////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
DataManager.isBeforeCommon = function (item) {
|
||
if (!item) { return false }
|
||
if (item.meta['発動前コモン']) { return true }
|
||
if (item.meta['BeforeCommon']) { return true }
|
||
return false;
|
||
};
|
||
|
||
DataManager.beforeCommonEffect = function (item) {
|
||
var effects = [];
|
||
if (item.meta['発動前コモン']) {
|
||
effects = Number(item.meta['発動前コモン']);
|
||
} else if (item.meta['BeforeCommon']) {
|
||
effects = Number(item.meta['BeforeCommon']);
|
||
}
|
||
return effects;
|
||
};
|
||
|
||
////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
var __BManager_startAction = BattleManager.startAction;
|
||
BattleManager.startAction = function () {
|
||
var action = this._subject.currentAction();
|
||
if (this.checkBeforeCommon(action)) { return }
|
||
__BManager_startAction.call(this);
|
||
this._execBeforeCommon = false;
|
||
};
|
||
|
||
BattleManager.checkBeforeCommon = function (action) {
|
||
if (action && !this._execBeforeCommon && DataManager.isBeforeCommon(action.item())) {
|
||
this._execBeforeCommon = true;
|
||
var beforeCommon = DataManager.beforeCommonEffect(action.item());
|
||
$gameTemp.reserveCommonEvent(beforeCommon);
|
||
var sId = this._subject.index();
|
||
var tId = action._targetIndex;
|
||
var xId = 0;
|
||
if (this._subject.isEnemy()) sId += 1000;
|
||
if (this._subject.isActor() && action.isForOpponent() && tId >= 0) tId += 1000;
|
||
if (this._subject.isEnemy() && action.isForFriend() && tId >= 0) tId += 1000;
|
||
if (action.isForUser()) tId = sId;
|
||
if (indexVariableId) $gameVariables._data[indexVariableId] = sId;
|
||
if (targetIndexVariableId) $gameVariables._data[targetIndexVariableId] = tId;
|
||
if (this._subject.isActor())xId = this._subject.actorId();
|
||
if (actorVariableId)$gameVariables._data[actorVariableId] = xId
|
||
this._phase = 'turn';
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
|
||
////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
var __GBattler_removeCurrentAction = Game_Battler.prototype.removeCurrentAction;
|
||
Game_Battler.prototype.removeCurrentAction = function () {
|
||
if (!BattleManager._execBeforeCommon) {
|
||
__GBattler_removeCurrentAction.call(this);
|
||
}
|
||
};
|
||
|
||
////////////////////////////////////////////////////////////////////////////////////
|
||
}()); |