Overview
Withywoods is a charming town located in the eastern part of Belmont Prefecture, overlooking the Bastion Sea. The town is enclosed within sturdy walls, which are still standing strong after many years of wear and tear.
Withywoods is a beautiful town full of character and charm. The burgomeister, Irion von Scholtz, is an excellent leader who is beloved by the town’s residents. Withywoods is a peaceful and idyllic town, which makes it an ideal spot for a relaxing getaway or a permanent residence.
let current = dv.current();
let title = current.file?.name || current.name || "";
// 0. Suppress artwork search on template notes
if (title.toLowerCase().includes("template")) {
dv.paragraph(`*(Location / Building Image Preview)*`);
} else {
// 1. Gather all potential names (Title, quoted nicknames, and Obsidian Aliases)
let rawNames = [title];
// Extract quoted nickname if present in title (e.g. Holy Dominion "Estwatch" -> Estwatch)
let matchNick = title.match(/"([^"]+)"/);
if (matchNick && matchNick[1]) {
rawNames.push(matchNick[1]);
}
// Pull aliases safely
let aliases = current.file?.aliases || current.aliases || [];
if (typeof aliases === "string") {
rawNames.push(aliases);
} else if (Array.isArray(aliases) || (aliases && typeof aliases[Symbol.iterator] === "function")) {
for (let a of aliases) {
if (a && typeof a === "string") rawNames.push(a);
}
}
// 2. Build sanitized search terms
let searchTerms = new Set();
for (let name of rawNames) {
if (!name || typeof name !== "string") continue;
let lower = name.toLowerCase().trim().replace(/["']/g, "");
let slug = lower.replace(/[\s-]+/g, "_").replace(/^_+|_+$ /g, "");
if (lower.length >= 2) searchTerms.add(lower);
if (slug.length >= 2) searchTerms.add(slug);
}
// 3. Search target folders for matching image files (.png, .webp, .jpg, etc.)
let imageFolders = ["Images/Locations", "Image/Locations", "Images/Buildings", "Image/Buildings"];
let fallbackImage = "";
let matches = app.vault.getFiles().filter(f => {
let pathLower = f.path.toLowerCase();
let inTargetFolder = imageFolders.some(folder => pathLower.includes(folder.toLowerCase()));
if (!inTargetFolder) return false;
if (fallbackImage && pathLower.includes(fallbackImage.toLowerCase())) return false;
let imgName = f.name.toLowerCase();
return Array.from(searchTerms).some(term => term && imgName.includes(term));
});
// 4. Select match (prioritize "settlement", "overview", "cover", or "map", otherwise take the first file)
let match = matches.find(f => {
let nameLower = f.name.toLowerCase();
return nameLower.includes("settlement") || nameLower.includes("overview") || nameLower.includes("cover") || nameLower.includes("map");
}) || (matches.length > 0 ? matches[0] : null);
// 5. Render artwork, fallback image, or clean message
if (match && match.path) {
dv.paragraph(`![[${match.path}|cover]]`);
} else {
let fallbackFile = null;
if (fallbackImage && fallbackImage.trim() !== "") {
let cleanFB = fallbackImage.toLowerCase().trim();
fallbackFile = app.vault.getFiles().find(f =>
f.path.toLowerCase() === cleanFB ||
f.path.toLowerCase().includes(cleanFB) ||
f.name.toLowerCase().includes(cleanFB)
);
}
if (fallbackFile && fallbackFile.path) {
dv.paragraph(`![[${fallbackFile.path}|cover]]`);
} else {
dv.paragraph(`*No map or illustration found for ${title}*`);
}
}
}Districts
Areas & Points of Interest

Stormshade
Blackgrove
Eastgate
South Way
The Rock