prison-brave/js/plugins/IM_SceneMenu.js
2025-08-28 23:34:50 -05:00

903 lines
32 KiB
JavaScript

//=============================================================================
// RPG Maker MZ - IM_SceneMenu
//
// Copyright 2025 I'm moralist/min-pub.com All rights reserved.
// This source code or any portion thereof must not be
// reproduced or used without licensed in any manner whatsoever.
//=============================================================================
/*:
* @target MZ
* @plugindesc カスタムメニュープラグイン
* @author I'm moralist
* @base PluginCommonBase
* @base PluginUtils
* @base MPP_StateLevel
* @orderAfter PluginCommonBase
* @orderAfter SceneLewdStatus
* @orderAfter PluginUtils
* @orderAfter MPP_StateLevel
*
* @param actor
* @text アクター
* @desc スキル等表示アクター
* @type actor
* @default 0
*
* @param braveLevel
* @text 勇者レベル
* @desc エロステ値を管理する変数を指定して下さい。
* @type variable
* @default 0
*
* @param prostituteLevel
* @text 娼婦レベル
* @desc エロステ値を管理する変数を指定して下さい。
* @type variable
* @default 0
*
* @requiredAssets img/pictures/500System/minimap
* @requiredAssets img/system/im_menu/menu_effect
*
* @help IM_SceneMenu.js
*
* Version: 0.0.1
*
* カスタムメニュー画面プラグイン
*/
(() => {
"use strict";
const pluginName = "IM_SceneMenu";
const script = document.currentScript;
const param = PluginManagerEx.createParameter(script);
const MENU_TEXT_ITEM = "0900-020-n020-0";
const MENU_TEXT_SKILL = "0900-021-n021-0";
const MENU_TEXT_LEWD = "0900-022-n022-0";
const MENU_TEXT_STATE = "0900-023-n023-0";
const MENU_TEXT_MAP = "0900-034-n034-0";
const MENU_TEXT_OPTION = "0900-024-n024-0";
const MENU_TEXT_ALBUM = "0900-062-n062-0";
const MENU_TEXT_LOAD = "0900-025-n025-0";
const MENU_TEXT_SAVE = "0900-026-n026-0";
const MENU_TITLE_HP = "0900-027-n027-0";
const MENU_TITLE_MP = "0900-028-n028-0";
const MENU_TITLE_TP = "0900-029-n029-0";
const MENU_TITLE_BRAVE = "0900-030-n030-0";
const MENU_TITLE_PROSTITUTE = "0900-031-n031-0";
const MENU_TITLE_LV = "0900-033-n033-0";
const HELP_TEXT_CAUTION_ALBUM = "0900-063-n063-0";
const NOTICE_TEXT_ALBUM = "0900-067-n067-0";
//========================================================================
// Helpers (English word wrapping)
//========================================================================
/**
* Wrap text into lines that fit within maxWidth (pixels) using bitmap font.
* Preserves newlines; falls back to char-splitting for long tokens.
* @param {string} text
* @param {Bitmap} bitmap
* @param {number} maxWidth
* @returns {string[]}
*/
function wrapTextToWidth_IM(text, bitmap, maxWidth) {
if (!text) return [""];
const out = [];
const rawLines = String(text).replace(/\r\n?|\u2028/g, "\n").split("\n");
for (const raw of rawLines) {
const tokens = raw.split(/(\s+)/); // keep spaces
let cur = "";
for (const tk of tokens) {
const next = cur + tk;
if (bitmap.measureTextWidth(next) <= maxWidth) {
cur = next;
} else if (!cur) {
const parts = splitLongTokenByChars_IM(tk, bitmap, maxWidth);
for (let i = 0; i < parts.length - 1; i++) out.push(parts[i]);
cur = parts[parts.length - 1];
} else {
if (cur.trim().length > 0) out.push(cur.trimEnd());
const parts = splitLongTokenByChars_IM(tk, bitmap, maxWidth);
for (let i = 0; i < parts.length - 1; i++) out.push(parts[i]);
cur = parts[parts.length - 1];
}
}
out.push(cur.trimEnd());
}
return out.length ? out : [""];
}
function splitLongTokenByChars_IM(token, bitmap, maxWidth) {
const chunks = [];
let buf = "";
for (const ch of token) {
const next = buf + ch;
if (bitmap.measureTextWidth(next) <= maxWidth) buf = next; else {
if (buf) chunks.push(buf);
buf = ch;
}
}
if (buf) chunks.push(buf);
return chunks.length ? chunks : [token];
}
//========================================================================
// クラス定義 (Window_CustomMenuCommand)
//========================================================================
class Window_CustomMenuCommand extends Window_Command {
constructor() {
super(...arguments);
this._lastCommandSymbol = null;
this.selectLast();
this._canRepeat = false;
}
areMainCommandsEnabled() {
return $gameParty.exists();
}
makeCommandList() {
const enabled = this.areMainCommandsEnabled()
this.addCommand(TextResource.getText(MENU_TEXT_ITEM), "item", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_SKILL), "skill", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_LEWD), "lewdStatus", !!SceneLewdStatus);
this.addCommand(TextResource.getText(MENU_TEXT_STATE), "badState", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_MAP), "map", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_OPTION), "options", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_ALBUM), "album", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_LOAD), "load", enabled);
this.addCommand(TextResource.getText(MENU_TEXT_SAVE), "save", enabled);
}
drawItem(index) {
const rect = this.itemLineRect(index);
const align = this.itemTextAlign();
this.resetTextColor();
this.changePaintOpacity(this.isCommandEnabled(index));
this.contents.textColor = '#FFFFFF';
this.contents.fontFace = $gameSystem.mainFontFace();
this.contents.outlineWidth = 1;
this.contents.fontSize = 42;
this.drawText(this.commandName(index), rect.x, rect.y, rect.width, align);
}
initCommandPosition() {
this._lastCommandSymbol = null;
}
selectLast() {
this.selectSymbol(this._lastCommandSymbol);
}
select(index) {
super.select(index);
if (index >= 0 && this.maxItems() > 0 && !!this._helpWindow) {
this.callUpdateHelp();
}
}
updateHelp() {
super.updateHelp();
const index = this.index();
const command = this.commandSymbol(index);
if (command === 'album') {
this._helpWindow.setText(TextResource.getText(HELP_TEXT_CAUTION_ALBUM));
} else {
this._helpWindow.clear();
}
}
itemHeight() {
const spacing = this.rowSpacing();
return 70 + (spacing * 2);
}
};
//========================================================================
// クラス定義 (Window_ActorStates)
//========================================================================
class Window_ActorStates extends Window_Base {
constructor() {
super(...arguments);
this._actor = null;
}
setActor(actor) {
if (this._actor !== actor) {
this._actor = actor;
this.refresh();
}
}
refresh() {
this.paint();
}
paint() {
const actor = this._actor;
const lineHeight = this.lineHeight();
const line1 = this.createLineBitmap();
line1.textColor = '#FFFFFF';
line1.fontFace = $gameSystem.mainFontFace();
line1.outlineWidth = 1;
line1.fontSize = 48;
line1.drawText(actor.name(), 0, 0, 320, lineHeight, 'left');
const hpGauge = this.createGaugeBitmap(400, TextResource.getText(MENU_TITLE_HP), actor.hp, actor.mhp, 10);
line1.blt(hpGauge, 0, 0, hpGauge.width, hpGauge.height, 323, 0);
const mpGauge = this.createGaugeBitmap(400, TextResource.getText(MENU_TITLE_MP), actor.mp, actor.mmp, 10);
line1.blt(mpGauge, 0, 0, mpGauge.width, mpGauge.height, 744, 0);
const line2 = this.createLineBitmap();
line2.textColor = '#BCBCBC';
line2.fontFace = $gameSystem.mainFontFace();
line2.outlineWidth = 1;
line2.fontSize = 48;
line2.drawText(actor.currentClass().name, 0, 0, 320, lineHeight, 'left');
const tpGauge = this.createGaugeBitmap(820, TextResource.getText(MENU_TITLE_TP), actor.tp, 100, 34, '#FFFFFF');
line2.blt(tpGauge, 0, 0, tpGauge.width, tpGauge.height, 323, 0);
const braveLevel = PluginUtils.getVariables(param.braveLevel);
const line3 = this.createLevelBitmap(MENU_TITLE_BRAVE, braveLevel);
const prostituteLevel = PluginUtils.getVariables(param.prostituteLevel) ?? 0;
const line4 = this.createLevelBitmap(MENU_TITLE_PROSTITUTE, prostituteLevel);
const Level = $gameActors.actor(1).level;
const line5 = this.createLevelBitmap(MENU_TITLE_LV, Level);
const contentSx = 78;
const contentSy = 68;
this.contents.blt(line1, 0, 0, line1.width, line1.height, contentSx, contentSy);
this.contents.blt(line2, 0, 0, line1.width, line1.height, contentSx, contentSy + (60 * 1));
this.contents.blt(line3, 0, 0, line1.width, line1.height, contentSx, contentSy + (60 * 2));
this.contents.blt(line4, 0, 0, line1.width, line1.height, contentSx, contentSy + (60 * 3));
this.contents.blt(line5, 0, 0, line1.width, line1.height, contentSx, contentSy + (60 * 4));
}
createLevelBitmap(label, level) {
const bitmap = this.createLineBitmap();
const lineHeight = this.lineHeight();
bitmap.textColor = '#FFFFFF';
bitmap.fontFace = $gameSystem.mainFontFace();
bitmap.outlineWidth = 1;
bitmap.fontSize = 42;
bitmap.drawText(`${TextResource.getText(label)}`, 744, 0, 280, lineHeight, 'left');
const braveLevel = PluginUtils.getVariables(param.braveLevel);
bitmap.fontFace = 'MPLUS1Code-Regular';
bitmap.drawText(`${level}`, 1024, 0, 120, lineHeight, 'right');
return bitmap;
}
createGaugeBitmap(width, title, value, max, gaugeHeight, titleColor = '#FFFFFF') {
const height = 58;
const bitmap = new Bitmap(width, height);
bitmap.fontFace = 'MPLUS1Code-Regular';
bitmap.textColor = '#FFFFFF';
bitmap.outlineWidth = 1;
bitmap.fontSize = 42;
const gaugeMaxWidth = width - 2;
// Gauge Frame
const gaugeSy = (gaugeHeight < (height - 6)) ? (height - gaugeHeight - 6) : 0;
bitmap.fillRect(0, gaugeSy, width, gaugeHeight, "rgba(0, 0, 0, 0.5)");
bitmap.fillRect(1, gaugeSy + 1, gaugeMaxWidth, gaugeHeight - 2, '#202020');
// Gauge Value
const percent = Number(value).clamp(0, max) / max;
const gaugeWidth = gaugeMaxWidth * percent;
bitmap.fillRect(1, gaugeSy + 1, gaugeWidth, gaugeHeight - 2, '#9F9F9F');
const digitWidth = this.calcDigitWidth(max);
// MAX
const maxSx = width - 4 - digitWidth;
bitmap.drawText(max, maxSx, 6, digitWidth, 52, 'right');
// Slash
const slashWidth = 64;
const slashSx = maxSx - slashWidth;
bitmap.drawText('/', slashSx, 6, slashWidth, 52, 'center');
// Value
const valueSx = slashSx - digitWidth;
bitmap.drawText(value, valueSx, 6, digitWidth, 52, 'right');
bitmap.textColor = titleColor;
// Title
const titleWidth = valueSx;
bitmap.drawText(title, 0, 6, titleWidth, 52, 'left');
return bitmap;
}
calcDigitWidth(value) {
const digit = String(value).length;
return digit * 21;
}
createLineBitmap() {
const width = 1144;
const height = this.lineHeight();
return new Bitmap(width, height);
}
lineHeight() {
return 60;
}
};
//========================================================================
// クラス定義 (Window_BadState)
//========================================================================
class Window_BadStates extends Window_Selectable {
constructor() {
super(...arguments);
}
setActor(actor) {
if (this._actor !== actor) {
this._actor = actor;
this.refresh();
}
}
maxCols() {
return 2;
}
colSpacing() {
return 20;
}
rowSpacing() {
return 20;
}
lineHeight() {
return 60 + (this.itemPadding() * 2);
}
maxItems() {
if (!!this._actor) {
return this._actor.states().length;
} else {
return 0;
}
}
select(index) {
super.select(index);
if (this.maxItems() > 0 && !!this._helpWindow) {
this.callUpdateHelp();
}
}
updateHelp() {
super.updateHelp();
const index = this.index();
const states = this._actor.states();
const state = states[index];
if (!!state) {
const baseText = state.note;
// タグを除去
const regexp = /<([^<>:]+)(:?)([^>]*)>\n?/g;
const raw = baseText.replace(regexp, "").trim();
// Wrap by pixel width using an English-friendly font
const tmp = new Bitmap(1, 1);
tmp.fontFace = 'MPLUS1Code-Regular';
tmp.fontSize = 26;
tmp.outlineWidth = 0;
// Estimate help rect width (matches helpWindowRect: width 570 minus padding)
const helpWidth = 570 - (this._helpWindow?.padding ?? 12) * 2;
const lines = wrapTextToWidth_IM(raw, tmp, Math.max(200, helpWidth));
this._helpWindow.contents.fontFace = tmp.fontFace;
this._helpWindow.contents.fontSize = tmp.fontSize;
this._helpWindow.setText(lines.join('\n'));
}
}
drawItemBackground() {
// nothing to do
}
drawItem(index) {
const rect = this.itemLineRect(index);
const states = this._actor.states();
const state = states[index];
const iconIndex = state.iconIndex;
const icon = this.createIconBitmap(iconIndex);
const iconSize = 50;
const iconSy = (rect.height - iconSize) / 2;
this.contents.blt(icon, 0, 0, icon.width, icon.height, rect.x, rect.y + iconSy, iconSize, iconSize);
this.contents.fontSize = 40;
const levelWidth = 100;
const levelSx = (rect.x + rect.width) - levelWidth;
const level = this._actor._stateLevels[state.id];
if (!!level) {
this.contents.drawText(`(${level})`, levelSx, rect.y, levelWidth, this.lineHeight(), 'right');
}
const nameSx = rect.x + 60;
const nameWidth = levelSx;
this.contents.drawText(state.name, nameSx, rect.y, nameWidth, this.lineHeight(), 'left');
}
createIconBitmap(iconIndex) {
const pw = ImageManager.iconWidth;
const ph = ImageManager.iconHeight;
const bitmap = new Bitmap(pw, ph);
if (iconIndex > 0) {
const iconSet = ImageManager.loadSystem("IconSet");
const sx = (iconIndex % 16) * pw;
const sy = Math.floor(iconIndex / 16) * ph;
bitmap.blt(iconSet, sx, sy, pw, ph, 0, 0);
}
return bitmap;
}
};
//========================================================================
// クラス定義 (Window_CustomSkillStatus)
//========================================================================
class Window_CustomSkillStatus extends Window_SkillStatus {
constructor(rect) {
super(...arguments);
}
lineHeight() {
return 52;
}
drawActorSimpleStatus(actor, x, y) {
const lineHeight = this.lineHeight();
const line1 = this.createLineBitmap();
line1.textColor = '#FFFFFF';
line1.fontFace = $gameSystem.mainFontFace();
line1.outlineWidth = 1;
line1.fontSize = 42;
line1.drawText(actor.name(), 0, 0, 300, lineHeight, 'left');
const hpGauge = this.createGaugeBitmap(400, TextResource.getText(MENU_TITLE_HP), actor.hp, actor.mhp, 10);
line1.blt(hpGauge, 0, 0, hpGauge.width, hpGauge.height, 300, 0);
const mpGauge = this.createGaugeBitmap(400, TextResource.getText(MENU_TITLE_MP), actor.mp, actor.mmp, 10);
line1.blt(mpGauge, 0, 0, mpGauge.width, mpGauge.height, 720, 0);
const line2 = this.createLineBitmap();
line2.textColor = '#BCBCBC';
line2.fontFace = $gameSystem.mainFontFace();
line2.outlineWidth = 1;
line2.fontSize = 42;
line2.drawText(actor.currentClass().name, 0, 0, 300, lineHeight, 'left');
const tpGauge = this.createGaugeBitmap(820, TextResource.getText(MENU_TITLE_TP), actor.tp, 100, 34, '#FFFFFF');
line2.blt(tpGauge, 0, 0, tpGauge.width, tpGauge.height, 300, 0);
const contentSx = 76;
const contentSy = 12;
this.contents.blt(line1, 0, 0, line1.width, line1.height, contentSx, contentSy);
this.contents.blt(line2, 0, 0, line1.width, line1.height, contentSx, contentSy + 58);
}
createLineBitmap() {
const width = 1144;
const height = this.lineHeight();
return new Bitmap(width, height);
}
createGaugeBitmap(width, title, value, max, gaugeHeight, titleColor = '#FFFFFF') {
const height = 52;
const bitmap = new Bitmap(width, height);
bitmap.fontFace = 'MPLUS1Code-Regular';
bitmap.textColor = '#FFFFFF';
bitmap.outlineWidth = 1;
bitmap.fontSize = 36;
const gaugeMaxWidth = width - 2;
// Gauge Frame
const gaugeSy = (gaugeHeight < (height - 6)) ? (height - gaugeHeight - 6) : 0;
bitmap.fillRect(0, gaugeSy, width, gaugeHeight, "rgba(0, 0, 0, 0.5)");
bitmap.fillRect(1, gaugeSy + 1, gaugeMaxWidth, gaugeHeight - 2, '#202020');
// Gauge Value
const percent = Number(value).clamp(0, max) / max;
const gaugeWidth = gaugeMaxWidth * percent;
bitmap.fillRect(1, gaugeSy + 1, gaugeWidth, gaugeHeight - 2, '#9F9F9F');
const digitWidth = this.calcDigitWidth(max);
// MAX
const maxSx = width - 4 - digitWidth;
bitmap.drawText(max, maxSx, 6, digitWidth, 52, 'right');
// Slash
const slashWidth = 64;
const slashSx = maxSx - slashWidth;
bitmap.drawText('/', slashSx, 6, slashWidth, 52, 'center');
// Value
const valueSx = slashSx - digitWidth;
bitmap.drawText(value, valueSx, 6, digitWidth, 52, 'right');
bitmap.textColor = titleColor;
// Title
const titleWidth = valueSx;
bitmap.drawText(title, 0, 6, titleWidth, 52, 'left');
return bitmap;
}
calcDigitWidth(value) {
const digit = String(value).length;
return digit * 21;
}
};
//========================================================================
// クラス定義 (Window_Notice)
//========================================================================
class Window_Notice extends Window_Base {
constructor(rect) {
super(...arguments);
this._label = "";
this._handlers = {};
}
setText(label) {
if (this._label !== label) {
this._label = label;
this.refresh();
}
}
clear() {
this.setText(null);
}
setOkHandler(method) {
this.setHandler('ok', method);
}
setCancelHandler(method) {
this.setHandler('cancel', method);
}
setHandler(symbol, method) {
this._handlers[symbol] = method;
}
isOpenAndActive() {
return this.isOpen() && this.visible && this.active;
}
refresh() {
const rect = this.baseTextRect();
this.contents.clear();
if (!!this._label && this._label !== "") {
const text = TextResource.getText(this._label);
this.contents.fontSize = 38;
const lineHeight = 56;
text.split('\n').forEach((line, index) => {
this.drawText(line, rect.x, rect.y + (index * lineHeight), rect.width, 'center');
});
}
}
isOkTriggered() {
return Input.isRepeated(InputClass.INPUT_CLASS_OK);
}
isCancelTriggered() {
return Input.isRepeated(InputClass.INPUT_CLASS_CANCEL);
}
callHandler(symbol) {
if (!!this._handlers[symbol]) {
this._handlers[symbol]();
}
}
processOk() {
SoundManager.playOk();
this.callHandler("ok");
this.close();
}
processCancel() {
SoundManager.playCancel();
this.callHandler("cancel");
this.close();
}
processHandling() {
if (this.isOpenAndActive()) {
if (!!this._handlers["ok"] && this.isOkTriggered()) {
this.processOk();
}
if (!!this._handlers["cancel"] && this.isCancelTriggered()) {
this.processCancel();
}
}
}
processTouch() {
if (this.isOpenAndActive()) {
if (TouchInput.isClicked()) {
this.processOk();
} else if (TouchInput.isCancelled()) {
this.processCancel();
}
}
}
update() {
this.processHandling();
this.processTouch();
super.update();
}
};
//========================================================================
// クラス定義 (Scene_CustomMenu)
//========================================================================
class Scene_CustomMenu extends Scene_MenuBase {
constructor() {
super(...arguments);
this._commandWindow = null;
this._actorStatesWindow = null;
this._badStatesWindow = null;
this._helpWindow = null; // create by base class
const targetActor = $gameActors.actor(param.actor);
$gameParty.setMenuActor(targetActor);
}
needsCancelButton() {
return false;
}
create() {
super.create();
const bitmap = new Bitmap(Graphics.width, Graphics.height);
bitmap.fillAll('#000000');
this._backSprite = new Sprite(bitmap);
this._backSprite.opacity = PluginUtils.percent(255, 60);
this.addChild(this._backSprite);
this._backSprite.hide();
ImageManager.loadPictureAsync('500System/minimap').then(minimapBitmap => {
this.minimapSprite = new Sprite(minimapBitmap);
this.addChild(this.minimapSprite);
this.minimapSprite.hide();
const x = (Graphics.width - minimapBitmap.width) / 2;
const y = (Graphics.height - minimapBitmap.height) / 2;
this.minimapSprite.move(x, y);
});
this.createHelpWindow();
this.createCommandWindow();
this.createActorStatesWindow();
this.createBadStatesWindow();
this.createAlbumNoticeWindow();
const actor = this.actor();
const sprite = new Sprite(ImageManager.loadSystem('im_menu/menu_effect'));
sprite.zIndex = 100;
sprite.visible = ((actor.tp / 100) * 100) > 75;
this.addChild(sprite);
}
helpWindowRect() {
return new Rectangle(20, 756, 570, 304);
}
commandWindowRect() {
return new Rectangle(20, 20, 570, 726);
}
createCommandWindow() {
const rect = this.commandWindowRect();
const commandWindow = new Window_CustomMenuCommand(rect);
commandWindow.initCommandPosition();
commandWindow.setHandler('item', this.commandItem.bind(this));
commandWindow.setHandler('skill', this.commandSkill.bind(this));
commandWindow.setHandler('lewdStatus', this.commandLewdStatus.bind(this));
commandWindow.setHandler('badState', this.commandBadState.bind(this));
commandWindow.setHandler('map', this.commandMap.bind(this));
commandWindow.setHandler('options', this.commandOptions.bind(this));
commandWindow.setHandler('album', this.commandAlbum.bind(this));
commandWindow.setHandler('load', this.commandLoad.bind(this));
commandWindow.setHandler('save', this.commandSave.bind(this));
commandWindow.setHandler("cancel", this.popScene.bind(this));
commandWindow.setHelpWindow(this._helpWindow);
this.addWindow(commandWindow);
this._commandWindow = commandWindow;
}
createActorStatesWindow() {
const rect = new Rectangle(600, 20, 1300, 520);
const actorStatesWindow = new Window_ActorStates(rect);
actorStatesWindow.setActor(this.actor());
this.addWindow(actorStatesWindow);
this._actorStatesWindow = actorStatesWindow;
}
createBadStatesWindow() {
const rect = new Rectangle(600, 550, 1300, 510);
const badStatesWindow = new Window_BadStates(rect);
badStatesWindow.deactivate();
badStatesWindow.setHelpWindow(this._helpWindow);
badStatesWindow.setActor(this.actor());
badStatesWindow.setHandler("cancel", this.onBadStatesCancel.bind(this));
this.addWindow(badStatesWindow);
this._badStatesWindow = badStatesWindow;
}
createAlbumNoticeWindow() {
const noticeWindowRect = new Rectangle(505, 295, 910, 490);
const noticeWindow = new Window_Notice(noticeWindowRect);
noticeWindow.setText(NOTICE_TEXT_ALBUM);
noticeWindow.setOkHandler(this.onOkAlbumNotice.bind(this));
noticeWindow.setCancelHandler(this.onCancelAlbumNotice.bind(this));
noticeWindow.close();
noticeWindow.hide();
this.addWindow(noticeWindow);
this._noticeWindow = noticeWindow;
}
onOkAlbumNotice() {
SceneManager.pop();
PluginUtils.fireCommonEvent(58); // 回想部屋に移動
}
onCancelAlbumNotice() {
this._noticeWindow.deactivate();
this._commandWindow.activate();
}
commandItem() {
SceneManager.push(Scene_Item);
}
commandSkill() {
SceneManager.push(Scene_Skill);
}
commandMap() {
this._backSprite.show();
this.minimapSprite.show();
}
commandOptions() {
SceneManager.push(Scene_Options);
}
commandAlbum() {
this._noticeWindow.show();
this._noticeWindow.open();
this._noticeWindow.activate();
}
commandLewdStatus() {
SceneManager.push(SceneLewdStatus);
}
commandBadState() {
this._badStatesWindow.activate();
this._badStatesWindow.select(0);
}
commandLoad() {
SceneManager.push(Scene_Load);
}
commandSave() {
SceneManager.push(Scene_Save);
}
onBadStatesCancel() {
this._badStatesWindow.deselect();
this._commandWindow.activate();
}
update() {
super.update();
if (this.minimapSprite?.visible) {
if (TouchInput.isCancelled() || Input.isTriggered('cancel')) {
SoundManager.playCancel();
this._backSprite.hide();
this.minimapSprite.hide();
this._commandWindow.activate();
}
}
}
};
//========================================================================
// コアスクリプト変更部 (Scene_Skill)
//========================================================================
const _Scene_Skill_prototype_createStatusWindow = Scene_Skill.prototype.createStatusWindow;
Scene_Skill.prototype.createStatusWindow = function() {
const rect = this.statusWindowRect();
this._statusWindow = new Window_CustomSkillStatus(rect);
this.addWindow(this._statusWindow);
};
const _Scene_Skill_prototype_needsPageButtons = Scene_Skill.prototype.needsPageButtons;
Scene_Skill.prototype.needsPageButtons = function() {
return false;
};
const _Scene_Skill_prototype_needsCancelButton = Scene_Skill.prototype.needsCancelButton;
Scene_Skill.prototype.needsCancelButton = function() {
return false;
};
//========================================================================
// コアスクリプト変更部 (Scene_Map)
//========================================================================
const _Scene_Map_prototype_callMenu = Scene_Map.prototype.callMenu;
Scene_Map.prototype.callMenu = function() {
SoundManager.playOk();
SceneManager.push(Scene_CustomMenu);
$gameTemp.clearDestination();
this._mapNameWindow.hide();
this._waitCount = 2;
};
//========================================================================
// コアスクリプト変更部 (Game_Interpreter)
//========================================================================
const _Game_Interpreter_prototype_command351 = Game_Interpreter.prototype.command351;
Game_Interpreter.prototype.command351 = function() {
if (!$gameParty.inBattle()) {
SceneManager.push(Scene_CustomMenu);
}
return true;
};
})();