| """Page copy: how-to, article sections, example, methodology, FAQs. One H1 lives in the hero.""" |
|
|
| HOW_TO_HTML = """ |
| <p>This free <strong>DnD statblock generator</strong> takes a creature you already |
| have in mind β a single sentence, a half-finished homebrew, or three pages of messy |
| notes β and formats it into a clean, rules-ready D&D 5e stat block. You bring |
| the concept; it arranges the numbers, the layout, and the rules language. It does |
| not invent a monster for you, pad the result with lore paragraphs, or tell you how |
| to run the fight: the output is the stat block, formatted the way the official |
| books print them. Everything runs right on this page, free, with no signup.</p> |
| <ol> |
| <li><strong>Paste your concept or notes.</strong> "A knight cursed to rust, still |
| guarding the vault door he died defending" is plenty. So is a wall of rough |
| homebrew text with mechanics you've already half-decided β the generator keeps |
| what you wrote and formats around it.</li> |
| <li><strong>Set the frame (optional).</strong> Pick a target challenge rating, |
| size, and creature type if you know them, tick the box if you want legendary |
| actions, and add any specific mechanical requests β "give it a fear aura," "make |
| the breath weapon recharge 5-6." Blanks are inferred from your concept. Surprise |
| Me rolls the frame for you; your concept always stays yours.</li> |
| <li><strong>Format.</strong> You get the classic layout: identity line, AC, hit |
| points with the dice formula, speed, ability scores, saves, defenses, senses, |
| challenge line, then named traits and actions in rules language.</li> |
| <li><strong>Copy or download.</strong> One click puts the Markdown on your |
| clipboard or saves a .md file for Obsidian, Notion, your VTT, or printed prep.</li> |
| </ol> |
| """ |
|
|
| FORMATS_HTML = """ |
| <p>The output follows the reading conventions every 5e stat block shares, so |
| anyone at your table can pick it up cold. Here is each piece and how to read it:</p> |
| <ul> |
| <li><strong>Name and identity line</strong> β the creature's name, then its size, |
| type, and alignment in italics, exactly where the official books put them.</li> |
| <li><strong>Armor Class</strong> β the number to beat, with the source of the AC |
| (natural armor, rusted plate, and so on) in parentheses.</li> |
| <li><strong>Hit Points</strong> β the average total plus the dice formula, like |
| "119 (14d8 + 56)", so you can take the average or roll for a swingier fight.</li> |
| <li><strong>Speed</strong> β walking speed first, then any swim, fly, climb, or |
| burrow speeds.</li> |
| <li><strong>Ability scores</strong> β all six scores with their modifiers already |
| computed, because ability checks and contested rolls start here.</li> |
| <li><strong>Saves and skills</strong> β only the saving throws and skills where |
| the creature is proficient; anything unlisted uses the bare ability modifier.</li> |
| <li><strong>Defenses</strong> β damage resistances, immunities, vulnerabilities, |
| and condition immunities, spelled out so there is no mid-round ruling to make.</li> |
| <li><strong>Senses and languages</strong> β darkvision and other senses, passive |
| Perception (the number that decides whether an ambush works), then languages.</li> |
| <li><strong>Challenge line</strong> β CR, XP value, and proficiency bonus together, |
| which is everything encounter budgeting needs.</li> |
| <li><strong>Traits</strong> β one to four named passive abilities in "Name. Rules |
| text." form, the same convention as every published block.</li> |
| <li><strong>Actions</strong> β two to five named actions, with Multiattack listed |
| first when the creature makes several attacks on its turn.</li> |
| <li><strong>Bonus Actions & Reactions and Legendary Actions</strong> β printed |
| only when the creature actually has them; a block without them stays short, the |
| way official stat blocks do.</li> |
| </ul> |
| <p>What you will not find: lore paragraphs, tactics advice, or loot tables. Those |
| belong to your notes and your prep β this page keeps the stat block a stat block.</p> |
| """ |
|
|
| EXAMPLE_INTRO_HTML = """ |
| <p>Here is a complete, unedited output from this generator. The concept given was |
| "a knight cursed to rust, still guarding the vault door he died defending", with |
| CR 6, Medium, Construct, legendary actions unchecked, and no extra requests.</p> |
| """ |
|
|
| METHODOLOGY_HTML = """ |
| <p>Formatting is more than layout β a stat block is only rules-ready if its |
| numbers agree with each other. When this <strong>dnd statblock generator</strong> |
| formats your concept, it holds the result to the same consistency rules a careful |
| designer would:</p> |
| <ul> |
| <li><strong>CR-band numbers.</strong> Armor class, hit points, attack bonus, save |
| DCs, and damage per round all land inside the expected band for the target CR, |
| following the Dungeon Master's Guide monster-building guidance. The CR 6 example |
| above shows the shape: AC 16, 119 hit points, +7 to hit, DC 15, 2,300 XP.</li> |
| <li><strong>Hit-dice math that adds up.</strong> The dice formula genuinely |
| averages to the stated total β 14d8 averages 63, plus 56 from a +4 Constitution |
| modifier across 14 hit dice, equals 119. Blocks where the formula and the total |
| disagree are the most common homebrew formatting error, and the generator |
| refuses to produce them.</li> |
| <li><strong>Derived bonuses.</strong> Every attack bonus and save DC in the traits |
| and actions follows from the printed ability scores plus the proficiency bonus in |
| the challenge line, so nothing in the block contradicts anything else.</li> |
| <li><strong>Your numbers win.</strong> If your notes already chose mechanics or |
| values, the generator keeps them and formats around them, correcting only |
| figures that are internally impossible.</li> |
| </ul> |
| <p>When should you hand-tune the result? After the first round or two of play, |
| like any designer: if the party shreds the creature, add hit points; if a save DC |
| is ending turns too reliably, drop it by one. And because CR has always been an |
| estimate, cross-check any block that anchors a whole session with the |
| <a href="https://huggingface.co/spaces/Jordancole21/dnd-challenge-rating-calculator">D&D |
| Challenge Rating Calculator</a> β feed it the finished numbers and it tells you |
| what CR the block actually plays at, independent of what the label says.</p> |
| """ |
|
|
| FAQS = [ |
| ( |
| "How do you write a D&D 5e stat block?", |
| "Follow the official reading order: name, then an italic line with size, " |
| "type, and alignment; then Armor Class, Hit Points with a dice formula, " |
| "and Speed; then the six ability scores with modifiers; then saves, " |
| "skills, defenses, senses, languages, and the challenge line; and finally " |
| "named traits and actions written as \"Name. Rules text.\" The hard part " |
| "is keeping the numbers consistent β the dice must average to the hit " |
| "point total, and every attack bonus and DC must derive from the ability " |
| "scores and proficiency bonus. This generator applies that whole format " |
| "to the concept you bring.", |
| ), |
| ( |
| "What goes in a stat block?", |
| "Everything a DM needs to run the creature mechanically, and nothing " |
| "else: identity line, AC, hit points, speed, ability scores, " |
| "proficiencies, defenses, senses, languages, challenge rating, traits, " |
| "and actions β plus bonus actions, reactions, and legendary actions only " |
| "when the creature has them. Lore, tactics, and treasure live outside the " |
| "block in your prep notes, which is why this tool deliberately leaves " |
| "them out.", |
| ), |
| ( |
| "How is this different from the D&D Monster Builder?", |
| "Direction. This page formats a creature YOU already have: you bring the " |
| "concept or rough homebrew notes, and it returns a clean stat block β " |
| "nothing more. The <a href=\"https://huggingface.co/spaces/Jordancole21/" |
| "dnd-monster-builder\">D&D Monster Builder</a> invents the entire monster " |
| "from scratch: concept, lore, mechanics, DM tactics, and loot, even from " |
| "a blank form. Use the builder when you want ideas; use this generator " |
| "when you have the idea and need it in rules-ready form.", |
| ), |
| ( |
| "Can I paste my existing homebrew notes?", |
| "Yes β that is the main use case. Paste the whole mess: half-written " |
| "abilities, damage numbers you already picked, flavor fragments. The " |
| "generator treats your notes as the source of truth, keeps the mechanics " |
| "and names you chose, fills only the gaps, and fixes a number only when " |
| "it is internally impossible (a dice formula that doesn't average to the " |
| "stated hit points, a DC that no ability score could produce).", |
| ), |
| ( |
| "How do I know the CR is right?", |
| "Treat the printed CR as a claim to verify. Run the finished block " |
| "through the <a href=\"https://huggingface.co/spaces/Jordancole21/" |
| "dnd-challenge-rating-calculator\">D&D Challenge Rating Calculator</a>: " |
| "give it the AC, hit points, attack bonus, and damage, and it computes " |
| "the defensive and offensive CR and the final rating. If that lands a " |
| "step away from your target, nudge hit points or damage rather than " |
| "rewriting the whole block.", |
| ), |
| ( |
| "Can it format legendary monsters?", |
| "Yes β tick the \"Include legendary actions\" box and the block gains a " |
| "Legendary Actions section with uses per round and the action options, " |
| "formatted the way official solo bosses print them. Leave the box " |
| "unchecked and the section is omitted entirely, so ordinary creatures " |
| "stay clean. If your notes already describe legendary mechanics, check " |
| "the box and paste them; they will be kept and formatted.", |
| ), |
| ( |
| "Does it work with the 2024 (5.5e) rules?", |
| "Yes. The layout here β identity line, AC, hit points with dice formula, " |
| "ability scores, then traits and actions β reads correctly under both " |
| "the 2014 rules and the 2024 revision, and stat blocks are broadly " |
| "interchangeable between them. If your table runs the 2024 rules, note " |
| "that its official monsters trend a little stronger at a given CR, so " |
| "lean toward the tougher end of the band when you verify the numbers.", |
| ), |
| ( |
| "Do I need an account or payment to use this?", |
| "No. The generator is free, runs directly on this page, and requires no " |
| "signup. There is a fair-use hourly limit per visitor so the tool stays " |
| "available for everyone.", |
| ), |
| ] |
|
|