SOURCE / PINNED RELEASE
Made of little things.
Black Site Map Editor
- Release
- 32a57733b7e9…
- Author-recorded commit
- 3f54890f542f…
- License
- LICENSE
- Author’s source reference
- nostr://npub1ye5ptcxfyyxl5vjvdjar2ua3f0hynkjzpx552mu5snj3qmx5pzjscpknpr/wss%3A%2F%2Fgit.shakespeare.diy%2F/black-site-map-editor
Archive hash verified: 7a4b1abbac7db5b0…. The source-to-build association is the author’s claim; it has not been independently rebuilt.
/** Translate validator and service errors into player language. */
export function friendlyError(error: unknown): string {
const message = error instanceof Error ? error.message : String(error);
if (/no walkable route/i.test(message)) return 'Clear a path from insertion to extraction.';
if (/blocked tile/i.test(message))
return 'Move insertion, extraction, guards or caches onto open ground.';
if (/Resize would clip/i.test(message))
return 'Move objects inside the new map size before resizing.';
if (/door.*(perimeter|edge)|perimeter.*door/i.test(message))
return 'Place doors on the outside edge of the building.';
if (/hash|sha256|bytes differ|size mismatch|integrity/i.test(message))
return 'The map file could not be verified. Try opening it again.';
if (/map ID|published map keeps its ID/i.test(message))
return 'This map cannot be shared as a new map. Choose New or Remix to make a separate version.';
if (/^name:/.test(message)) return 'Give your map a name of up to 32 characters.';
if (/^desc:/.test(message)) return 'Keep the briefing within 200 characters.';
if (/^size:/.test(message))
return 'Map width and height must each be between 16 and 256 tiles.';
if (/outside the|corners must be ordered/i.test(message))
return 'Keep the selected object inside the map and check its size.';
if (
/^(?:start|exfil|theme|id|water|paved|roads|walls|buildings|containers|tanks|pipes|crates|wrecks|sandbags|enemies|caches)[.:]/.test(
message,
)
)
return 'Check the map settings and object positions before continuing.';
if (
/^(?:map|format|version)[.:]|\b(schema|JSON)\b|\[\d+\]|must be (an? |one of)|unknown (field|property)/i.test(
message,
)
)
return 'Some map settings are not valid. Check positions and sizes, or choose another map file.';
if (/intent|convention|routing|payload|relay hint/i.test(message))
return 'This map request could not be opened. Try opening it from Maps.';
if (/OUTBOX|RESOURCE|NAP-|35858|Blossom|application\/json|upload rail|domain/i.test(message))
return 'This service could not complete the request. Your map is still open; save a draft and try again.';
if (/\b(seed|clutter|extraEnemies|extraCaches|generate|spawns)\b/i.test(message))
return 'Check the extra scenery and enemy settings. Use whole numbers within the limits shown.';
if (/public key|hex/i.test(message)) return 'Choose a player from Community maps.';
return message;
}
