63 lines
No EOL
2.8 KiB
JavaScript
63 lines
No EOL
2.8 KiB
JavaScript
/*:
|
||
* @target MZ
|
||
* @plugindesc 特定のステートが付与されている時、逃走コマンドを無効化します。
|
||
* @author あなたの名前
|
||
* @version 1.0.0
|
||
*
|
||
* @param disableStateIds
|
||
* @text 逃走不可ステートID
|
||
* @desc このリストに含まれるステートIDがパーティの誰かに付与されていると、「逃げる」が選択できなくなります。
|
||
* @type state[]
|
||
* @default []
|
||
*
|
||
* @help DisableEscapeOnState.js
|
||
*
|
||
* このプラグインは、戦闘中のパーティコマンド「逃げる」を特定の条件下で
|
||
* 選択できなくします。
|
||
*
|
||
* 【使い方】
|
||
* 1. プラグイン管理画面でこのプラグインをONにします。
|
||
* 2. プラグインパラメータ「逃走不可ステートID」を開き、
|
||
* 逃走を禁止したいステートをリストから選択してください。
|
||
* (複数選択可能です)
|
||
*
|
||
* これで、設定したステートにかかっているアクターがパーティに一人でもいる場合、
|
||
* 戦闘中に「逃げる」コマンドがグレーアウトされ、選択できなくなります。
|
||
*
|
||
* 例えば、ステートID:4「睡眠」とID:5「混乱」を指定した場合、
|
||
* パーティの誰かが「睡眠」または「混乱」状態だと逃げられなくなります。
|
||
*/
|
||
|
||
(() => {
|
||
'use strict';
|
||
|
||
const pluginName = "DisableEscapeOnState";
|
||
const parameters = PluginManager.parameters(pluginName);
|
||
const disableStateIds = JSON.parse(parameters.disableStateIds || '[]').map(Number);
|
||
|
||
if (disableStateIds.length > 0) {
|
||
// BattleManager.canEscape の処理を上書き(オーバーライド)
|
||
const _BattleManager_canEscape = BattleManager.canEscape;
|
||
BattleManager.canEscape = function() {
|
||
// 元々の逃走可能判定(イベントでの戦闘で逃走不可などが設定されていないか)
|
||
const originalCanEscape = _BattleManager_canEscape.call(this);
|
||
if (!originalCanEscape) {
|
||
return false;
|
||
}
|
||
|
||
// パーティメンバーの中に、指定されたステートにかかっている者がいるかチェック
|
||
const isAnyMemberAffected = $gameParty.members().some(actor => {
|
||
// actor.isStateAffected(stateId) で、そのアクターがステートにかかっているか判定
|
||
return disableStateIds.some(stateId => actor.isStateAffected(stateId));
|
||
});
|
||
|
||
// 誰かが指定ステートにかかっていたら、false(逃走不可)を返す
|
||
if (isAnyMemberAffected) {
|
||
return false;
|
||
}
|
||
|
||
// 全ての条件をクリアした場合、true(逃走可能)を返す
|
||
return true;
|
||
};
|
||
}
|
||
})(); |