一键导入
maps
Generate visual maps of the world showing realms, regions, and locations. Use when the user wants to see a map or visualize the world layout.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate visual maps of the world showing realms, regions, and locations. Use when the user wants to see a map or visualize the world layout.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Schema and rules for editing AI instructions
Check character counts and limits for Voyage World config files. Use when checking how much space is used, before adding large content, or when approaching size limits.
Schema and rules for creating locations
Schema and rules for editing settings
Schema and rules for creating traits
Schema and rules for creating triggers
| name | maps |
| description | Generate visual maps of the world showing realms, regions, and locations. Use when the user wants to see a map or visualize the world layout. |
| context | fork |
| agent | maps |
Generate a self-contained HTML map from world config data. Output to stuff/world-map.html.
const settings = JSON.parse(fs.readFileSync('tabs/settings.json'))
const realms = JSON.parse(fs.readFileSync('tabs/realms.json'))
const regions = JSON.parse(fs.readFileSync('tabs/regions.json'))
const locations = JSON.parse(fs.readFileSync('tabs/locations.json'))
const regionSize = settings.locationSettings.regionSize // e.g., 100
const coordRange = regionSize / 2 // e.g., 50
regionSize: 100 means location coordinates span -50 to 50top = centerY - (loc.y * scale))// Group regions by realm
const realmRegions = {};
Object.entries(regions.regions).forEach(([key, r]) => {
if (!realmRegions[r.realm]) realmRegions[r.realm] = [];
realmRegions[r.realm].push({ key, ...r });
});
// Group locations by region
const locsByRegion = {};
Object.entries(locations.locations).forEach(([key, loc]) => {
if (!locsByRegion[loc.region]) locsByRegion[loc.region] = [];
locsByRegion[loc.region].push({ key, ...loc });
});
For each realm, build a grid from region x,y coordinates:
function getGridBounds(regionList) {
let minX = Infinity, maxX = -Infinity;
let minY = Infinity, maxY = -Infinity;
regionList.forEach(r => {
if (r.x !== undefined && r.y !== undefined) {
minX = Math.min(minX, r.x); maxX = Math.max(maxX, r.x);
minY = Math.min(minY, r.y); maxY = Math.max(maxY, r.y);
}
});
return { minX, maxX, minY, maxY };
}
// Grid dimensions: (maxX - minX + 1) columns, (maxY - minY + 1) rows
Plot locations within their region cell using x,y coordinates relative to center:
const coordRange = regionSize / 2; // e.g., 50
const scale = cellSize / (coordRange * 2);
// For each location:
const scaledDiameter = Math.max(6, loc.radius * 2 * scale);
const centerX = cellWidth / 2;
const centerY = cellHeight / 2;
const left = centerX + (loc.x * scale) - scaledDiameter / 2;
const top = centerY - (loc.y * scale) - scaledDiameter / 2; // NEGATIVE for y inversion
stuff/world-map.html, open in browser