add typst
add more vampire region information
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
@@ -0,0 +1,161 @@
|
||||
{
|
||||
"name": "Unicorn",
|
||||
"size": [
|
||||
"L"
|
||||
],
|
||||
"type": "celestial",
|
||||
"source": "MM",
|
||||
"alignment": [
|
||||
"L",
|
||||
"G"
|
||||
],
|
||||
"ac": [
|
||||
12
|
||||
],
|
||||
"hp": {
|
||||
"average": 67,
|
||||
"formula": "9d10 + 18"
|
||||
},
|
||||
"speed": {
|
||||
"walk": 50
|
||||
},
|
||||
"str": 18,
|
||||
"dex": 14,
|
||||
"con": 15,
|
||||
"int": 11,
|
||||
"wis": 17,
|
||||
"cha": 16,
|
||||
"immune": [
|
||||
"poison"
|
||||
],
|
||||
"conditionImmune": [
|
||||
"charmed",
|
||||
"paralyzed",
|
||||
"poisoned"
|
||||
],
|
||||
"senses": [
|
||||
"darkvision 60 ft."
|
||||
],
|
||||
"passive": 13,
|
||||
"languages": [
|
||||
"Celestial",
|
||||
"Elvish",
|
||||
"Sylvan",
|
||||
"telepathy 60 ft."
|
||||
],
|
||||
"cr": "5",
|
||||
"trait": [
|
||||
{
|
||||
"name": "Charge",
|
||||
"entries": [
|
||||
"If the unicorn moves at least 20 ft. straight toward a target and then hits it with a horn attack on the same turn, the target takes an extra 9 ({@dice 2d8}) piercing damage. If the target is a creature, it must succeed on a {@dc 15} Strength saving throw or be knocked prone."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Magic Resistance",
|
||||
"entries": [
|
||||
"The unicorn has advantage on saving throws against spells and other magical effects."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Magic Weapons",
|
||||
"entries": [
|
||||
"The unicorn's weapon attacks are magical."
|
||||
]
|
||||
}
|
||||
],
|
||||
"action": [
|
||||
{
|
||||
"name": "Multiattack",
|
||||
"entries": [
|
||||
"The unicorn makes two attacks: one with its hooves and one with its horn."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Hooves",
|
||||
"entries": [
|
||||
"{@atk mw} {@hit 7} to hit, reach 5 ft., one target. Hit: 11 ({@damage 2d6 + 4}) bludgeoning damage."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Horn",
|
||||
"entries": [
|
||||
"{@atk mw} {@hit 7} to hit, reach 5 ft., one target. Hit: 8 ({@damage 1d8 + 4}) piercing damage."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Healing Touch (3/Day)",
|
||||
"entries": [
|
||||
"The unicorn touches another creature with its horn. The target magically regains 11 ({@dice 2d8 + 2}) hit points. In addition, the touch removes all diseases and neutralizes all poisons afflicting the target."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Teleport (1/Day)",
|
||||
"entries": [
|
||||
"The unicorn magically teleports itself and up to three willing creatures it can see within 5 feet of it, along with any equipment they are wearing or carrying, to a location the unicorn is familiar with, up to 1 mile away."
|
||||
]
|
||||
}
|
||||
],
|
||||
"legendaryGroup": {
|
||||
"name": "Unicorn",
|
||||
"source": "MM"
|
||||
},
|
||||
"legendary": [
|
||||
{
|
||||
"name": "Hooves",
|
||||
"entries": [
|
||||
"The unicorn makes one attack with its hooves."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Shimmering Shield (Costs 2 Actions)",
|
||||
"entries": [
|
||||
"The unicorn creates a shimmering, magical field around itself or another creature it can see within 60 feet of it. The target gains a +2 bonus to AC until the end of the unicorn's next turn."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Heal Self (Costs 3 Actions)",
|
||||
"entries": [
|
||||
"The unicorn magically regains 11 ({@dice 2d8 + 2}) hit points."
|
||||
]
|
||||
}
|
||||
],
|
||||
"page": 294,
|
||||
"spellcasting": [
|
||||
{
|
||||
"name": "Innate Spellcasting",
|
||||
"type": "spellcasting",
|
||||
"headerEntries": [
|
||||
"The unicorn's innate spellcasting ability is Charisma (spell save {@dc 14}). The unicorn can innately cast the following spells, requiring no components:"
|
||||
],
|
||||
"will": [
|
||||
"{@spell detect evil and good}",
|
||||
"{@spell druidcraft}",
|
||||
"{@spell pass without trace}"
|
||||
],
|
||||
"daily": {
|
||||
"1e": [
|
||||
"{@spell calm emotions}",
|
||||
"{@spell dispel evil and good}",
|
||||
"{@spell entangle}"
|
||||
]
|
||||
},
|
||||
"ability": "cha"
|
||||
}
|
||||
],
|
||||
"environment": [
|
||||
"forest"
|
||||
],
|
||||
"soundClip": {
|
||||
"type": "internal",
|
||||
"path": "bestiary/unicorn.mp3"
|
||||
},
|
||||
"traitTags": [
|
||||
"Charge",
|
||||
"Magic Resistance",
|
||||
"Magic Weapons"
|
||||
],
|
||||
"actionTags": [
|
||||
"Multiattack"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,207 @@
|
||||
#import "@preview/mythographer-5e:0.0.2": *
|
||||
|
||||
#show: dnd-template.with(
|
||||
default-config(lang: "en"),
|
||||
)
|
||||
|
||||
#title-page(
|
||||
title: [The Dark Typst],
|
||||
authors: (
|
||||
(name: [Sa1g], organization: [#link("github.com/sa1g/dnd-typst-template")]),
|
||||
),
|
||||
date: datetime.today().display(),
|
||||
)
|
||||
|
||||
#show-outline()
|
||||
|
||||
= Layout
|
||||
|
||||
== #flex-heading[Chapters (`==`)][Chapters]
|
||||
|
||||
#columns(2)[
|
||||
#dnd-dropcap[T][his package is heavily inspired][ by the excellent work of the #link("https://github.com/rpgtex")[*rpgTex*] team and their #link("https://github.com/rpgtex/DND-5e-LaTeX-Template")[*LaTeX D&D template*]. Like its predecessor, this template is designed to help you create beautifully typeset documents for the fifth edition of the world's greatest roleplaying game. It begins by adjusting Typst's default section formatting to a style more familiar to readers. The chapter formatting is displayed above.]
|
||||
|
||||
=== Section (`===`)
|
||||
Sections divide chapters into major thematic groups.
|
||||
|
||||
==== Subsection (`====`)
|
||||
Subsections further organize content for clarity.
|
||||
|
||||
===== Subsubsection (`====`)
|
||||
Subsubsections represent the deepest level of division that still uses a block header. Deeper levels display headers inline.
|
||||
|
||||
====== Paragraph
|
||||
The paragraph format is rarely used in the core rulebooks but remains available as an alternative to the "normal" style. It can be set with `======` or the `dnd-par` function.
|
||||
// Example: #dnd-par[Paragraph]
|
||||
|
||||
======= Subparagraph
|
||||
The subparagraph format, which includes a paragraph indent, will likely feel more familiar to readers. It can be set with `=======` or `dnd-subpar`.
|
||||
// Example: #dnd-subpar[Subparagraph]
|
||||
|
||||
=== Special Sections
|
||||
This module also provides dedicated functions for multi-line section headers commonly found in rulebooks: `dnd-feat` for feats, `dnd-item` for magic items and traps, and `dnd-spell` for spells.
|
||||
|
||||
#dnd-feat[
|
||||
= Typesetting Savant
|
||||
== Typst
|
||||
You have acquired a package that aids in typesetting source material for one of your favorite games. You have advantage on Intelligence checks to typeset new content. On a failed check, you can seek assistance online at the package's website.
|
||||
]
|
||||
|
||||
#dnd-item[
|
||||
= Foo's Quill
|
||||
== Wondrous item, rare
|
||||
The quill has 3 charges. While holding it, you can use an action to expend 1 charge, causing the quill to leap from your hand and draft a contract suited to your situation. The quill regains 1d3 expended charges daily at dawn.
|
||||
]
|
||||
|
||||
#dnd-spell[Beautiful Typesetting][4th level illusion][1 action][5 feet][S, M][Until dispelled][
|
||||
You transform a written message of any length into an exquisite scroll. Each creature within range that can see the scroll must succeed on a Wisdom saving throw or be charmed by you for the spell's duration.
|
||||
|
||||
While charmed in this way, a creature cannot look away from the scroll or willingly move farther from it. A charmed creature can repeat the Wisdom saving throw at the end of each of its turns, ending the effect on itself on a success.
|
||||
]
|
||||
|
||||
=== Map Regions
|
||||
The `dnd-area` function formats map regions. Numbering is automatic and resets with each new `dnd-area` block.
|
||||
|
||||
#dnd-area[
|
||||
= Village of Hommlet
|
||||
A small, welcoming village.
|
||||
|
||||
== Inn of the Welcome Wench
|
||||
The village's central gathering place.
|
||||
|
||||
== Blacksmith's Forge
|
||||
The local blacksmith's workshop.
|
||||
|
||||
= Foo's Castle
|
||||
Foo's modest residence, constructed of mud and sticks.
|
||||
|
||||
== Moat
|
||||
A shallow ditch crossed by a single plank.
|
||||
|
||||
== Entrance
|
||||
A five-foot opening leads to a dirt floor, dimly lit by a hole in the roof above.
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
== Text Boxes
|
||||
#columns(2)[
|
||||
This module provides three distinct environments to visually set apart text and draw the reader’s attention. The `dnd-readaloud` environment is used for passages meant to be read aloud by the Game Master.
|
||||
|
||||
|
||||
#dnd-readaloud[
|
||||
As you approach this module, you sense that the blood and tears of generations have gone into its making. A welcoming warmth embraces you as you type your first words.
|
||||
]
|
||||
|
||||
#dnd-sidebar()[
|
||||
Behold the DndSidebar!
|
||||
][
|
||||
The `dnd-sidebar` is designed for supplementary content, such as sidebars. It does not break across columns and works best when used with a figure environment to float it to a page corner, allowing surrounding text to wrap around it.
|
||||
]
|
||||
|
||||
=== As an Aside
|
||||
The other two environments are `dnd-comment` and `dnd-sidebar`. The `dnd-comment` environment is breakable and can be safely used inline within the main text flow.
|
||||
|
||||
#dnd-comment[This is a Comment Box!][
|
||||
A `dnd-comment` provides minimal visual highlighting for text. While it lacks the ornamentation of `dnd-sidebar`, it can be cleanly broken across columns.
|
||||
]
|
||||
In contrast, the `dnd-sidebar` is not breakable and is ideally positioned as a floated element, as shown below.
|
||||
|
||||
=== Tables
|
||||
The `DndTable` style automatically colors even-numbered rows and defaults to the width of a text line.
|
||||
|
||||
#figure(
|
||||
table(
|
||||
columns: (auto, 1fr),
|
||||
table.header[Table head][Table head],
|
||||
[January], [The Great Gatsby],
|
||||
[February], [To Kill a Mockingbird],
|
||||
[March], [1984],
|
||||
[April], [The Catcher in the Rye],
|
||||
),
|
||||
caption: [Nice Table],
|
||||
)
|
||||
// To make a table span the full page width, define its columns using `fr` units.
|
||||
]
|
||||
|
||||
== Monsters and NPCs
|
||||
#columns(2)[
|
||||
The dnd-monster environment is used to format monster and NPC stat blocks. The module provides a variety of helper functions to simplify populating these stat blocks.
|
||||
|
||||
While creating monster stat blocks is one of the more complex aspects of this template, we have strived to make the process as straightforward as possible.
|
||||
|
||||
Monster sheets can be configured as either single-column or multi-column layouts, depending on your preference.
|
||||
|
||||
The layout generally works well up to three columns, though occasional overshoot in the final column may occur.
|
||||
]
|
||||
#v(1fr)
|
||||
#dnd-monster(json("assets/unicorn.json"), correction-factor: 1.06)
|
||||
|
||||
== Style and Colors
|
||||
#columns(2)[
|
||||
#dnd-dropcap[S][tyle and color settings can be adjusted dynamically][ to suit your needs. You can apply custom configurations directly within functions like `dnd-area`, `dnd-comment`, `dnd-dropcap`, `dnd-feat`, `dnd-item`, `dnd-readaloud`, `dnd-sidebar`, `dnd-spell`, `dnd-monster`, and others.]
|
||||
This is accomplished by passing a configuration object to the function, similar to how you would configure the template using `dnd-template.with`. If you wish to define custom styles or colors, examine `config.typ` in the template and start with `default-config` and `easy-colors`—these will assist you in creating your own unique theme.
|
||||
|
||||
#show: dnd-template.with(
|
||||
is-first: false,
|
||||
easy-colors(primary: rgb(100, 160, 40), secondary: rgb(140, 180, 20), tertiary: colors.PhbTan),
|
||||
)
|
||||
=== Color Example
|
||||
As shown above, the color scheme has been thematically altered. This was achieved by modifying the `easy-colors` configuration within `dnd-template` for this section.
|
||||
|
||||
#dnd-comment[This is a Comment Box!][
|
||||
A `dnd-comment` is a box for minimal highlighting of text. It lacks the ornamentation of `dnd-sidebar`, but it can be broken across columns.
|
||||
]
|
||||
|
||||
#dnd-readaloud[
|
||||
As you approach this module, you sense that the blood and tears of generations have gone into its making. A welcoming warmth embraces you as you type your first words.
|
||||
]
|
||||
|
||||
#dnd-sidebar()[
|
||||
Behold the DndSidebar!
|
||||
][
|
||||
The `dnd-sidebar` is used as a sidebar. It does not break across columns and is best paired with a figure environment to float it to a page corner, allowing surrounding text to wrap around it.
|
||||
]
|
||||
|
||||
Colors can also be applied inline. Below is an example:
|
||||
#dnd-sidebar(
|
||||
config: easy-colors(text-fill: white, tertiary: rgb(100, 0, 60)),
|
||||
)[
|
||||
Behold the DndSidebar!
|
||||
][
|
||||
|
||||
The `dnd-sidebar` is used as a sidebar. It does not break across columns and is best paired with a figure environment to float it to a page corner, allowing surrounding text to wrap around it.
|
||||
]
|
||||
A future release will introduce more streamlined inline support for text color injection, making the process cleaner and more intuitive.
|
||||
]
|
||||
|
||||
#show: dnd-template.with(
|
||||
is-first: false,
|
||||
)
|
||||
|
||||
#dnd-image-heading-part(
|
||||
rect(fill: orange, height: 100%, width: 100%),
|
||||
[Stylized\ Level 1 Heading\ #text(size: 0.5em)[The orange background simulates an image #footnote[It's not a real image to reduce the size of the template.]]#v(7em)],
|
||||
title-unstyled: [Custom Images],
|
||||
)
|
||||
// #dnd-image-heading-part(image("/img/behind-header-example.jpg"), [Stylized\ Level 1 Heading #v(7em)], title-unstyled: [Custom Images])
|
||||
|
||||
#columns(2)[
|
||||
#dnd-dropcap[U][sing functions like `dnd-image-heading-section`][ and `dnd-image-heading-part`, you can easily overlay or place images behind your `level-1` (=) and `level-2` (==) headings.
|
||||
|
||||
Due to Typst's internal layout behavior, a full-page image requires its own dedicated page. Therefore, the template only supports full-page images for level-1 headings.
|
||||
]
|
||||
]
|
||||
#dnd-image-heading-section(rect(fill: red, height: 20em, width: 62em), 2, [A New Beginning'])
|
||||
// #dnd-image-heading-section(image("<your-image>"), 2, [A New Beginning'], )
|
||||
// #dnd-image-heading-section(image("/img/over-header-example.png", height: 39em), 2, [A New Beginning'], )
|
||||
#columns(2)[
|
||||
// Currently, Typst has a #link("https://github.com/typst/typst/issues/4763")[*known bug*] where image heights are not measured correctly. As a result, when placing an image above a heading, you must explicitly specify its dimensions, as shown in the commented example above.
|
||||
|
||||
*The red rectangle simulates an image.*
|
||||
|
||||
Note that the chapter counter resets between parts, following the convention used in official D&D publications.
|
||||
|
||||
=== Image Credits
|
||||
The sample background image is sourced from #link("https://lostandtaken.com/")[Lost and Taken].
|
||||
]
|
||||
@@ -0,0 +1,135 @@
|
||||
#set page(paper: "a4", fill: tiling(image("assets/dnd_background.jpeg")), margin: (x:4em , y:3em))
|
||||
#place(
|
||||
top + center,
|
||||
float: true,
|
||||
scope: "parent",
|
||||
text(font: "EB Garamond", weight: "extrabold", size: 3em)[
|
||||
RPG Checkliste
|
||||
],
|
||||
)
|
||||
#linebreak()
|
||||
|
||||
#let green = rgb(34, 134, 34, 255)
|
||||
#let yellow = rgb(244, 196, 48, 255)
|
||||
#let red = rgb(255, 0, 32, 255)
|
||||
|
||||
#let stroke_line = (paint: rgb(0, 0, 0, 96))
|
||||
#let stroke_dot = (dash: "dotted", paint: rgb(0, 0, 0, 127))
|
||||
|
||||
#set text(font: "Merriweather", weight: "bold", size: 1em)
|
||||
|
||||
#set par(spacing: 1.6em)
|
||||
Spielleiter: #box(width: 1fr)[#line(length: 100%)]
|
||||
|
||||
Spieler (kann leer bleiben): #box(width: 1fr)[#line(length: 100%)]
|
||||
|
||||
Geplantes Spielthema (Horror, Fantasy etc.): #box(width: 1fr)[#line(length: 100%)]
|
||||
|
||||
Wenn das Ganze ein Film wäre, was wäre die Altersfreigabe? (0, 6, 12, 16, 18): #box(width: 1fr)[#line(length: 100%)]
|
||||
|
||||
#set par(
|
||||
spacing: 1em
|
||||
)
|
||||
|
||||
Kreuze die Farbe an, bezogen auf Setting und Story.
|
||||
|
||||
#box(width: 1em, height: 1em, stroke: green)
|
||||
#text(fill: green)[*Grün*]: Damit kann ich umgehen. Inkludierbar.
|
||||
|
||||
#box(width: 1em, height: 1em, stroke: yellow)
|
||||
#text(fill: yellow)[*Gelb*]: Ok, wenn es genannt wird. Im Spiel möglich, aber bitte abklären. Unsicher.
|
||||
|
||||
#box(width: 1em, height: 1em, stroke: red, radius: 0.5em)
|
||||
#text(fill: red)[*Rot*]: Klares Nein! Nicht inkludieren.
|
||||
|
||||
#set text(font: "Merriweather", weight: "regular", size: 1em)
|
||||
|
||||
#let checkboxes(body, stroke: stroke_dot) = {
|
||||
box[
|
||||
#text(size: 0.8em)[
|
||||
#body
|
||||
#box(width: 1fr)[#line(length: 100%, stroke: stroke)]
|
||||
#box(width: 1em, height: 1em, stroke: green)
|
||||
#box(width: 1em, height: 1em, stroke: yellow)
|
||||
#box(width: 1em, height: 1em, stroke: red, radius: 0.5em)
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
#columns(2, gutter: 1em)[
|
||||
#text(size: 1.3em, fill: purple)[Horror]
|
||||
#checkboxes[Gewalt]
|
||||
#checkboxes[Gewalt an Tieren]
|
||||
#checkboxes[Gewalt an Kindern]
|
||||
#checkboxes[Ratten]
|
||||
#checkboxes[Spinnen]
|
||||
#checkboxes[Blut]
|
||||
#checkboxes[Augäpfel]
|
||||
#checkboxes[Insekten]
|
||||
#checkboxes[Dämonen]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
|
||||
#text(size: 1.3em, fill: purple)[Beziehungen]
|
||||
#checkboxes[Romantik]
|
||||
#checkboxes[#box(width: 2em) Andeutung]
|
||||
#checkboxes[#box(width: 2em) Explizit]
|
||||
#checkboxes[#box(width: 2em) Zwischen PCs und NPCs]
|
||||
#checkboxes[#box(width: 2em) Zwischen PCs]
|
||||
#checkboxes[Sex]
|
||||
#checkboxes[#box(width: 2em) Andeutung]
|
||||
#checkboxes[#box(width: 2em) Explizit]
|
||||
#checkboxes[#box(width: 2em) Zwischen PCs und NPCs]
|
||||
#checkboxes[#box(width: 2em) Zwischen PCs]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
|
||||
#text(size: 1.3em, fill: purple)[Weitere Themen]
|
||||
#checkboxes(stroke: (paint: rgb(0, 0, 0, 127)))[]
|
||||
#checkboxes(stroke: (paint: rgb(0, 0, 0, 127)))[]
|
||||
#checkboxes(stroke: (paint: rgb(0, 0, 0, 127)))[]
|
||||
#checkboxes(stroke: (paint: rgb(0, 0, 0, 127)))[]
|
||||
|
||||
#colbreak()
|
||||
|
||||
#text(size: 1.3em, fill: purple)[Soziale und Kulturelle Probleme]
|
||||
#checkboxes[Homophobie]
|
||||
#checkboxes[Rassismus]
|
||||
#checkboxes[Sexismus]
|
||||
#checkboxes[Spezifische kulturelle Probleme]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
|
||||
#text(size: 1.3em, fill: purple)[Mentale und Physische Probleme]
|
||||
#checkboxes[Folter]
|
||||
#checkboxes[(Sexueller) Missbrauch]
|
||||
#checkboxes[Selbstverletzung]
|
||||
#checkboxes[Gaslighting]
|
||||
#checkboxes[Verstümmelung]
|
||||
#checkboxes[Klaustrophobie/Raumangst]
|
||||
#checkboxes[Agoraphobie/Platzangst]
|
||||
#checkboxes[Krebs]
|
||||
#checkboxes[Schwangerschaft, Abtreibung, Fehlgeburten]
|
||||
#checkboxes[Paralyse/Physikalische Fixierung]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
#checkboxes(stroke: stroke_line)[]
|
||||
|
||||
|
||||
|
||||
#set text(font: "Merriweather", weight: "bold", size: 0.9em)
|
||||
|
||||
Möchtest du mit dem Spielleiter bestimmte Themen noch einmal genauer besprechen? Wenn ja, welche?
|
||||
#set par(spacing: 1.5em)
|
||||
#box(width: 1fr)[#line(length: 100%, stroke: stroke_line)]
|
||||
|
||||
#box(width: 1fr)[#line(length: 100%, stroke: stroke_line)]
|
||||
|
||||
#box(width: 1fr)[#line(length: 100%, stroke: stroke_line)]
|
||||
|
||||
#box(width: 1fr)[#line(length: 100%, stroke: stroke_line)]
|
||||
]
|
||||
Reference in New Issue
Block a user