Index: ps/trunk/binaries/data/mods/public/maps/random/rmgen-common/player.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/random/rmgen-common/player.js +++ ps/trunk/binaries/data/mods/public/maps/random/rmgen-common/player.js @@ -689,7 +689,9 @@ for (let i = 0; i < getNumPlayers(); ++i) { - let position = pickRandom(area.getPoints()); + const position = pickRandom(area.getPoints()); + if (!position) + return undefined; // Minimum distance between initial bases must be a quarter of the map diameter if (locations.some(loc => loc.distanceToSquared(position) < playerMinDistSquared) || Index: ps/trunk/binaries/data/mods/public/maps/random/unknown.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/random/unknown.js +++ ps/trunk/binaries/data/mods/public/maps/random/unknown.js @@ -107,7 +107,8 @@ function createUnknownMap() { - global["unknown" + g_MapSettings.Landscape || pickRandom([...unknownMapFunctions.land, ...unknownMapFunctions.naval])](); + const landscape = g_MapSettings.Landscape || pickRandom([...unknownMapFunctions.land, ...unknownMapFunctions.naval]); + global["unknown" + landscape](); paintUnknownMapBasedOnHeight(); Index: ps/trunk/source/ps/GameSetup/GameSetup.cpp =================================================================== --- ps/trunk/source/ps/GameSetup/GameSetup.cpp +++ ps/trunk/source/ps/GameSetup/GameSetup.cpp @@ -1231,7 +1231,11 @@ { // JSON loaded ok - copy script name over to game attributes std::wstring scriptFile; - Script::GetProperty(rq, settings, "Script", scriptFile); + if (!Script::GetProperty(rq, settings, "Script", scriptFile)) + { + LOGERROR("Autostart: random map '%s' data has no 'Script' property.", utf8_from_wstring(scriptPath)); + throw PSERROR_Game_World_MapLoadFailed("Error reading random map script.\nCheck application log for details."); + } Script::SetProperty(rq, attrs, "script", scriptFile); // RMS filename } else