- Add html/index.html: book viewer with auto-discovering sidebar, prev/next navigation, keyboard shortcuts, and URL hash persistence - Add html/book-page.css: shared stylesheet for all book pages derived from fabula-ultima-sheet.css (dark theme, CSS variables, Cinzel/ Crimson Text fonts, common class styles) - Add book.js entry point so webpack injects the shared CSS into the book viewer; update webpack.config.js for two entry points, split CSS chunk, CopyWebpackPlugin for book pages, and /book dev server rewrite rule - Add scripts/strip_watermark.py: removes "Guest Customer (Order #52072168)" watermark artifacts from all 210 book pages - Add scripts/restyle_book.py: strips per-page <style> blocks and injects <link rel="stylesheet" href="book-page.css"> into all pages - Update Justfile deploy to scp -r dist/* for the new /book subtree Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
82 lines
3.7 KiB
HTML
82 lines
3.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Character Dossier & Reflection</title>
|
||
<link rel="stylesheet" href="book-page.css">
|
||
</head>
|
||
<body>
|
||
|
||
<div class="chapter-header">
|
||
ANTAGONISTS (Chapter)
|
||
</div>
|
||
|
||
<h2>DYLON PROFILE</h2>
|
||
<p style="font-style: italic; color: #6a6a6a;">“We don’t expect gratitude. Nonetheless, we know what must be done.”</p>
|
||
|
||
<div class="stats-container">
|
||
<div class="stats-header">DYLON (Elite)</div>
|
||
<div><strong>Level:</strong> 10 • <strong>Race:</strong> BEAST</div>
|
||
<p style="margin: 5px 0;"><strong>Traits:</strong> imposing, protective, seaborn, staunch.</p>
|
||
<hr>
|
||
|
||
<h4>Combat Stats</h4>
|
||
<div class="stat-line"><strong>DEX / INS / MIG / WLP / HP:</strong> d6 / d8 / d10 / d8 / 140</div>
|
||
<div class="stat-line"><strong>MP / Init.:</strong> 70 MP / 60 Init. 9</div>
|
||
<div class="stat-line"><strong>DEF / M. DEF:</strong> +2 / +1 p a B</div>
|
||
<p style="margin: 5px 0;">VU d E RS F VU I RS l t</p>
|
||
</div>
|
||
|
||
<h2>Abilities</h2>
|
||
|
||
<h3>Basic Attacks</h3>
|
||
<div class="ability-section">
|
||
<strong>Sea Fin</strong>
|
||
<ul>
|
||
<li>(INS + MIG) +1 attack.</li>
|
||
<li>(HR + 5) ice damage.</li>
|
||
<li><em>Condition:</em> If the tide is high, the target suffers weak.</li>
|
||
<li>*Note:* If the tide is low, the target won’t be able to see Node (see previous page) until Dylon uses Sea Fin again.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<h3>Spells</h3>
|
||
<div class="ability-section">
|
||
<strong>Rock Toss</strong> <em>(OO)</em>
|
||
<ul>
|
||
<li>(MIG + WLP) +1 attack, 5 MP cost. One creature target. Instantaneous.</li>
|
||
<li>Dylon deals (HR + 10) earth damage to the target.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<h3>Other Actions</h3>
|
||
<div class="ability-section">
|
||
<strong>Coordinated Action</strong> <em>(SS)</em>
|
||
<p>Dylon can use an action and spend 10 Mind Points to perform a free attack with Sea Fin, treating the High Roll as 0 when calculating damage. After this attack is resolved:</p>
|
||
<ul>
|
||
<li>If the tide is high: Node (see previous page) performs a free attack with Hunter’s Bow, treating the High Roll as 0.</li>
|
||
<li>If the tide is low: Node recovers 10 Hit Points instead.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<h2>Special Rules</h2>
|
||
<div class="special-rule-list">
|
||
<ul>
|
||
<li><strong>High Tide Strength:</strong> When the tide is high, all damage dealt by Dylon ignores Resistances.</li>
|
||
<li><strong>I’ll Avenge You!:</strong> When Node (see previous page) is reduced to 0 Hit Points, Dylon recovers from all status effects and loses all his Vulnerabilities. After that, the tide becomes high again.</li>
|
||
<li><strong>Low Tide Tenacity:</strong> When the tide is low, Dylon becomes Resistant to physical damage.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="reflection-text">
|
||
<h3>A Reflection In Two Parts</h3>
|
||
<p>While the T onitranea Rex (see page 176) is a terrible predator that upsets the ecosystem, Node and Dylon showcase how pain and tragedy might warp protective instincts into extremism – a preemptive and short-sighted hunt, fueled by fear rather than understanding. However, the village of Turva and their mentor cultivated a diametrically opposite philosophy, one that still endures in the powerful bond between Node and Dylon: it’s not too late, and the Player Characters might be able to bring those feelings back to surface before they drown in a sea of bitterness.</p>
|
||
</div>
|
||
|
||
<div class="guest-customer">
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|