(function () { //##################### メニューの背景変える ##################### Scene_Menu.prototype.createBackground = function () { this._backgroundSprite = new Sprite(); this._backgroundSprite.bitmap = ImageManager.loadSystem("menu_back"); //アクターidが若い順に var party = $gameParty.allMembers(); var sira = party.find(function (e) { return e._name == "Shirayuki"; }); var yozu = party.find(function (e) { return e._name == "Yotsuru"; }); if (sira) { var sp = new Sprite(); sp.bitmap = ImageManager.loadSystem("menu_sira"); sp.x = 0; sp.y = 33; this._backgroundSprite.addChild(sp); } if (yozu) { var sp = new Sprite(); sp.bitmap = ImageManager.loadSystem("menu_yozu"); sp.x = Graphics.width - 447; sp.y = 33; this._backgroundSprite.addChild(sp); } var sp = new Sprite(); sp.bitmap = ImageManager.loadSystem("menu_label"); sp.x = 0; sp.y = Graphics.height - 50; this._backgroundSprite.addChild(sp); var sp = new Sprite(new Bitmap(Graphics.width, 50)); sp.x = 0; sp.y = 666; sp.bitmap.fontSize = 22; sp.bitmap.textColor = "#FFFFFF"; var data_map_name_list = [ { id: 3, disp_name: "プロローグ" }, { id: 4, disp_name: "軍人基地" }, { id: 5, disp_name: "軍人基地" }, { id: 6, disp_name: "どこかの繁華街" }, { id: 7, disp_name: "墓地" }, { id: 8, disp_name: "我孫子の研究室" }, { id: 9, disp_name: "郊外のホテル" }, { id: 10, disp_name: "アイリスアカデミー" }, { id: 11, disp_name: "アイリスアカデミー" }, { id: 12, disp_name: "アイリスアカデミー" }, { id: 13, disp_name: "アイリスアカデミー" }, { id: 14, disp_name: "アイリスアカデミー" }, { id: 15, disp_name: "アイリスアカデミー" }, { id: 16, disp_name: "アイリスアカデミー" }, { id: 17, disp_name: "アイリスアカデミー" }, { id: 18, disp_name: "アイリスアカデミー" }, { id: 19, disp_name: "アイリスアカデミー" }, { id: 20, disp_name: "アイリスアカデミー" }, { id: 21, disp_name: "アイリスアカデミー" }, { id: 22, disp_name: "アイリスアカデミー" }, { id: 23, disp_name: "アイリスアカデミー" }, { id: 24, disp_name: "アイリスアカデミー" }, { id: 25, disp_name: "アイリスアカデミー" }, { id: 26, disp_name: "アイリスアカデミー" }, { id: 27, disp_name: "アイリスアカデミー" }, { id: 28, disp_name: "アイリスアカデミー" }, { id: 29, disp_name: "アイリスアカデミー" }, { id: 30, disp_name: "アイリスアカデミー" }, { id: 31, disp_name: "アイリスアカデミー" }, { id: 32, disp_name: "アイリスアカデミー" }, { id: 33, disp_name: "アイリスアカデミー" }, { id: 34, disp_name: "アイリスアカデミー" }, { id: 35, disp_name: "アイリスアカデミー" }, { id: 36, disp_name: "アイリスアカデミー" }, { id: 37, disp_name: "アイリスアカデミー" }, { id: 38, disp_name: "アイリスアカデミー" }, { id: 39, disp_name: "アイリスアカデミー" }, { id: 40, disp_name: "アイリスアカデミー" }, { id: 41, disp_name: "アイリスアカデミー" }, { id: 42, disp_name: "アイリスアカデミー" }, { id: 43, disp_name: "アイリスアカデミー" }, { id: 44, disp_name: "アカデミー女子寮" }, { id: 45, disp_name: "アカデミー女子寮" }, { id: 46, disp_name: "アカデミー女子寮" }, { id: 47, disp_name: "アカデミー女子寮" }, { id: 48, disp_name: "アカデミー女子寮" }, { id: 49, disp_name: "アカデミー女子寮" }, { id: 50, disp_name: "アカデミー女子寮" }, { id: 51, disp_name: "アカデミー女子寮" }, { id: 52, disp_name: "アカデミー男子寮" }, { id: 53, disp_name: "アカデミー男子寮" }, { id: 54, disp_name: "アカデミー男子寮" }, { id: 55, disp_name: "アカデミー男子寮" }, { id: 56, disp_name: "アカデミー男子寮" }, { id: 57, disp_name: "アイリスアカデミー" }, { id: 58, disp_name: "アイリスアカデミー" }, { id: 59, disp_name: "試練の洞窟" }, { id: 60, disp_name: "試練の洞窟" }, { id: 61, disp_name: "試練の洞窟" }, { id: 62, disp_name: "試練の洞窟" }, { id: 63, disp_name: "試練の洞窟" }, { id: 64, disp_name: "奥多田山" }, { id: 65, disp_name: "奥多田山" }, { id: 66, disp_name: "奥多田山" }, { id: 67, disp_name: "奥多田山" }, { id: 68, disp_name: "奥多田山" }, { id: 69, disp_name: "奥多田山" }, { id: 70, disp_name: "奥多田山" }, { id: 71, disp_name: "奥多田山" }, { id: 72, disp_name: "神宿" }, { id: 73, disp_name: "神宿" }, { id: 74, disp_name: "神宿" }, { id: 75, disp_name: "神宿" }, { id: 76, disp_name: "神宿" }, { id: 77, disp_name: "神宿" }, { id: 78, disp_name: "神宿" }, { id: 79, disp_name: "神宿" }, { id: 80, disp_name: "神宿" }, { id: 81, disp_name: "魔物研究所" }, { id: 82, disp_name: "神宿" }, { id: 83, disp_name: "神宿" }, { id: 84, disp_name: "神宿" }, { id: 85, disp_name: "神宿" }, { id: 86, disp_name: "千々武洞窟" }, { id: 87, disp_name: "千々武洞窟" }, { id: 88, disp_name: "千々武洞窟" }, { id: 89, disp_name: "千々武洞窟" }, { id: 90, disp_name: "千々武洞窟" }, { id: 91, disp_name: "千々武洞窟" }, { id: 92, disp_name: "尾鹿の森" }, { id: 93, disp_name: "禍舞鬼町" }, { id: 94, disp_name: "禍舞鬼町" }, { id: 95, disp_name: "禍舞鬼町" }, { id: 96, disp_name: "禍舞鬼町" }, { id: 97, disp_name: "津久場岳" }, { id: 98, disp_name: "津久場岳" }, { id: 99, disp_name: "津久場岳" }, { id: 100, disp_name: "津久場岳" }, { id: 101, disp_name: "津久場岳" }, { id: 102, disp_name: "津久場岳" }, { id: 103, disp_name: "津久場岳" }, { id: 104, disp_name: "アイリス本部" }, { id: 105, disp_name: "アイリス本部" }, { id: 106, disp_name: "アイリス本部" }, { id: 107, disp_name: "アイリス本部" }, { id: 108, disp_name: "アイリス本部" }, { id: 109, disp_name: "アイリス本部" }, { id: 110, disp_name: "アイリス本部" }, { id: 111, disp_name: "アイリス本部" }, { id: 112, disp_name: "アイリス本部" }, { id: 113, disp_name: "アイリス本部" }, { id: 114, disp_name: "アイリス本部" }, { id: 115, disp_name: "アイリスダンジョン" }, { id: 116, disp_name: "アイリスダンジョン" }, { id: 117, disp_name: "アイリスダンジョン" }, { id: 118, disp_name: "アイリスダンジョン" }, { id: 119, disp_name: "アイリスダンジョン" }, { id: 120, disp_name: "一ノ谷釣り公園" }, { id: 121, disp_name: "一ノ谷釣り公園" }, { id: 122, disp_name: "一ノ谷釣り公園" }, { id: 123, disp_name: "一ノ谷釣り公園" }, { id: 124, disp_name: "一ノ谷釣り公園" }, { id: 125, disp_name: "一ノ谷釣り公園" }, { id: 126, disp_name: "禍舞鬼町廃ビル" }, { id: 127, disp_name: "禍舞鬼町廃ビル" }, { id: 128, disp_name: "禍舞鬼町廃ビル" }, { id: 129, disp_name: "禍舞鬼町廃ビル" }, { id: 130, disp_name: "禍舞鬼町廃ビル" }, { id: 131, disp_name: "禍舞鬼町廃ビル" }, { id: 132, disp_name: "禍舞鬼町廃ビル" }, { id: 133, disp_name: "禍舞鬼町廃ビル" }, { id: 134, disp_name: "赤城峠" }, { id: 135, disp_name: "赤城峠" }, { id: 136, disp_name: "赤城峠" }, { id: 137, disp_name: "赤城峠" }, { id: 138, disp_name: "赤城峠" }, { id: 139, disp_name: "赤城峠" }, { id: 140, disp_name: "明郷埠頭" }, { id: 141, disp_name: "明郷埠頭" }, { id: 142, disp_name: "明郷埠頭" }, { id: 143, disp_name: "渋野" }, { id: 144, disp_name: "渋野" }, { id: 145, disp_name: "ルービック" }, { id: 146, disp_name: "ルービック" }, { id: 147, disp_name: "ルービック" }, { id: 148, disp_name: "ルービック" }, { id: 149, disp_name: "ルービック" }, { id: 150, disp_name: "青井山墓地" }, { id: 151, disp_name: "青井山墓地" }, { id: 152, disp_name: "青井山墓地" }, { id: 153, disp_name: "青井山墓地" }, { id: 154, disp_name: "白川研究所跡" }, { id: 155, disp_name: "白川研究所跡" }, { id: 156, disp_name: "白川研究所跡" }, { id: 157, disp_name: "白川研究所跡" }, { id: 158, disp_name: "白川研究所跡" }, { id: 159, disp_name: "白川研究所跡" }, { id: 160, disp_name: "センターホテル" }, { id: 161, disp_name: "センターホテル" }, { id: 162, disp_name: "センターホテル" }, { id: 163, disp_name: "センターホテル" }, { id: 164, disp_name: "センターホテル" }, { id: 165, disp_name: "センターホテル" }, { id: 166, disp_name: "センターホテル" }, { id: 167, disp_name: "センターホテル" }, { id: 168, disp_name: "禍舞鬼町" }, { id: 169, disp_name: "ネクサスフューチャーのアジト" }, { id: 170, disp_name: "ネクサスフューチャーのアジト" }, { id: 171, disp_name: "ネクサスフューチャーのアジト" }, { id: 172, disp_name: "ネクサスフューチャーのアジト" }, { id: 173, disp_name: "エロドールダンジョン" }, { id: 174, disp_name: "エロドールダンジョン" }, { id: 175, disp_name: "エロドールダンジョン" }, { id: 176, disp_name: "エロドールダンジョン" }, { id: 177, disp_name: "エロドールダンジョン" }, { id: 178, disp_name: "エロドールダンジョン" }, { id: 179, disp_name: "エロドールダンジョン" }, { id: 180, disp_name: "羽山高原" }, { id: 181, disp_name: "羽山高原" }, { id: 182, disp_name: "羽山高原" }, { id: 183, disp_name: "羽山高原" }, { id: 184, disp_name: "羽山高原" }, { id: 185, disp_name: "専代ダンジョン" }, { id: 186, disp_name: "専代ダンジョン" }, { id: 187, disp_name: "専代ダンジョン" }, { id: 188, disp_name: "専代ダンジョン" }, { id: 189, disp_name: "専代ダンジョン" }, { id: 190, disp_name: "魔法犯罪刑務所" }, { id: 191, disp_name: "魔法犯罪刑務所" }, { id: 192, disp_name: "魔法犯罪刑務所" }, { id: 193, disp_name: "魔法犯罪刑務所" }, { id: 194, disp_name: "魔法犯罪刑務所" }, { id: 195, disp_name: "魔法犯罪刑務所" }, { id: 196, disp_name: "八場島" }, { id: 197, disp_name: "八場島" }, { id: 198, disp_name: "八場島" }, { id: 199, disp_name: "八場島洞窟" }, { id: 200, disp_name: "八場島洞窟" }, { id: 201, disp_name: "八場島洞窟" }, { id: 202, disp_name: "八場島洞窟" }, { id: 203, disp_name: "八場島洞窟" }, { id: 204, disp_name: "都知木ダンジョン" }, { id: 205, disp_name: "都知木ダンジョン" }, { id: 206, disp_name: "都知木ダンジョン" }, { id: 207, disp_name: "都知木ダンジョン" }, { id: 208, disp_name: "都知木ダンジョン" }, { id: 209, disp_name: "都知木ダンジョン" }, { id: 210, disp_name: "都知木ダンジョン" }, { id: 211, disp_name: "都知木ダンジョン" }, { id: 212, disp_name: "東都古代遺跡" }, { id: 213, disp_name: "東都古代遺跡" }, { id: 214, disp_name: "東都古代遺跡" }, { id: 215, disp_name: "東都古代遺跡" }, { id: 216, disp_name: "東都古代遺跡" }, { id: 217, disp_name: "東都古代遺跡" }, { id: 218, disp_name: "東都古代遺跡" }, { id: 219, disp_name: "東都古代遺跡" }, { id: 220, disp_name: "東都古代遺跡" }, { id: 221, disp_name: "神宿地下通路" }, { id: 222, disp_name: "神宿地下通路" }, { id: 223, disp_name: "神宿地下通路" }, { id: 224, disp_name: "神宿地下通路" }, { id: 225, disp_name: "ダリアのアジト" }, { id: 226, disp_name: "ダリアのアジト" }, { id: 227, disp_name: "ダリアのアジト" }, { id: 228, disp_name: "ダリアのアジト" }, { id: 229, disp_name: "ダリアのアジト" }, { id: 230, disp_name: "ダリアのアジト" }, { id: 231, disp_name: "ダリアのアジト" }, { id: 232, disp_name: "不二の樹海" }, { id: 233, disp_name: "不二の樹海" }, { id: 234, disp_name: "不二山" }, { id: 235, disp_name: "不二山" }, { id: 236, disp_name: "不二山" }, { id: 237, disp_name: "不二山" }, { id: 238, disp_name: "不二山" }, { id: 239, disp_name: "不二山" }, { id: 240, disp_name: "不二山" }, { id: 241, disp_name: "次元の狭間" }, { id: 242, disp_name: "鳥影岳" }, { id: 243, disp_name: "鳥影岳" }, { id: 244, disp_name: "鳥影岳" }, { id: 245, disp_name: "鳥影岳" }, { id: 246, disp_name: "鳥影岳" }, { id: 247, disp_name: "聖園教会への道" }, { id: 248, disp_name: "聖園教会への道" }, { id: 249, disp_name: "聖園教会への道" }, { id: 250, disp_name: "聖園教会" }, { id: 251, disp_name: "聖園教会" }, { id: 252, disp_name: "聖園教会" }, { id: 253, disp_name: "地下格闘技場" }, { id: 254, disp_name: "地下格闘技場" }, { id: 255, disp_name: "アイリス本部への道" }, { id: 256, disp_name: "アイリス本部への道" }, { id: 257, disp_name: "アイリス本部への道" }, { id: 259, disp_name: "渋野" }, { id: 260, disp_name: "渋野" }, { id: 261, disp_name: "ダリアのアジト" }, { id: 262, disp_name: "ダリアのアジト" }, { id: 269, disp_name: "魔物研究所" }, { id: 270, disp_name: "特別施設" }, { id: 272, disp_name: "サガラダンジョン" }, { id: 273, disp_name: "サガラダンジョン" }, { id: 274, disp_name: "特別施設" }, { id: 275, disp_name: "サガラダンジョン" }, { id: 276, disp_name: "サガラダンジョン" } ]; sp.bitmap.drawText($gameVariables.value(2), 130, 0, 300, 50, "left"); var mapdata = data_map_name_list.find((e) => e.id == $gameMap._mapId); sp.bitmap.drawText(mapdata ? mapdata.disp_name : "???", 538, 0, 300, 50, "left"); sp.bitmap.drawText($gameParty.gold(), 920, 0, 300, 50, "right"); this._backgroundSprite.addChild(sp); this.addChild(this._backgroundSprite); }; Scene_Menu.prototype.start = function () { Scene_MenuBase.prototype.start.call(this); //this._statusWindow.refresh(); }; Scene_Menu.prototype.create = function () { Scene_MenuBase.prototype.create.call(this); //this.createGoldWindow(); this.createStatusWindow(); this.createCommandWindow(); }; // ####################### キャラクターを選択する時のwindow ######################## Scene_Menu.prototype.statusWindowRect = function () { const ww = Graphics.width; const wh = Graphics.height; const wx = 0; const wy = 0; return new Rectangle(wx, wy, ww, wh); }; Scene_Menu.prototype.createStatusWindow = function () { const rect = this.statusWindowRect(); this._statusWindow = new Window_MainMenuStatus(rect); this.addWindow(this._statusWindow); }; function Window_MainMenuStatus() { this.initialize(...arguments); } Window_MainMenuStatus.prototype = Object.create(Window_MenuStatus.prototype); Window_MainMenuStatus.prototype.constructor = Window_MainMenuStatus; Window_MainMenuStatus.prototype.loadWindowskin = function () { this.windowskin = ImageManager.loadSystem("Window"); this.menu_cursor_skin = ImageManager.loadSystem("menu_select"); var party = $gameParty.allMembers(); for (ac of party) { this._backgroundTextSprite = new Sprite(new Bitmap(200, 26)); if (ac.name() == "Shirayuki") { this._backgroundTextSprite.x = 50; this._backgroundTextSprite.y = 412 + 30; } else { this._backgroundTextSprite.x = 1000 + 23; this._backgroundTextSprite.y = 412 + 30; } var b = this._backgroundTextSprite.bitmap; //グラデーションの描写 const ctx = b.context; const grd = ctx.createLinearGradient(0, -20, 220, 0); grd.addColorStop(0, "rgba(255, 255, 255, 1)"); grd.addColorStop(0.8, "rgba(255, 255, 255, 0)"); ctx.fillStyle = grd; ctx.fillRect(0, 0, 200, 30); b.fontFace = "Times New Roman"; b.fontSize = 22; b.textColor = "#FFFFFF"; b.drawText(`LV ${ac._level}`, 8, 0, 200, 26, "left"); this.addChild(this._backgroundTextSprite); } }; Window_MainMenuStatus.prototype.maxCols = function () { return 2; // アクターの最大表示数 }; Window_MainMenuStatus.prototype.lineHeight = function () { return 650; }; Window_MainMenuStatus.prototype.updatePadding = function () { this.padding = 0; }; //セレクト位置を特殊仕様に Window_MainMenuStatus.prototype.itemRect = function (index) { const maxCols = this.maxCols(); const itemWidth = this.itemWidth(); const itemHeight = this.itemHeight(); const colSpacing = this.colSpacing(); const rowSpacing = this.rowSpacing(); var party = $gameParty.allMembers(); //夜鶴が戦闘の時 var flag = index; if (party[0]._name == "Yotsuru") { var flag = index ? 0 : 1; } const col = flag % maxCols; const row = Math.floor(flag / maxCols); const x = col * (itemWidth + 195); const y = row * itemHeight + rowSpacing / 2 - this.scrollBaseY(); const width = 440; const height = 650; return new Rectangle(x, y, width, height); }; Window_MainMenuStatus.prototype.selectLast = function () { this.smoothSelect(0); }; Window_MainMenuStatus.prototype._refreshAllParts = function () { //this._refreshBack(); //this._refreshFrame(); this._refreshCursor(); this._refreshArrows(); this._refreshPauseSign(); }; var Window_MainMenuStatus_refresh = Window_MainMenuStatus.prototype.refresh; Window_MainMenuStatus.prototype.refresh = function () { Window_MainMenuStatus_refresh.call(this); var party = $gameParty.allMembers(); for (var i = 0; i < party.length; i++) { var x = 50; var y = 390 + 30; if (party[i]._name == "Yotsuru") { x += 950 + 23; } this.drawActor_st(party[i], x, y); } }; Window_MainMenuStatus.prototype.drawActor_st = function (ac, x, y) { this.placeGauge(ac, "lv", x, y); this.placeGauge(ac, "hp", x, y + 50); this.placeGauge(ac, "mp", x, y + 100); this.placeGauge(ac, "exp", x, y + 150); var temp = [ ["人間", "人の子を妊娠中"], ["魔物", "魔物の子を妊娠中"], ["ゴブリン", "ゴブリンの子を妊娠中"], ["魔犬", "魔犬の子を妊娠中"], ["魔豚", "魔豚の子を妊娠中"], ["妖馬", "妖馬の子を妊娠中"], ["卵", "胎内に卵がある"], ["触手", "触手の子を妊娠中"] ]; var st_text = ""; var ac_var = [ [102, 65, 184], [103, 66, 185] ]; var a = ac.name() == "Shirayuki" ? 0 : 1; if ($gameVariables.value(ac_var[a][0]) < 3) { if (ac.isStateAffected(4)) { st_text += "On the pill"; } else if ($gameVariables.value(ac_var[a][1]) == 0) { st_text += "Cycle: Safe day"; } else if ($gameVariables.value(ac_var[a][1]) == 1) { st_text += "Cycle: Normal day"; } else { st_text += "Cycle: Risky day"; } } else { var idx = temp.findIndex((e) => e[0] == $gameVariables.value(ac_var[a][2])); if (idx !== -1) { st_text += temp[idx][1]; } } this.contents.fontFace = "serif"; this.contents.fontSize = 20; this.changeTextColor("#FFFFFF"); this.drawText(st_text, x, 274 + 30, 180, "left"); }; Window_MainMenuStatus.prototype.placeGauge = function (actor, type, x, y) { const key = "actor%1-gauge-%2".format(actor.actorId(), type); const sprite = this.createInnerSprite(key, Sprite_Gauge_Main_Menu); sprite.setup(actor, type); sprite.move(x, y); sprite.show(); }; //コマンド欄の名前削除 Window_MainMenuStatus.prototype.drawItem = function (index) {}; //コマンド欄の背景削除 Window_MainMenuStatus.prototype.drawItemBackground = function (index) {}; Window_MainMenuStatus.prototype._refreshCursor = function () { const drect = this._cursorRect.clone(); const srect = { x: 0, y: 0, width: 400, height: 250 }; const m = 4; for (const child of this._cursorSprite.children) { child.bitmap = this.menu_cursor_skin; } this._setRectPartsGeometry(this._cursorSprite, srect, drect, m); }; //カーソルを顔の位置の為に微調整 Window_MainMenuStatus.prototype._updateCursor = function () { this._cursorSprite.alpha = this._makeCursorAlpha(); this._cursorSprite.visible = this.isOpen() && this.cursorVisible; this._cursorSprite.x = this._cursorRect.x - this.index() * 88; var party = $gameParty.allMembers(); //this._cursorSprite.x += 750 * this.index(); // 夜鶴が戦闘の時; if (party[0]._name == "Yotsuru") { var temp = 84; this._cursorSprite.x -= temp + 2 * temp * this.index() * -1; } this._cursorSprite.y = this._cursorRect.y - 8; }; // やっつけ Window_MainMenuStatus.prototype.cursorLeft = function (wrap) { const index = Math.max(0, this.index()); const maxItems = this.maxItems(); const maxCols = this.maxCols(); const horizontal = this.isHorizontal(); if (maxItems > 1) { if (maxCols >= 2 && (index > 0 || (wrap && horizontal))) { this.smoothSelect((index - 1 + maxItems) % maxItems); } else if (index == 0) { this.smoothSelect(1); } } }; Window_MainMenuStatus.prototype.cursorRight = function (wrap) { const index = this.index(); const maxItems = this.maxItems(); const maxCols = this.maxCols(); const horizontal = this.isHorizontal(); if (maxItems > 1) { if (maxCols >= 2 && (index < maxItems - 1 || (wrap && horizontal))) { this.smoothSelect((index + 1) % maxItems); } else if (index == 1) { this.smoothSelect(0); } } }; //カーソルを欄の大きさに合わせて伸ばさないようにする、マウス操作の為 Window_MainMenuStatus.prototype._setRectPartsGeometry = function (sprite, srect, drect, m) { const sx = srect.x; const sy = srect.y; const sw = srect.width; const sh = srect.height; const dx = drect.x; const dy = drect.y; const dw = drect.width; const dh = drect.height; const smw = sw - m * 2; const smh = sh - m * 2; const dmw = dw - m * 2; const dmh = dh - m * 2; const children = sprite.children; sprite.setFrame(0, 0, dw, dh); sprite.move(dx, dy); // corner children[0].setFrame(sx, sy, m, m); children[1].setFrame(sx + sw - m, sy, m, m); children[2].setFrame(sx, sy + sw - m, m, m); children[3].setFrame(sx + sw - m, sy + sw - m, m, m); children[0].move(0, 0); children[1].move(dw - m, 0); children[2].move(0, dh - m); children[3].move(dw - m, dh - m); // edge children[4].move(m, 0); children[5].move(m, dh - m); children[6].move(0, m); children[7].move(dw - m, m); children[4].setFrame(sx + m, sy, smw, m); children[5].setFrame(sx + m, sy + sw - m, smw, m); children[6].setFrame(sx, sy + m, m, smh); children[7].setFrame(sx + sw - m, sy + m, m, smh); children[4].scale.x = dmw / smw; children[5].scale.x = dmw / smw; children[6].scale.y = dmh / smh; children[7].scale.y = dmh / smh; // center if (children[8]) { children[8].setFrame(sx + m, sy + m, smw, smh); children[8].move(m, m); //children[8].scale.x = dmw / smw; //children[8].scale.y = dmh / smh; } for (const child of children) { child.visible = dw > 0 && dh > 0; } }; // ################ コマンドウィンドウ ######################## Scene_Menu.prototype.commandWindowRect = function () { const ww = 380; const wh = 700; const wx = (Graphics.width - ww) / 2; const wy = 20; return new Rectangle(wx, wy, ww, wh); }; Scene_Menu.prototype.createCommandWindow = function () { const rect = this.commandWindowRect(); const commandWindow = new Window_MainMenuCommand(rect); commandWindow.setHandler("item", this.commandItem.bind(this)); commandWindow.setHandler("skill", this.commandPersonal.bind(this)); commandWindow.setHandler("equip", this.commandPersonal.bind(this)); commandWindow.setHandler("eroStatus", this.commandPersonal.bind(this)); commandWindow.setHandler("formation", this.commandFormation.bind(this)); commandWindow.setHandler("options", this.commandOptions.bind(this)); commandWindow.setHandler("save", this.commandSave.bind(this)); commandWindow.setHandler("gameEnd", this.commandGameEnd.bind(this)); commandWindow.setHandler("cancel", this.popScene.bind(this)); commandWindow.setHandler("travel", this.commandTravel.bind(this)); commandWindow.setHandler("ev_rec", this.commandEv_rec.bind(this)); commandWindow.setHandler("side_episode", this.commandSideEpisode.bind(this)); //コマンドの画像、微調整 this._commandSprite = new Sprite(); this._commandSprite.x = 50; this._commandSprite.y = -15; this._commandSprite.bitmap = ImageManager.loadSystem("menu_command"); commandWindow.addChild(this._commandSprite); this.addWindow(commandWindow); this._commandWindow = commandWindow; }; //################### メインメニューのコマンド #################### function Window_MainMenuCommand() { this.initialize(...arguments); } Window_MainMenuCommand.prototype = Object.create(Window_MenuCommand.prototype); Window_MainMenuCommand.prototype.constructor = Window_MainMenuCommand; Window_MainMenuCommand.prototype.addMainCommands = function () { const enabled = this.areMainCommandsEnabled(); if (this.needsCommand("item")) { this.addCommand(TextManager.item, "item", enabled); } if (this.needsCommand("skill")) { this.addCommand(TextManager.skill, "skill", enabled); } if (this.needsCommand("equip")) { this.addCommand(TextManager.equip, "equip", enabled); } this.addCommand("Fast Travel", "travel", true); //trueで有効化 this.addCommand("Event Log", "ev_rec", true); //trueで有効化 this.addCommand("Side Episodes", "side_episode", true); //trueで有効化 //if (this.needsCommand("status")) { this.addCommand(TextManager.status, "eroStatus", enabled); //} }; Scene_Menu.prototype.onPersonalOk = function () { switch (this._commandWindow.currentSymbol()) { case "skill": SceneManager.push(Scene_Skill); break; case "equip": SceneManager.push(Scene_Equip); break; case "eroStatus": SceneManager.push(Scene_eroStatus); break; } }; Window_MainMenuCommand.prototype.addFormationCommand = function () {}; //選択時のカーソル Window_MainMenuCommand.prototype.loadWindowskin = function () { this.windowskin = ImageManager.loadSystem("Window"); this.menu_cursor_skin = ImageManager.loadSystem("menu_cursor"); }; Window_MainMenuCommand.prototype._refreshCursor = function () { const drect = this._cursorRect.clone(); const srect = { x: 0, y: 0, width: 380, height: 36 }; const m = 4; for (const child of this._cursorSprite.children) { child.bitmap = this.menu_cursor_skin; } this._setRectPartsGeometry(this._cursorSprite, srect, drect, m); }; //間隔含めたラインの高さ Window_MainMenuCommand.prototype.lineHeight = function () { return 56; }; //コマンド欄の間隔、マウス操作の為なくす Window_MainMenuCommand.prototype.rowSpacing = function () { return 0; }; Window_MainMenuCommand.prototype._refreshAllParts = function () { //this._refreshBack(); //this._refreshFrame(); this._refreshCursor(); this._refreshArrows(); this._refreshPauseSign(); }; // ファストトラベルの処理、スイッチ129が無い場合実行する Window_MainMenuCommand.prototype.processOk = function () { if (this.index() === 3 && !$gameSwitches.value(129)) { // 新たに処理を加える SoundManager.playBuzzer(); } else { if (this.isCurrentItemEnabled()) { this.playOkSound(); this.updateInputData(); this.deactivate(); this.callOkHandler(); } else { this.playBuzzerSound(); } } }; //コマンド欄の名前削除 Window_MainMenuCommand.prototype.drawItem = function (index) {}; //コマンド欄の背景削除 Window_MainMenuCommand.prototype.drawItemBackground = function (index) {}; //カーソルを欄の大きさに合わせて伸ばさないようにする、マウス操作の為 Window_MainMenuCommand.prototype._setRectPartsGeometry = function (sprite, srect, drect, m) { const sx = srect.x; const sy = srect.y; const sw = srect.width; const sh = srect.height; const dx = drect.x; const dy = drect.y; const dw = drect.width; const dh = drect.height; const smw = sw - m * 2; const smh = sh - m * 2; const dmw = dw - m * 2; const dmh = dh - m * 2; const children = sprite.children; sprite.setFrame(0, -16, dw, dh); sprite.move(dx, dy); // corner children[0].setFrame(sx, sy, m, m); children[1].setFrame(sx + sw - m, sy, m, m); children[2].setFrame(sx, sy + sw - m, m, m); children[3].setFrame(sx + sw - m, sy + sw - m, m, m); children[0].move(0, 0); children[1].move(dw - m, 0); children[2].move(0, dh - m); children[3].move(dw - m, dh - m); // edge children[4].move(m, 0); children[5].move(m, dh - m); children[6].move(0, m); children[7].move(dw - m, m); children[4].setFrame(sx + m, sy, smw, m); children[5].setFrame(sx + m, sy + sw - m, smw, m); children[6].setFrame(sx, sy + m, m, smh); children[7].setFrame(sx + sw - m, sy + m, m, smh); children[4].scale.x = dmw / smw; children[5].scale.x = dmw / smw; children[6].scale.y = dmh / smh; children[7].scale.y = dmh / smh; // center if (children[8]) { children[8].setFrame(sx + m, sy + m, smw, smh); children[8].move(m, m); children[8].scale.x = dmw / smw; //children[8].scale.y = dmh / smh; } for (const child of children) { child.visible = dw > 0 && dh > 0; } }; })();