one-winged-sinope/js/plugins/MPP_ResistMessage.js
2026-02-06 16:16:37 -06:00

157 lines
5.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.

//=============================================================================
// MPP_ResistMessage.js
//=============================================================================
// Copyright (c) 2018 - 2021 Mokusei Penguin
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//=============================================================================
/*:
* @target MV MZ
* @plugindesc You can set the message to be displayed when the state that the target of the skill or item tried to add is invalidated.
* @author Mokusei Penguin
* @url
*
* @help [version 1.1.0]
* This plugin is for RPG Maker MV and MZ.
*
* ▼ State note
* <ResMsg:text>
* text : Message to display when disabled
* - The displayed message will be [Target name + text].
* - This message is displayed when this state is invalidated,
* regardless of the success or failure of the other states.
*
* ▼ Plugin parameters
* State Resist Message
* - This message is displayed when all the states you are trying
* to grant are invalidated.
* - If <ResMsg: text> invalidates the state in which the message was set,
* this message will not be displayed.
*
* ================================
* Mail : wood_penguinyahoo.co.jp ( is half-width)
* Blog : http://woodpenguin.blog.fc2.com/
* License : MIT license
*
* @param State Resist Message
* @desc Message displayed when all the states you tried to grant are invalidated
* @default It didn't work for %1!
*
*/
/*:ja
* @target MV MZ
* @plugindesc スキル・アイテムの対象が付加しようとしたステートを無効化した際に表示するメッセージを設定できます。
* @author 木星ペンギン
* @url
*
* @help [version 1.1.0]
* このプラグインはRPGツクールMVおよびMZ用です。
*
* ▼ ステートのメモ欄
* <ResMsg:text>
* text : 無効化された際に表示するメッセージ
* - 表示されるメッセージは [対象者の名前 + text] となります。
* - このメッセージは他のステートの成否にかかわらず、
* このステートが無効化された場合に表示されます。
*
* ▼ プラグインパラメータ
* ステート無効化メッセージ
* - 付与しようとしたステートが全て無効化された場合に表示されるメッセージです。
* - <ResMsg:text>によってメッセージが設定されたステートが無効化された場合、
* このメッセージは表示されません。
*
* ================================
* Mail : wood_penguinyahoo.co.jp (@は半角)
* Blog : http://woodpenguin.blog.fc2.com/
* License : MIT license
*
* @param State Resist Message
* @text ステート無効化メッセージ
* @desc 付与しようとした全てのステートが無効化された場合に表示されるメッセージ
* @default %1には効かなかった
*
*/
(() => {
'use strict';
const pluginName = 'MPP_ResistMessage';
// Plugin Parameters
const parameters = PluginManager.parameters(pluginName);
const param_StateResistMessage = parameters['State Resist Message'];
//-------------------------------------------------------------------------
// Game_ActionResult
const _Game_ActionResult_clear = Game_ActionResult.prototype.clear;
Game_ActionResult.prototype.clear = function() {
_Game_ActionResult_clear.apply(this, arguments);
this.mppResistStates = [];
};
const _Game_ActionResult_isStatusAffected = Game_ActionResult.prototype.isStatusAffected;
Game_ActionResult.prototype.isStatusAffected = function() {
return (
_Game_ActionResult_isStatusAffected.apply(this, arguments) ||
this.mppResistStates.length > 0
);
};
Game_ActionResult.prototype.mppResistStateObjects = function() {
return this.mppResistStates.map(id => $dataStates[id]);
};
Game_ActionResult.prototype.pushMppResistState = function(stateId) {
if (!this.mppResistStates.includes(stateId)) {
this.mppResistStates.push(stateId);
}
};
//-------------------------------------------------------------------------
// Game_Battler
const _Game_Battler_addState = Game_Battler.prototype.addState;
Game_Battler.prototype.addState = function(stateId) {
if (this.isAlive() && !this.isStateAddable(stateId)) {
this._result.pushMppResistState(stateId);
}
_Game_Battler_addState.apply(this, arguments);
};
//-------------------------------------------------------------------------
// Window_BattleLog
const _Window_BattleLog_displayChangedStates = Window_BattleLog.prototype.displayChangedStates;
Window_BattleLog.prototype.displayChangedStates = function(target) {
_Window_BattleLog_displayChangedStates.apply(this, arguments);
this.displayMppResistStates(target);
};
Window_BattleLog.prototype.displayMppResistStates = function(target) {
const result = target.result();
const states = result.mppResistStateObjects();
if (states.length > 0) {
const messages = states.map(st => st.meta.ResMsg).filter(Boolean);
for (const msg of messages) {
this.push('popBaseLine');
this.push('pushBaseLine');
this.push('addText', target.name() + msg);
this.push('waitForEffect');
}
if (
messages.length === 0 &&
!_Game_ActionResult_isStatusAffected.call(result)
) {
const text = param_StateResistMessage.format(target.name());
this.push('popBaseLine');
this.push('pushBaseLine');
this.push('addText', text);
this.push('waitForEffect');
}
}
};
})();