alter-egoism/js/plugins/CBR_menu.js
Sinflower f69aa9ea8d Translated extra menu commands
Translated additional menu commands
Translated save menu commands
Translated shop commands and changed "Purchase Total" to "Total" for readability
2025-11-06 23:05:44 +01:00

1600 lines
34 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

(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;
}
};
})();