Bane, the Smithlord, is the Celestial Planes deity of the Forge and War. He is also known as Bhaal (Elvish) and Belgaer (Dwarvish).
Adamant
Adamant
Adamant, the plane of Bane, also known as the Smithlord, is a realm of unwavering order and industry. The plane appears as a seemingly endless labyrinth of forges, foundries, and training grounds, all dedicated to the perfection of the art of war. Everywhere one looks, one can see the products of Bane’s craftsmanship: gleaming suits of armour, razor-sharp weapons, and mighty war machines.
The inhabitants of Adamant are celestials of martial prowess, who tirelessly train and refine their skills in the never-ending pursuit of perfection. These beings are proud and disciplined, and they live their lives according to strict codes of conduct and honour.
Despite the militaristic nature of Adamant, the plane is not without its beauty. The sight of thousands of celestials working in perfect unison, their movements as synchronized as a well-oiled machine, is a thing of awe-inspiring beauty. And the sounds of hammers ringing on anvils, the roar of bellows, and the hiss of molten metal as it cools, are a symphony that echoes across the plane.
To mortals who find themselves on Adamant, the plane can be both a place of wonder and a place of challenge. The celestials who inhabit the plane are not hostile to outsiders, but they expect visitors to conduct themselves with the same discipline and honour that they hold themselves to. And those who seek to learn the art of war will find few better teachers than the celestials of Adamant.
This section displays every time this character is mentioned in the session notes.
// 1. Get the main name and any aliases from the current noteconst targetName = dv.current().file.name;const aliases = dv.current().aliases || [];const searchTerms = Array.isArray(aliases) ? [targetName, ...aliases] : [targetName, aliases];// 2. Filter sessions that link to this NPCconst sessions = dv.pages('"Campaign Information/Sessions"') .where(p => p.file.outlinks.includes(dv.current().file.link)) .sort(p => p.file.mtime, 'desc');for (let session of sessions) { const file = app.vault.getAbstractFileByPath(session.file.path); const content = await app.vault.read(file); const lines = content.split('\n'); let matches = []; let inSummary = false; for (let line of lines) { // Find the Saga20 callout if (line.toLowerCase().includes('[!success]+ saga20 summary')) { inSummary = true; continue; } if (inSummary) { if (line.trim().startsWith('>')) { let cleanedLine = line.trim().replace(/^>\s?/, ""); // Check if the line contains the main name OR any of the aliases const foundMatch = searchTerms.some(term => cleanedLine.toLowerCase().includes(term.toString().toLowerCase()) ); if (foundMatch) { matches.push(cleanedLine); } } else if (line.trim() !== "" && !line.trim().startsWith('>')) { // Exit callout block inSummary = false; } } } if (matches.length > 0) { dv.header(4, session.file.link); dv.list(matches); }}