do-disciplinary-committee-m.../www/js/plugins/MW_StateDisableLog.js
2025-05-04 14:43:03 -05:00

48 lines
No EOL
2 KiB
JavaScript

/*:
* @plugindesc ステートが無効化された場合にバトルログに表示します。
* @author みるきーうぇい
*
* @param StateDisableMessage
* @text 無効化メッセージ
* @desc ステートが無効化された際に表示するメッセージ。
* 使用可能な変数: {target}, {state}
* @default \I[1023]\C[7]{target}は{state}にならない!\C[0]
*
* @help
* このプラグインは、エネミーやアクターにステート付与を試みた際、
* 対象がそのステートを無効化する特徴を持っている場合にバトルログに
* 指定されたメッセージを表示するようにします。
*
* プラグインコマンドはありません。
*/
(function() {
const parameters = PluginManager.parameters('MW_StateDisableLog');
const stateDisableMessage = parameters['StateDisableMessage'] || "\\I[1023]\\C[7]{target}は{state}にならない!\\C[0]";
const _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
_Game_Action_apply.call(this, target);
// ステート付与無効化のログ表示
if (this.item() && this.isSkillOrItem()) {
const states = this.item().effects
.filter(effect => effect.code === Game_Action.EFFECT_ADD_STATE)
.map(effect => effect.dataId);
states.forEach(stateId => {
if (target.isStateResist(stateId)) {
const stateName = $dataStates[stateId].name;
const targetName = target.name();
const message = stateDisableMessage.replace('{target}', targetName).replace('{state}', stateName);
BattleManager._logWindow.push('addText', message);
$gameTemp.reserveCommonEvent(144);
}
});
}
};
Game_Action.prototype.isSkillOrItem = function() {
return DataManager.isSkill(this.item()) || DataManager.isItem(this.item());
};
})();