これはもしかしたら、ツクールの仕様のせいかもしれません。
「一旦セーブした後、プロジェクトをいじってセーブした場合、マップデータが再読み込みされる」
という仕様になっています。
たまなさんのケースでも、それまでのイベントの位置や、そのマップ独特のスイッチや変数を途中で加えた場合、
この仕様(ロード時にマップが読み込まれ初期化される)が原因なのかもしれません。
僕もこの仕様に、結構泣かされたことが多いです。
特に、バージョンアップ版を公開したら、古いバージョンのセーブデータを読み込もうとして
エラーが出る……ということがあって、困り果てていました。
よって僕は、
「ロードする際、マップの再読み込みはしない」ように変更していました。
これだと、マップを切り替えないと変更が反映されませんが、エラーは起きなくなります。
若干強引にプラグイン化するなら、以下のような感じでしょうか。
JavaScript:
(() => {
Scene_Map.prototype.create = function() {
Scene_Message.prototype.create.call(this);
this._transfer = $gamePlayer.isTransferring();
this._lastMapWasNull = !$dataMap;
if (this._transfer) {
DataManager.loadMapData($gamePlayer.newMapId());
this.onTransfer();
} else if (!$dataMap) {
DataManager.loadMapData($gameMap.mapId());
} else if ($dataMap.id !== $gameMap.mapId()) {
// abolish this action because it's the seed of trouble
// DataManager.loadMapData($gameMap.mapId());
}
};
})();
いまでは、「
デバッグモードの時だけ、マップは再読み込みするが、それ以外の時は再読み込みしない」
という方向で落ち着いています。