/*: * @target MZ * @plugindesc \STATE[n] でステートのメモ欄、\SKILL[n] でスキルの説明欄を表示(<タグ> 除去)。v1.1.0 * @author Umu * * @help * ■ 使い方 * イベントの「文章の表示」に以下のように記述してください。 * \STATE[10] # ステート ID10 のメモ欄テキストを挿入 * \SKILL[25] # スキル ID25 の説明テキストを挿入 * * メモ欄・説明欄に改行があれば、そのまま改行されます。 * <タグ> で囲まれた部分はすべて削除されます。 * * ■ 仕様 * ・Window_Base.convertEscapeCharacters の処理後に、独自制御文字を追加で処理します。 * ・制御文字は大文字小文字を問いません(例: \skill[1] も可)。 * ・無効な ID や空文字の場合は空文字列を返します。 * * ●\STATE[n] : $dataStates[n].note を取得し、/<[^>]*>/g で <タグ> を除去 * ●\SKILL[n] : $dataSkills[n].description を取得し、同様に <タグ> を除去 * * プラグインコマンド・パラメータはありません。 * * ■ 利用規約 * MIT ライセンス (LICENSE.txt 同梱) */ (() => { 'use strict'; /** <タグ> を取り除くための正規表現 */ const TAG_REGEX = /<[^>]*>/g; /** 元の convertEscapeCharacters を保持 */ const _convertEscapeCharacters = Window_Base.prototype.convertEscapeCharacters; /** * 文章中の制御文字を変換 * @param {string} text * @returns {string} */ Window_Base.prototype.convertEscapeCharacters = function (text) { // 既存の制御文字を最初に処理 text = _convertEscapeCharacters.call(this, text); // \SKILL[n] — スキル説明欄を挿入 text = text.replace(/\x1bSKILL\[(\d+)]/gi, (_, p1) => { const id = Number(p1); const skill = $dataSkills[id]; if (skill && typeof skill.description === 'string') { return skill.description.replace(TAG_REGEX, '').trim(); } return ''; }); // \STATE[n] — ステートメモ欄を挿入(既存機能) text = text.replace(/\x1bSTATE\[(\d+)]/gi, (_, p1) => { const id = Number(p1); const state = $dataStates[id]; if (state && typeof state.note === 'string') { return state.note.replace(TAG_REGEX, '').trim(); } return ''; }); return text; }; })();