70 lines
2.6 KiB
JavaScript
70 lines
2.6 KiB
JavaScript
/*:
|
||
* @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;
|
||
};
|
||
})();
|
||
|