Born to common origins, Ser Gerrack earned his place through discipline and resolve rather than lineage. His service with Great House Belmont—renowned for the finest military in the Commonwealth—saw him selected for the Rebukers Legion, an elite force trained to confront magical and supernatural threats. His consistent excellence earned him the honorific Ser, a rare distinction for one of his birth.
Gerrack’s legend began at Stoneveil Watch, a remote watchtower near the town of Alver, in the forested foothills of the Eld Mountains. Sent to investigate reports of grimlocks, his squad was assured the danger had passed. In truth, intellect devourers had already infiltrated the outpost, replacing officers and soldiers alike. When Gerrack uncovered the deception, violence erupted. He slew his possessed commander, seized a sending stone, and warned Belmont before the watch fell into chaos.
Rebuker reinforcements arrived too late. All were dead but Gerrack, found unconscious among grimlocks and intellect devourers. Rumors spread quickly. To nobles he became the Revenant of Stoneveil Watch; to soldiers, simply the Revenant.
After months of scrutiny for illithid influence, Gerrack was declared clean. Now physically healed but quietly changed, he has been seconded by House Belmont to the Vermin Directorate, where his survival at Stoneveil Watch has made him uniquely suited for what comes next.
Ser Gerrack
Level 11 | Fighter 11
STR+5(20)
DEX+1(13)
CON+2(14)
INT+0(10)
WIS+1(12)
CHA+0(10)
AC: 10Speed: 30ft
HP: 114 / 0 (Temp: 0)
Initiative: +1Proficiency Bonus: +4
Death Saves: Successes: 0/3 | Failures: 0/3
Exhaustion: 0
Conditions: None
Skills
Acrobatics+5
Animal Handling+1
Arcana+0
Athletics+9
Deception+0
History+0
Insight+5
Intimidation+0
Investigation+0
Medicine+1
Nature+0
Perception+5
Performance+0
Persuasion+0
Religion+0
Sleight of Hand+1
Stealth+1
Survival+5
Saving Throws
STR+9
DEX+1
CON+6
INT+0
WIS+1
CHA+0
Details
Type: Humanoid Species: Human Background: Guard
Proficiencies
Armor: Light, Medium, Shields, Heavy Weapons: Simple, Martial Tools: —
Features & Traits
Champion
Description
A Master of All Arms and Armor
Fighters all share an unparalleled prowess with weapons and armor, and are well acquainted with death, both meting it out and defying it.
Primary Ability: Strength or Dexterity
Hit Point Die: D10
Saves: Strength & Constitution
Class Features
Level 3: Improved Critical
Your attack rolls with weapons and Unarmed Strikes can score a Critical Hit on a roll of 19 or 20 on the d20.
Level 3: Remarkable Athlete
Thanks to your athleticism, you have Advantage on Initiative rolls and Strength (&Reference[ath]{Athletics}) checks.
In addition, immediately after you score a Critical Hit, you can move up to half your Speed without provoking Opportunity Attacks.
Level 7: Additional Fighting Style
You gain another Fighting Style feat of your choice.
Level 10: Heroic Warrior
The thrill of battle drives you toward victory. During combat, you can give yourself Heroic Inspiration whenever you start your turn without it.
Level 15: Superior Critical
Your attack rolls with weapons and Unarmed Strikes can now score a Critical Hit on a roll of 18–20 on the d20.
Level 18: Survivor
You attain the pinnacle of resilience in battle, giving you these benefits.
Defy Death. You have Advantage on Death Saving Throws. Moreover, when you roll 18–20 on a Death Saving Throw, you gain the benefit of rolling a 20 on it.
Heroic Rally. At the start of each of your turns, you regain Hit Points equal to 5 plus your Constitution modifier if you are Bloodied and have at least 1 Hit Point.
Resourceful
You gain Heroic Inspiration whenever you finish a Long Rest.
Versatile
You gain an Origin feat of your choice.
Second Wind
You have a limited well of physical and mental stamina that you can draw on. As a Bonus Action, you can use it to regain Hit Points equal to 1d10 plus your Fighter level.
You can use this feature twice. You regain one expended use when you finish a Short Rest, and you regain all expended uses when you finish a Long Rest.
When you reach certain Fighter levels, you gain more uses of this feature, as shown in the Second Wind column of the Fighter Features table.
Action Surge
You can &Reference[push]{push} yourself beyond your normal limits for a moment. On your turn, you can take one additional action, except the Magic action.
Once you use this feature, you can’t do so again until you finish a Short or Long Rest. Starting at level 17, you can use it twice before a rest but only once on a turn.
Tactical Mind
You have a mind for tactics on and off the battlefield. When you fail an ability check, you can expend a use of your Second Wind to &Reference[push]{push} yourself toward success. Rather than regaining Hit Points, you roll 1d10 and add the number rolled to the ability check, potentially turning it into a success. If the check still fails, this use of Second Wind isn’t expended.
Extra Attack
You can attack twice instead of once whenever you take the Attack action on your turn.
Tactical Shift
Whenever you activate your Second Wind with a Bonus Action, you can move up to half your Speed without provoking Opportunity Attacks.
Tactical Master
When you attack with a weapon whose mastery property you can use, you can replace that property with the &Reference[push]{Push}, &Reference[sap]{Sap}, or &Reference[slow]{Slow} property for that attack.
Indomitable
If you fail a saving throw, you can reroll it with a bonus equal to your Fighter level. You must use the new roll, and you can’t use this feature again until you finish a Long Rest.
You can use this feature twice before a Long Rest starting at level 13 and three times before a Long Rest starting at level 17.
Two Extra Attacks
You can attack three times instead of once whenever you take the Attack action on your turn.
Improved Critical
Your attack rolls with weapons and Unarmed Strikes can score a Critical Hit on a roll of 19 or 20 on the d20.
Remarkable Athlete
Thanks to your athleticism, you have Advantage on Initiative rolls and Strength (&Reference[ath]{Athletics}) checks.
In addition, immediately after you score a Critical Hit, you can move up to half your Speed without provoking Opportunity Attacks.
Heroic Warrior
The thrill of battle drives you toward victory. During combat, you can give yourself Heroic Inspiration whenever you start your turn without it.
Alert
Origin Feat
You gain the following benefits.
Initiative Proficiency. When you roll Initiative, you can add your Proficiency Bonus to the roll.
Initiative Swap. Immediately after you roll Initiative, you can swap your Initiative with the Initiative of one willing ally in the same combat. You can’t make this swap if you or the ally has the Incapacitated condition.
When you roll damage for an attack you make with a Melee weapon that you are holding with two hands, you can treat any 1 or 2 on a damage die as a 3. The weapon must have the Two-Handed or Versatile property to gain this benefit.
Tough
Origin Feat
Your Hit Point maximum increases by an amount equal to twice your character level when you gain this feat. Whenever you gain a character level thereafter, your Hit Point maximum increases by an additional 2 Hit Points.
Inventory
Item
Qty
Unarmed Strike
1
Chain Mail
1
Javelin
8
Spear
1
Crossbow, Light
1
Flail
1
Greatsword
1
Backpack
1
Quiver
1
Dice
1
Manacles
1
Hooded Lantern
1
Bolts
200
Traveler's Clothes
1
Oil
2
Rations
10
Rope
1
Tinderbox
1
Torch
10
Waterskin
1
Caltrops
20
Crowbar
1
Spellbook
Spell Name
Level
Components
No spells
-
-
Appearance & Personality
Visuals & Mannerisms
let current = dv.current();let title = current.name || current.file.name;// --- CONFIGURATION ---// Set to your silhouette image path or filename (e.g., "npc-images/silhouette.webp" or "silhouette.webp").// If the file doesn't exist or is set to "", it will gracefully display the text message below.let fallbackImage = "npc-images/silhouette.webp"; // ---------------------// 1. Gather all potential names (Title, quoted nicknames, and Obsidian Aliases)let rawNames = [title];// Extract quoted nickname if present in title (e.g., Wulfric "The Bear" -> The Bear)let matchNick = title.match(/"([^"]+)"/);if (matchNick && matchNick) { rawNames.push(matchNick);}// Safely pull aliases from Obsidian Frontmatter/Propertieslet rawAliases = current.file?.aliases || current.aliases || [];if (typeof rawAliases === "string") { rawNames.push(rawAliases);} else if (rawAliases && typeof rawAliases[Symbol.iterator] === "function") { for (let a of rawAliases) { if (a && typeof a === "string") rawNames.push(a); }}// 2. Build sanitized search terms (ensures terms are >= 2 chars to avoid matching "_" or empty strings)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 npc-images for matching character fileslet matches = app.vault.getFiles().filter(f => { let pathLower = f.path.toLowerCase(); if (!pathLower.includes("npc-images")) return false; // Exclude the fallback image from character search if (fallbackImage && pathLower.includes(fallbackImage.toLowerCase())) return false; let imgName = f.name.toLowerCase(); return Array.from(searchTerms).some(term => term && imgName.includes(term));});// 4. Prioritize files with "avatar" in the name, otherwise take first matchlet match = matches.find(f => f.name.toLowerCase().includes("avatar")) || (matches.length > 0 ? matches : null);// 5. Render artwork, fallback image, or clean text messageif (match) { dv.paragraph(`![[${match.path}|cover]]`);} else { // Flexible fallback image lookup (works with filename, full path, or partial match) 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) { dv.paragraph(`![[${fallbackFile.path}|cover]]`); } else { dv.paragraph(`*No artwork generated yet for ${title}*`); }}
// 5. Render artwork or fallback
if (match) {
dv.paragraph(![[${match.path}|cover]]);
} else {
let fallbackFile = fallbackImage ? app.vault.getAbstractFileByPath(fallbackImage) : null;
if (fallbackFile) {
dv.paragraph(![[${fallbackFile.path}|cover]]);
} else {
dv.paragraph(*No artwork generated yet for ${title}*);
}
}