pure-full-lily/js/plugins/MoveToTaggedEvent.js
2025-09-16 10:12:44 -05:00

71 lines
3 KiB
JavaScript
Raw 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.

/*:
* @target MZ
* @plugindesc タグ付きイベントへ移動するプラグイン
* @author IvI
*
* @help
* 【使い方】
* 1. このプラグインをプロジェクトのjs/pluginsフォルダに配置し、
* プラグイン管理から読み込みます。
* 2. イベントのメモ欄に、下記のようにタグを記述します。
* 例: <Treasure>
* 3. イベントコマンド「プラグインコマンド」から、
* 「タグ付きイベントへ移動」コマンドを選択し、タグ名を入力します。
* 4. 該当タグを持つ最初のイベントの座標へプレイヤーを移動します。
*
* もし同じタグを持つイベントが複数ある場合、最初に見つかったイベントが対象となります。
* タグを持つイベントが見つからなかった場合は、場所移動は行われません。
*
* @command moveToTaggedEvent
* @text タグ付きイベントへ移動
* @desc イベントのメモ欄に指定したタグを検索し、そのイベントへプレイヤーを移動します。
*
* @arg tag
* @text タグ名
* @desc イベントのメモ欄に書かれているタグを指定してください。例Treasure
* @default
*/
(() => {
'use strict';
// プラグインコマンド登録
PluginManager.registerCommand(document.currentScript.src.match(/([^/]+)\.js$/)[1],
"moveToTaggedEvent",
args => {
const tagName = args.tag.trim();
if (!tagName) {
console.warn("タグ名が指定されていません。");
return;
}
// カレントマップ内のイベント一覧を取得
const events = $dataMap.events;
if (!events) {
console.warn("イベントデータが取得できませんでした。");
return;
}
// タグが含まれるイベントを検索(メモ欄に <タグ名> と書かれているか)
const targetEvent = events.find(e => {
return e && e.note && e.note.includes(`<${tagName}>`);
});
// 見つからなければ処理終了
if (!targetEvent) {
console.warn(`タグ「${tagName}」を持つイベントが見つかりませんでした。`);
return;
}
// 場所移動を実行(向き:保持、フェード:なし)
// 向きやフェードを変更したい場合は、第4引数・第5引数を変更してください。
$gamePlayer.reserveTransfer(
$gameMap.mapId(), // 現在のマップID
targetEvent.x, // イベントのX座標
targetEvent.y, // イベントのY座標
$gamePlayer.direction(), // プレイヤーの向き(保持する場合)
0 // フェード(0=なし, 1=白, 2=黒)
);
}
);
})();