59 lines
2.2 KiB
JavaScript
59 lines
2.2 KiB
JavaScript
/*:
|
|
* @target MZ
|
|
* @plugindesc Adds game-context information to error output for easier debugging.
|
|
* @author DazedTranslations
|
|
* @help Place near the top of the plugin list (after PluginCommonBase).
|
|
* When an unhandled error occurs, the console will show:
|
|
* - Current map ID and name
|
|
* - Active event ID and name
|
|
* - Map battle state (_knPlayer, _knEnemy)
|
|
*/
|
|
|
|
(() => {
|
|
'use strict';
|
|
|
|
const _catchNormalError = SceneManager.catchNormalError.bind(SceneManager);
|
|
SceneManager.catchNormalError = function(e) {
|
|
try {
|
|
let interp = $gameMap?._interpreter;
|
|
while (interp?._childInterpreter) interp = interp._childInterpreter;
|
|
|
|
const mapId = $gameMap?.mapId?.();
|
|
const mapName = $dataMapInfos?.[mapId]?.name ?? '?';
|
|
const eventId = interp?.eventId?.() ?? '?';
|
|
const eventName = $dataMap?.events?.[eventId]?.name ?? '?';
|
|
|
|
console.error(
|
|
`[KN_ErrorHandler] Error in Map ${mapId} (${mapName}), ` +
|
|
`Event ${eventId} ("${eventName}")`
|
|
);
|
|
console.error(
|
|
`[KN_ErrorHandler] Battle state — ` +
|
|
`_knPlayer: ${$gameMap?._knPlayer ? 'OK' : 'UNDEFINED'}, ` +
|
|
`_knEnemy: ${$gameMap?._knEnemy ? $gameMap._knEnemy.name() : 'UNDEFINED'}`
|
|
);
|
|
} catch (_) { /* never let the error handler itself throw */ }
|
|
|
|
_catchNormalError(e);
|
|
};
|
|
|
|
const _onError = SceneManager.onError.bind(SceneManager);
|
|
SceneManager.onError = function(event) {
|
|
try {
|
|
let interp = $gameMap?._interpreter;
|
|
while (interp?._childInterpreter) interp = interp._childInterpreter;
|
|
|
|
const mapId = $gameMap?.mapId?.();
|
|
const mapName = $dataMapInfos?.[mapId]?.name ?? '?';
|
|
const eventId = interp?.eventId?.() ?? '?';
|
|
const eventName = $dataMap?.events?.[eventId]?.name ?? '?';
|
|
|
|
console.error(
|
|
`[KN_ErrorHandler] Uncaught error in Map ${mapId} (${mapName}), ` +
|
|
`Event ${eventId} ("${eventName}")`
|
|
);
|
|
} catch (_) { /* ignore */ }
|
|
|
|
_onError(event);
|
|
};
|
|
})();
|