/*: @plugindesc ファストトラベル Ver0.9.9(2025/2/17) @url https://raw.githubusercontent.com/pota-gon/RPGMakerMZ/refs/heads/main/plugins/Base/Old/FastTravel.js @target MZ @author ポテトードラゴン ・アップデート情報 * Ver0.9.9 - マップIDの指定をMZ1.9.0アップデートで追加された「@type map」に対応しました - 次回アップデート(Ver1.0.0)で、「@type location」に対応するため、再設定が必要になります 旧バージョン(Ver0.9.9)は、こちら(https://raw.githubusercontent.com/pota-gon/RPGMakerMZ/refs/heads/main/plugins/Base/Old/FastTravel.js)で公開しています * Ver0.9.8 - メニュー項目に設定がないときにエラー落ちしないようにした - SE設定の共通処理を修正 - ヘルプ更新 * Ver0.9.7: 移動前コモンイベントを追加 * Ver0.9.6: メニュー表示名の設定をコンボボックスに変更 ・TODO - ページ対応 - 右にコマンド配置 - エスケープ機能実装 - エスケープ先から1歩動く機能搭載 - 移動時アニメーション・SE - ヘルプ更新 Copyright (c) 2025 ポテトードラゴン Released under the MIT License. https://opensource.org/license/mit @help ## 概要 ファストトラベルを簡単に実装します ## 使い方 @param MenuCommand @type combo @text メニュー表示名 @desc メニューの表示名 空文字でメニューに表示しません @default ファストトラベル @option ファストトラベル @param MenuSwitch @parent MenuCommand @type switch @text メニュー表示スイッチ @desc ONのときメニューにコマンドを表示します 0(なし)の場合、常にメニューへ表示します @default 0 @param DisableMenuSwitch @parent MenuCommand @type switch @text メニュー禁止スイッチ @desc ONのときコマンドの使用を禁止します @default 0 @param MapListVariable @parent MenuCommand @type variable @text 移動先マップ情報番号 @desc 移動先マップ情報の番号を管理する変数 0(なし)の場合、0番目が常に参照されます @default 0 @param mapLists @parent MenuCommand @type struct[] @text 移動先マップ情報 @param cancelSwitch @type switch @text キャンセル判定スイッチ @desc キャンセルをしたときにこのスイッチがONになります 0(なし)の場合、使用しません @default 0 @param MapIdVariable @parent mapId @type variable @text 移動先マップID記憶変数 @desc 移動先マップIDを記憶する変数 0 の場合は、移動先マップIDは記憶しません @default 0 @param X_Variable @parent MapIdVariable @type variable @text 移動先マップX座標記憶変数 @desc 移動先のマップX座標記憶変数 0 の場合は、移動先マップX座標は記憶しません @default 0 @param Y_Variable @parent MapIdVariable @type variable @text 移動先マップY座標記憶変数 @desc 移動先のマップY座標記憶変数 0 の場合は、移動先マップY座標は記憶しません @default 0 @param ExitMapIdVariable @type variable @text 出口マップID記憶変数 @desc 出口のマップIDを記憶する変数 0 の場合は、出口のマップIDは記憶しません @default 0 @param Exit_X_Variable @parent ExitMapIdVariable @type variable @text 出口マップX座標記憶変数 @desc 出口のマップX座標記憶変数 0 の場合は、出口のマップX座標は記憶しません @default 0 @param Exit_Y_Variable @parent ExitMapIdVariable @type variable @text 出口マップY座標記憶変数 @desc 出口のマップY座標記憶変数 0 の場合は、出口のマップY座標は記憶しません @default 0 @param EscapeMapIdVariable @type variable @text エスケープマップID記憶変数 @desc エスケープのマップIDを記憶する変数 0 の場合は、エスケープのマップIDは記憶しません @default 0 @param Escape_X_Variable @parent EscapeMapIdVariable @type variable @text エスケープマップX座標記憶変数 @desc エスケープのマップX座標記憶変数 0 の場合は、エスケープのマップX座標は記憶しません @default 0 @param Escape_Y_Variable @parent EscapeMapIdVariable @type variable @text エスケープマップY座標記憶変数 @desc エスケープのマップY座標記憶変数 0 の場合は、エスケープのマップY座標は記憶しません @default 0 @param MaxCols @type number @text 行き先の表示列数 @desc 行き先の表示列数 @default 1 @min 1 @max 3 @command fast_travel @text ファストトラベル @desc ファストトラベルを呼び出します @arg maps @type struct[] @text 移動先マップ情報 @command fast_travel_menu @text メニューと同じ内容を呼び出す @desc メニューと同じ内容を呼び出します */ /*~struct~MapList: @param maps @type struct[] @text 移動先マップ情報 */ /*~struct~MoveMapList: @param showSwitch @type switch @text 移動先表示スイッチ @desc このスイッチがONのときに行き先を表示します 0(なし)の場合、常に移動先が表示されます @default 0 @param hideSwitch @type switch @text 移動先非表示スイッチ @desc このスイッチがONのときに行き先を非表示にします 0(なし)の場合、常に移動先が表示されます @default 0 @param moveSwitch @type switch @text 移動判定スイッチ @desc 移動をしたときにこのスイッチがONになります 0(なし)の場合、使用しません @default 0 @param moveChangeVariable @type number @text 移動先マップ情報番号変更 @desc 移動先マップ情報の変数を変更します @default 0 @param before_common_event @type common_event @text 移動前コモンイベントID @desc 移動前のコモンイベントID コモンイベント名を指定した場合は、こちらの設定は不要です @default 0 @min 0 @param before_common_event_name @parent before_common_event @type string @text 移動前コモンイベント名 @desc 移動前のコモンイベント名(名前でコモンイベント検索) コモンイベントIDを指定した場合は、こちらの設定は不要です @param move_common_event @type common_event @text 移動後コモンイベントID @desc 移動後のコモンイベントID コモンイベント名を指定した場合は、こちらの設定は不要です @default 0 @min 0 @param move_common_event_name @parent move_common_event @type string @text 移動後コモンイベント名 @desc 移動後のコモンイベント名(名前でコモンイベント検索) コモンイベントIDを指定した場合は、こちらの設定は不要です @param move_map_name @type string @text マップ移動先名 @desc 移動先のマップ名称を指定します @param map_help @type multiline_string @text マップ説明 @desc マップについての説明 文章の表示と同様の表示が可能です @param common_event @type common_event @text コモンイベントID @desc 移動処理のコモンイベントID コモンイベント名を指定した場合は、こちらの設定は不要です @default 0 @min 0 @param common_event_name @parent common_event @type string @text コモンイベント名 @desc 移動処理のコモンイベント名(名前でコモンイベント検索) コモンイベントIDを指定した場合は、こちらの設定は不要です @param mapId @type map @text マップID @desc 移動先のマップID マップ名を指定した場合は、こちらの設定は不要です @default 0 @min 0 @param mapName @parent mapId @type string @text マップ名 @desc 移動先のマップ名 マップIDを指定した場合は、こちらの設定は不要です @param x @parent mapId @type number @text X座標 @desc 移動先のマップX座標 @default 0 @min 0 @param y @parent mapId @type number @text Y座標 @desc 移動先のマップY座標 @default 0 @min 0 @param direction @parent mapId @type select @text 向き @desc 移動先のプレイヤーの向き @default 0 @option そのまま @value 0 @option 下 @value 2 @option 左 @value 4 @option 右 @value 6 @option 上 @value 8 @param fade_type @parent mapId @type select @text フェード @desc フェードアウトとフェードインの設定 @default 0 @option 黒 @value 0 @option 白 @value 1 @option なし @value 2 @param se @parent mapId @type struct @text 場所移動SE @desc 場所移動時に再生するSE 指定しない場合、再生しません @default {"name":"Move1","volume":"90","pitch":"100","pan":"0"} @param map_id_variable @parent mapId @type variable @text 移動先マップID記憶変数 @desc 移動先マップIDを記憶するかどうか 0 の場合は、パラメータの変数を参照 @default 0 @param x_variable @parent map_id_variable @type variable @text X座標記憶変数 @desc 移動先のマップX座標記憶変数 0 の場合は、パラメータの変数を参照 @default 0 @param y_variable @parent map_id_variable @type variable @text Y座標記憶変数 @desc 移動先のマップY座標記憶変数 0 の場合は、パラメータの変数を参照 @default 0 @param exit_map_id_variable @parent mapId @type variable @text 出口マップID記憶変数 @desc 出口のマップIDを記憶する変数 0 の場合は、パラメータの変数を参照 @default 0 @param exit_x_variable @parent exit_map_id_variable @type variable @text X座標記憶変数 @desc 出口のマップX座標記憶変数 0 の場合は、パラメータの変数を参照 @default 0 @param exit_y_variable @parent exit_map_id_variable @type variable @text Y座標記憶変数 @desc 出口のマップY座標記憶変数 0 の場合は、パラメータの変数を参照 @default 0 @param escape_map_id_variable @parent mapId @type variable @text エスケープマップID記憶変数 @desc エスケープのマップIDを記憶する変数 0 の場合は、パラメータの変数を参照 @default 0 @param escape_x_variable @parent escape_map_id_variable @type variable @text X座標記憶変数 @desc エスケープのマップX座標記憶変数 0 の場合は、パラメータの変数を参照 @default 0 @param escape_y_variable @parent escape_map_id_variable @type variable @text Y座標記憶変数 @desc エスケープのマップY座標記憶変数 0 の場合は、パラメータの変数を参照 @default 0 @param boat_x @type number @text 小型船のX座標 @desc 移動先の小型船X座標 @default 0 @min 0 @param boat_y @type number @text 小型船のY座標 @desc 移動先の小型船Y座標 @default 0 @min 0 @param ship_x @type number @text 大型船のX座標 @desc 移動先の大型船X座標 @default 0 @min 0 @param ship_y @type number @text 大型船のY座標 @desc 移動先の大型船Y座標 @default 0 @min 0 @param air_ship_x @type number @text 飛行船のX座標 @desc 移動先の飛行船X座標 @default 0 @min 0 @param air_ship_y @type number @text 飛行船のY座標 @desc 移動先の飛行船Y座標 @default 0 @min 0 */ /*~struct~SE: @param name @type file @dir audio/se @text ファイル名 @desc 再生するSEのファイル名 @default Move1 @param volume @type number @text 音量 @desc 再生するSEの音量 @min 0 @max 100 @default 90 @param pitch @type number @text ピッチ @desc 再生するSEのピッチ @min 50 @max 150 @default 100 @param pan @type number @text 位相 @desc 再生するSEの位相 @min -100 @max 100 @default 0 */ (() => { 'use strict'; // ベースプラグインの処理 function Potadra_getPluginName(extension = 'js') { const reg = new RegExp(".+\/(.+)\." + extension); return decodeURIComponent(document.currentScript.src).replace(reg, '$1'); } function Potadra_checkSwitch(switch_no, bool = true) { return switch_no === 0 || $gameSwitches.value(switch_no) === bool; } function Potadra_convertAudio(struct_audio, audio_name) { if (!struct_audio) return false; let audio; try { audio = JSON.parse(struct_audio); } catch(e){ return false; } const name = audio_name ? String(audio.name || audio_name) : String(audio.name); const volume = Number(audio.volume || 90); const pitch = Number(audio.pitch || 100); const pan = Number(audio.pan || 0); return {"name": name, "volume": volume, "pitch": pitch, "pan": pan}; } function Potadra_search(data, id, column = "name", search_column = "id", val = "", initial = 1) { if (id === null || id === undefined) return val; let cache = Potadra__searchCache_get(data); if (!cache) { cache = {}; Potadra__searchCache_set(data, cache); } const key = `${search_column}:${id}`; if (key in cache) { const entry = cache[key]; return column ? entry?.[column] ?? val : entry; } let result = val; for (let i = initial; i < data.length; i++) { const item = data[i]; if (!item) continue; if (search_column && item[search_column] == id) { result = column ? item[column] : item; cache[key] = item; return result; } if (!search_column && i == id) { result = column ? item[column] : item; cache[key] = item; return result; } } cache[key] = val; return val; } function Potadra_nameSearch(data, name, column = "id", search_column = "name", val = "", initial = 1) { return Potadra_search(data, name, column, search_column, val, initial); } function Potadra_checkVariable(variable_no) { return variable_no > 0 && variable_no <= 5000; } // パラメータ用変数 const plugin_name = Potadra_getPluginName(); const params = PluginManager.parameters(plugin_name); // 各パラメータ用変数 const MenuCommand = String(params.MenuCommand); const MenuSwitch = Number(params.MenuSwitch || 0); const DisableMenuSwitch = Number(params.DisableMenuSwitch || 0); const MapListVariable = Number(params.MapListVariable || 0); const cancelSwitch = Number(params.cancelSwitch || 0); const MapIdVariable = Number(params.MapIdVariable || 0); const X_Variable = Number(params.X_Variable || 0); const Y_Variable = Number(params.Y_Variable || 0); const ExitMapIdVariable = Number(params.ExitMapIdVariable || 0); const Exit_X_Variable = Number(params.Exit_X_Variable || 0); const Exit_Y_Variable = Number(params.Exit_Y_Variable || 0); const EscapeMapIdVariable = Number(params.EscapeMapIdVariable || 0); const Escape_X_Variable = Number(params.Escape_X_Variable || 0); const Escape_Y_Variable = Number(params.Escape_Y_Variable || 0); const MaxCols = Number(params.MaxCols || 1); let MoveMapList; if (MenuCommand && params.mapLists) { const MapList = JSON.parse(params.mapLists); const map_list_number = MapListVariable === 0 ? MapListVariable : $gameVariables.value(MapListVariable); const move_map_list = JSON.parse(MapList[map_list_number]); MoveMapList = JSON.parse(move_map_list.maps); } // プラグインコマンド(ファストトラベル) PluginManager.registerCommand(plugin_name, "fast_travel", args => { const move_map_lists = JSON.parse(args.maps); SceneManager.push(Scene_FastTravel); SceneManager.prepareNextScene(move_map_lists); }); // プラグインコマンド(メニューと同じ設定を呼び出す) PluginManager.registerCommand(plugin_name, "fast_travel_menu", args => { SceneManager.push(Scene_FastTravel); SceneManager.prepareNextScene(MoveMapList); }); /** * 強制的に乗り物から降りる * 現在乗り物に乗っていることが前提 * * @returns {} */ function forceGetOffVehicle() { if ($gamePlayer.isInAirship()) { $gamePlayer.vehicle()._altitude = 0; $gamePlayer.setDirection(2); } $gamePlayer.vehicle().getOff(); $gamePlayer._vehicleGettingOff = false; $gamePlayer._vehicleType = "walk"; $gamePlayer.setTransparent(false); $gamePlayer.setMoveSpeed(4); $gamePlayer.setThrough(false); return $gamePlayer._vehicleGettingOff; } /** * ファストトラベル画面の処理を行うクラスです * * @class */ class Scene_FastTravel extends Scene_MenuBase { /** * 準備 * * @param {} move_map_lists - マップ移動先の一覧 */ prepare(moveMapLists) { this._moveMapLists = []; if (moveMapLists) { for (const value of moveMapLists) { const map_data = JSON.parse(value); const showSwitch = Number(map_data.showSwitch || 0); const hideSwitch = Number(map_data.hideSwitch || 0); if (Potadra_checkSwitch(showSwitch) && Potadra_checkSwitch(hideSwitch, false)) { this._moveMapLists.push(map_data); } } } } /** * */ create() { super.create(); // キャンセル判定スイッチ if (cancelSwitch !== 0) { $gameSwitches.setValue(cancelSwitch, false); } this.createHelpWindow(); this.createFastTravelWindow(); } /** * */ createFastTravelWindow() { const rect = this.fastTravelWindowRect(); this._fastTravelWindow = new Window_FastTravel(rect); this._fastTravelWindow.setHandler('ok', this.commandMap.bind(this)); this._fastTravelWindow.setHandler("cancel", this.onCancel.bind(this)); this._fastTravelWindow.setupMapLists(this._moveMapLists); this._fastTravelWindow.setHelpWindow(this._helpWindow); this.addWindow(this._fastTravelWindow); } /** * * * @returns {} */ fastTravelWindowRect() { const wx = 0; const wy = this.helpAreaTop(); const ww = Graphics.boxWidth / 3; const wh = Graphics.boxHeight - this.buttonAreaHeight(); return new Rectangle(wx, wy, ww, wh); } /** * ヘルプ下部表示モード * * @returns {} */ isBottomHelpMode() { return false; } /** * * * @returns {} */ helpWindowRect() { const wx = Graphics.boxWidth / 3; const wy = this.helpAreaTop(); const ww = (Graphics.boxWidth / 3) * 2; const wh = Graphics.boxHeight - this.buttonAreaHeight(); return new Rectangle(wx, wy, ww, wh); } // onPersonalCancel でも良いが、メニュー以外からも呼び出したいのでこの実装 onCancel() { // キャンセル判定スイッチ if (cancelSwitch !== 0) { $gameSwitches.setValue(cancelSwitch, true); } this.popScene(); } /** * コマンド[マップ移動] */ commandMap() { const map_data = this._moveMapLists[this._fastTravelWindow.index()]; const moveSwitch = Number(map_data.moveSwitch || 0); const moveChangeVariable = Number(map_data.moveChangeVariable || 0); const common_event_name = String(map_data.common_event_name); const before_common_event_name = String(map_data.before_common_event_name); const move_common_event_name = String(map_data.move_common_event_name); const mapName = String(map_data.mapName); const x = Number(map_data.x || 0); const y = Number(map_data.y || 0); const direction = Number(map_data.direction || 0); const fade_type = Number(map_data.fade_type || 0); const se = Potadra_convertAudio(map_data.se, 'Move1'); const boat_x = Number(map_data.boat_x || 0); const boat_y = Number(map_data.boat_y || 0); const ship_x = Number(map_data.ship_x || 0); const ship_y = Number(map_data.ship_y || 0); const air_ship_x = Number(map_data.air_ship_x || 0); const air_ship_y = Number(map_data.air_ship_y || 0); let common_event = Number(map_data.common_event || 0); let before_common_event = Number(map_data.before_common_event || 0); let move_common_event = Number(map_data.move_common_event || 0); let mapId = Number(map_data.mapId || 0); let map_id_variable = Number(map_data.map_id_variable || 0); let x_variable = Number(map_data.x_variable || 0); let y_variable = Number(map_data.y_variable || 0); let exit_map_id_variable = Number(map_data.exit_map_id_variable || 0); let exit_x_variable = Number(map_data.exit_x_variable || 0); let exit_y_variable = Number(map_data.exit_y_variable || 0); let escape_map_id_variable = Number(map_data.escape_map_id_variable || 0); let escape_x_variable = Number(map_data.escape_x_variable || 0); let escape_y_variable = Number(map_data.escape_y_variable || 0); if (map_id_variable === 0) map_id_variable = MapIdVariable; if (x_variable === 0) x_variable = X_Variable; if (y_variable === 0) y_variable = Y_Variable; if (exit_map_id_variable === 0) exit_map_id_variable = ExitMapIdVariable; if (exit_x_variable === 0) exit_x_variable = Exit_X_Variable; if (exit_y_variable === 0) exit_y_variable = Exit_Y_Variable; if (escape_map_id_variable === 0) escape_map_id_variable = EscapeMapIdVariable; if (escape_x_variable === 0) escape_x_variable = Escape_X_Variable; if (escape_y_variable === 0) escape_y_variable = Escape_Y_Variable; if (mapId === 0 && mapName) { mapId = Potadra_nameSearch($dataMapInfos, mapName, 'id', 'name', 1); } SceneManager.goto(Scene_Map); // 乗る動作の途中(乗ったことにする) if ($gamePlayer._vehicleGettingOn) { $gamePlayer._vehicleGettingOn = false; } // 乗り物に乗っている(強制的に降ろす) if ($gamePlayer.isInVehicle()) { forceGetOffVehicle(); } // 小型船 let boatX = boat_x; let boatY = boat_y; if (boat_x === 0) boatX = $dataSystem.boat.startX; if (boat_y === 0) boatY = $dataSystem.boat.startY; // 大型船 let shipX = ship_x; let shipY = ship_y; if (ship_x === 0) shipX = $dataSystem.ship.startX; if (ship_y === 0) shipY = $dataSystem.ship.startY; // 飛行船 let airX = air_ship_x; let airY = air_ship_y; if (air_ship_x === 0) airX = $dataSystem.airship.startX; if (air_ship_y === 0) airY = $dataSystem.airship.startY; // 乗り物の位置設定 $gameMap.boat().setPosition(boatX, boatY); $gameMap.ship().setPosition(shipX, shipY); $gameMap.airship().setPosition(airX, airY); // 移動先記憶 if (map_id_variable !== 0) $gameVariables.setValue(map_id_variable, mapId); if (x_variable !== 0) $gameVariables.setValue(x_variable, x); if (y_variable !== 0) $gameVariables.setValue(y_variable, y); // 出口記憶 if (exit_map_id_variable !== 0) $gameVariables.setValue(exit_map_id_variable, $gameMap._mapId); if (exit_x_variable !== 0) $gameVariables.setValue(exit_x_variable, $gamePlayer.x); if (exit_y_variable !== 0) $gameVariables.setValue(exit_y_variable, $gamePlayer.y); if (before_common_event === 0 && before_common_event_name) { before_common_event = Potadra_nameSearch($dataCommonEvents, before_common_event_name, 'id', 'name', 0); } if (before_common_event !== 0) { $gameTemp.reserveCommonEvent(before_common_event); } if (common_event === 0 && common_event_name) { common_event = Potadra_nameSearch($dataCommonEvents, common_event_name, 'id', 'name', 0); } if (common_event === 0) { if (se) AudioManager.playSe(se); $gameMap._interpreter.command201([0, mapId, x, y, direction, fade_type]); } else { $gameTemp.reserveCommonEvent(common_event); } if (move_common_event === 0 && move_common_event_name) { move_common_event = Potadra_nameSearch($dataCommonEvents, move_common_event_name, 'id', 'name', 0); } if (move_common_event !== 0) { $gameTemp.reserveCommonEvent(move_common_event); } // 移動判定スイッチ if (moveSwitch !== 0) { $gameSwitches.setValue(moveSwitch, true); } // 移動先マップ情報番号変更 if (Potadra_checkVariable(MapListVariable)) { $gameVariables.setValue(MapListVariable, moveChangeVariable); } } } if (MenuCommand) { /** * メニュー画面で表示するコマンドウィンドウです。 * * @class */ /** * 独自コマンドの追加用 */ const _Window_MenuCommand_addOriginalCommands = Window_MenuCommand.prototype.addOriginalCommands; Window_MenuCommand.prototype.addOriginalCommands = function() { _Window_MenuCommand_addOriginalCommands.apply(this, arguments); if (Potadra_checkSwitch(MenuSwitch)) { this.addCommand(MenuCommand, "fast_travel_menu", Potadra_checkSwitch(DisableMenuSwitch, false)); } }; /** * メニュー画面の処理を行うクラスです。 * * @class */ /** * コマンドウィンドウの作成 */ const _Scene_Menu_createCommandWindow = Scene_Menu.prototype.createCommandWindow; Scene_Menu.prototype.createCommandWindow = function() { _Scene_Menu_createCommandWindow.apply(this, arguments); this._commandWindow.setHandler("fast_travel_menu", this.fast_travel_menu.bind(this)); }; /** * コマンド[ファストトラベル] */ Scene_Menu.prototype.fast_travel_menu = function() { SceneManager.push(Scene_FastTravel); SceneManager.prepareNextScene(MoveMapList); }; } /** * ファストトラベル画面の表示を行うウィンドウクラスです * * @class */ class Window_FastTravel extends Window_Command { /** * 桁数の取得 * * @returns {number} 桁数 */ maxCols() { return MaxCols; } /** * ヘルプテキスト更新 */ updateHelp() { super.updateHelp(); const map_data = this._data[this.index()]; if (map_data) this._helpWindow.setText(map_data.map_help); } /** * 行き先マップ一覧を設定 * * @param {} moveMapLists - */ setupMapLists(moveMapLists) { this._data = moveMapLists; this.refresh(); this.select(0); } /* * コマンドリストの作成 */ makeCommandList() { if (this._data) { for (const map_data of this._data) { const move_map_name = String(map_data.move_map_name); const mapName = String(map_data.mapName); const common_event_name = String(map_data.common_event_name); let mapId = Number(map_data.mapId || 0); let common_event = Number(map_data.common_event || 0); let command_name; if (mapId === 0 && mapName) { mapId = Potadra_nameSearch($dataMapInfos, mapName, 'id', 'name', 1); } if (common_event === 0 && common_event_name) { common_event = Potadra_nameSearch($dataCommonEvents, common_event_name, 'id', 'name', 0); } if (common_event !== 0) command_name = $dataCommonEvents[common_event].name; if (mapId !== 0) command_name = $dataMapInfos[mapId].name || mapId; if (move_map_name) command_name = move_map_name; this.addCommand(command_name, "map"); } } } } })();