Commit 0222696c authored by Julian Reicht's avatar Julian Reicht
Browse files

Initialisierung Template

parent 9f55063c
\section{Spam}
Ich dachte mir so, wow jetzt wo ich in LaTeX einfache Datenstrukturen wie Listen und grundlegende Kontrollstrukturen wie for-each behersche sollte es doch ein einfaches sein, \glqq The Art of Pi\grqq\ in TeX nachzuprogrammieren. Ja da hab ich mich wohl geirrt, es ist immernoch verdammt aufwändig und nach viel zu langem rumprobieren kam nur das folgende Raus:
\begin{center}
\tikzstyle{mycircle}=[ circle , draw , thick ]
\definecolor{0}{HTML}{ff0000}
\definecolor{1}{HTML}{ffbf00}
\definecolor{2}{HTML}{bfff00}
\definecolor{3}{HTML}{00ff00}
\definecolor{4}{HTML}{00ffbf}
\definecolor{5}{HTML}{00bfff}
\definecolor{6}{HTML}{0080ff}
\definecolor{7}{HTML}{0000ff}
\definecolor{8}{HTML}{bf00ff}
\definecolor{9}{HTML}{ff0080}
\begin{tikzpicture}
\def\pia{0,1,2,3,4,5,6,7,8,9}
\def\pib{0,1,2,3,4,5,6,7,8,9}
\node[mycircle, 1] (1) at(-4.7,6.4) { 1};
\node[mycircle, 2] (2) at ( -7.6, 2.4) { 2 };
\node[mycircle, 3] (3) at ( -7.6, -2.4) { 3 };
\node[mycircle, 4] (4) at ( -4.7, -6.4) { 4 };
\node[mycircle, 5] (5) at ( 0, -8) { 5 };
\node[mycircle, 6] (6) at ( 4.7, -6.4) { 6 };
\node[mycircle, 7] (7) at ( 7.6, -2.4) { 7 };
\node[mycircle, 8] (8) at ( 7.6, 2.4) { 8 };
\node[mycircle, 9] (9) at ( 4.7, 6.4) { 9 };
\node[mycircle, 0] (0) at(0,8) { 0};
\foreach \x in \pia
\foreach \y in \pib
\draw[\x,thick] (\x) edge [bend left] (\y);
\end{tikzpicture}
\ No newline at end of file
This diff is collapsed.
\RequirePackage {expl3}
\ProvidesExplPackage {dnd} {2019/07/18} {0.7.1} { Template for DnD 5e material }
\bool_new:N \c__dnd_isclass_bool
\input {dndoptions.clo}
\input {dndcore.def}
\RequirePackage {expl3}
\ProvidesExplClass {dndbook} {2019/07/18} {0.7.1} { Template for DnD 5e material }
\bool_new:N \c__dnd_isclass_bool
\bool_set_true:N \c__dnd_isclass_bool
\input {dndoptions.clo}
\LoadClass {book}
\input {dndcore.def}
\ExplSyntaxOn
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Package Dependencies
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Helps prevent option clash with other packages that include xcolor
\PassOptionsToPackage {table} {xcolor}
\RequirePackage {array}
\RequirePackage {colortbl}
\RequirePackage {enumitem}
\RequirePackage {etoolbox}
\RequirePackage {textcomp,gensymb} % degree symbol for italian ordinals
\RequirePackage {hang} % hanging paragraphs
\RequirePackage {ifluatex}
\RequirePackage {keycommand}
\RequirePackage [autolanguage] {numprint} % localization of thousands separator
\RequirePackage {tabularx} % variable-width table columns
\RequirePackage [breakable,skins,xparse]{tcolorbox} % styled text boxes
\RequirePackage {tikz} % drawing ornaments and lines
\RequirePackage {xcolor}
\RequirePackage {xkeyval}
\RequirePackage {xparse} % \NewDocumentCommand and expl3
\sys_if_engine_luatex:T
{
\RequirePackage {luacolor}
}
\bool_if:NT \l__dnd_layout_bool
{
\RequirePackage {geometry}
\RequirePackage {microtype} % Improve ragged2e hyphenation and overfull boxes
\RequirePackage {ragged2e}
\RequirePackage [titles] {tocloft} % multi-column toc
\RequirePackage {titlesec} % Used to adjust (sub)section formatting
\bool_if:NT \l__dnd_multitoc_bool
{ \RequirePackage [toc] {multitoc} }
% Set page geometry.
\geometry
{
hmargin = .75in, % Left and right margins
top = .46in, % Top of text area to top of page
bottom = .8in, % Bottom of text area to bottom of page
footskip = .32in, % Bottom of text area to bottom of footer text
columnsep = .33in, % Space between columns
}
% Set paragraph and line spacing
\setlength {\parindent} {1em}
\setlength {\RaggedRightRightskip} {0pt plus 1em}
\setlength {\RaggedRightParindent} {\parindent}
% Restrict hyphenation
\tolerance = 1
\emergencystretch = \maxdimen
\hyphenpenalty = 10000
\hbadness = 10000
% Set left justification if not justified
\bool_if:NF \l__dnd_justified_bool
{ \RaggedRight }
% Customize itemize environment.
\setlist{leftmargin=1em}
\setitemize{noitemsep,topsep=0.5ex}
\renewcommand{\labelitemi}{\raisebox{0.25ex}{\tiny{\( \bullet \)}}}
}
% Load other modules of this package after all dependencies to avoid load order
% conflicts (e.g., package options).
% Low-level modules first.
\RequirePackage {lib/compat} % compatibility definitions
\RequirePackage {lib/dndutility} % utility functions
\RequirePackage {lib/dndcolors} % color definitions
\RequirePackage {lib/dndfonts} % font definitions
\RequirePackage {lib/dndstrings} % Load document strings
\RequirePackage {lib/dnddeprecated} % Deprecated macros
% Main modules in alphabetical order
\RequirePackage {lib/dndcomment} % inline comment boxes
\RequirePackage {lib/dndheader} % fancy headers and footers
\RequirePackage {lib/dndmonster} % \monsterbox definition
\RequirePackage {lib/dndpaperbox} % \paperbox definition
\RequirePackage {lib/dndquote} % \quotebox definition
\RequirePackage {lib/dndreadaloud} % read-aloud text
\RequirePackage {lib/dndsections} % section styling
\RequirePackage {lib/dndsidebar} % sidebars
\RequirePackage {lib/dndspell} % \spell definition
\RequirePackage {lib/dndtable} % \dndtable definition
\ExplSyntaxOn
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Class / Package options
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Provides class / package option processing of l3keys in LaTeX2e
\RequirePackage {l3keys2e}
% deprecate warning used in options and throughout the collection
\msg_new:nnn {dnd} {deprecated} { #1 ~ is ~ deprecated ~ and ~ will ~ be ~ removed ~ in ~ version ~ #2. ~ #3 }
\cs_new_protected:Npn { \__dnd_deprecated:nnn } #1#2#3
{
\msg_warning:nnnnn { dnd } { deprecated } {#1} {#2} {#3}
}
\cs_new_protected:Npn { \__dnd_deprecated:nn } #1#2
{
\msg_warning:nnnnn { dnd } { deprecated } {#1} {#2} {}
}
% Messages for unknown options
\msg_new:nnn {dnd} { options / unknown_class } { Unknown ~ option ~ " #1 " ~ passed ~ to ~ book ~ class. }
\msg_new:nnn {dnd} { options / unknown_package } { Unknown ~ option ~ " #1 ". }
% These booleans are not set directly by an option (i.e. instead set by .code)
\bool_new:N \l__dnd_show_background_bool
\bool_new:N \l__dnd_show_footer_scroll_bool
\bool_new:N \l__dnd_justified_bool
\bool_new:N \l__dnd_multitoc_bool
\bool_new:N \l__dnd_layout_bool
\bool_set_true:N \l__dnd_multitoc_bool
\bool_set_eq:NN \l__dnd_layout_bool \c__dnd_isclass_bool
% BEGIN section to remove in version 1.0.0
\bool_set_true:N \l__dnd_layout_bool
\bool_new:N \l__dnd_layout_set_bool
% END section to remove in version 1.0.0
\keys_define:nn { dnd / options }
{
% Large-scale styling choice
bg .choice:,
bg / full .code:n =
{
\bool_set_true:N \l__dnd_show_background_bool
\bool_set_true:N \l__dnd_show_footer_scroll_bool
},
bg / print .code:n =
{
\bool_set_false:N \l__dnd_show_background_bool
\bool_set_true:N \l__dnd_show_footer_scroll_bool
},
bg / none .code:n =
{
\bool_set_false:N \l__dnd_show_background_bool
\bool_set_false:N \l__dnd_show_footer_scroll_bool
},
bg .initial:n = full,
% Justified text
justified .code:n =
{
\bool_set_true:N \l__dnd_justified_bool
},
justified .value_forbidden:n = true,
% Avoid multi-column toc
nomultitoc .code:n =
{
\bool_set_false:N \l__dnd_multitoc_bool
},
nomultitoc .value_forbidden:n = true,
% Apply layout formatting
%layout .bool_set:N = \l__dnd_layout_bool,
layout .code:n =
{
\tl_if_eq:nnTF {true} {#1}
{ \bool_set_true:N \l__dnd_layout_bool }
{ \bool_set_false:N \l__dnd_layout_bool }
\bool_set_true:N \l__dnd_layout_set_bool
}, % Remove and replace with .bool_set:N in 1.0.0
layout .value_required:n = true,
% Unknown option handling
unknown .code:n =
{
\bool_if:NTF \c__dnd_isclass_bool
{
\msg_info:nnx { dnd } { options / unknown_class } {\l_keys_key_tl}
\PassOptionsToClass { \l_keys_key_tl } { book }
}
{
\msg_error:nnx { dnd } { options / unknown_package } {\l_keys_key_tl}
}
},
% Deprecated options
bg-full .code:n =
{
\__dnd_deprecated:nnn { Option ~ "bg-full" } {1.0} { Use ~ "bg = full" ~ instead. }
\bool_set_true:N \l__dnd_show_background_bool
\bool_set_true:N \l__dnd_show_footer_scroll_bool
},
bg-full .value_forbidden:n = true,
bg-none .code:n =
{
\__dnd_deprecated:nnn { Option ~ "bg-none" } {1.0} { Use ~ "bg = none" ~ instead. }
},
bg-none .value_forbidden:n = true,
bg-print .code:n =
{
\__dnd_deprecated:nnn { Option ~ "bg-print" } {1.0} { Use ~ "bg = print" ~ instead. }
\bool_set_true:N \l__dnd_show_footer_scroll_bool
},
bg-print .value_forbidden:n = true,
}
\ProcessKeysOptions { dnd / options }
% BEGIN section to remove in version 1.0.0
\bool_if:NF \c__dnd_isclass_bool
{
\bool_if:NF \l__dnd_layout_set_bool
{
\msg_new:nnn {dnd} { options / layout_false } { Package ~ option ~ "layout" ~ will ~ default ~ to ~ false ~ in ~ 1.0.0. }
\msg_warning:nn {dnd} { options / layout_false }
}
}
% END section to remove in version 1.0.0
\relax
\@nameuse{bbl@beforestart}
\pgfsyspdfmark {pgfid1}{3552215}{51340433}
\pgfsyspdfmark {pgfid2}{20129219}{51340433}
\pgfsyspdfmark {pgfid3}{36706222}{51340433}
\babel@aux{english}{}
\babel@aux{english}{}
\pgfsyspdfmark {pgfid4}{3552215}{51340433}
\pgfsyspdfmark {pgfid5}{20129219}{51340433}
\pgfsyspdfmark {pgfid6}{36706222}{51340433}
\pgfsyspdfmark {pgfid7}{6139554}{2273397}
\pgfsyspdfmark {pgfid8}{3552215}{51340433}
\pgfsyspdfmark {pgfid9}{20129219}{51340433}
\pgfsyspdfmark {pgfid10}{36706222}{51340433}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Sections}{1}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{Section}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{Subsection}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{Subsubsection}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Paragraph}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {subparagraph}{Subparagraph}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Items and Spells}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{Foo's Quill}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{Beautiful Typesetting}{1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Map Regions}{1}\protected@file@percent }
\newlabel{area:Village of Hommlet}{{1}{1}}
\@writefile{toc}{\contentsline {subsection}{1. Village of Hommlet}{1}\protected@file@percent }
\newlabel{subarea:Inn of the Welcome Wench}{{1a}{1}}
\@writefile{toc}{\contentsline {subsubsection}{1a. Inn of the Welcome Wench}{1}\protected@file@percent }
\newlabel{subarea:Blacksmith's Forge}{{1b}{1}}
\@writefile{toc}{\contentsline {subsubsection}{1b. Blacksmith's Forge}{1}\protected@file@percent }
\newlabel{area:Foo's Castle}{{2}{1}}
\@writefile{toc}{\contentsline {subsection}{2. Foo's Castle}{1}\protected@file@percent }
\newlabel{subarea:Moat}{{2a}{1}}
\@writefile{toc}{\contentsline {subsubsection}{2a. Moat}{1}\protected@file@percent }
\newlabel{subarea:Entrance}{{2b}{1}}
\@writefile{toc}{\contentsline {subsubsection}{2b. Entrance}{1}\protected@file@percent }
\pgfsyspdfmark {pgfid11}{36706221}{2273397}
\pgfsyspdfmark {pgfid15}{3552215}{51340433}
\pgfsyspdfmark {pgfid16}{20129219}{51340433}
\pgfsyspdfmark {pgfid17}{36706222}{51340433}
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Text Boxes}{2}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{As an Aside}{2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{Tables}{2}\protected@file@percent }
\pgfsyspdfmark {pgfid18}{9605850}{2273397}
\pgfsyspdfmark {pgfid24}{3552215}{51340433}
\pgfsyspdfmark {pgfid25}{20129219}{51340433}
\pgfsyspdfmark {pgfid26}{36706222}{51340433}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Monsters and NPCs}{3}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\pgfsyspdfmark {pgfid27}{36706221}{2273396}
\pgfsyspdfmark {pgfid30}{3552215}{51340433}
\pgfsyspdfmark {pgfid31}{20129219}{51340433}
\pgfsyspdfmark {pgfid32}{36706222}{51340433}
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Colors}{4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{Themed Colors}{4}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {4.1}{\ignorespaces \relax }}{4}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{tab:colors}{{4.1}{4}}
\pgfsyspdfmark {pgfid33}{8541559}{2273396}
This diff is collapsed.
\documentclass[letterpaper,twocolumn,openany]{book}
\usepackage[layout=true]{dnd}
% Use babel or polyglossia to automatically redefine macros for terms
% Armor Class, Level, etc...
% Default output is in English; captions are located in lib/dndstring-captions.sty.
% If no captions exist for a language, English will be used.
%1. To load a language with babel:
% \usepackage[<lang>]{babel}
%2. To load a language with polyglossia:
% \usepackage{polyglossia}
% \setdefaultlanguage{<lang>}
\usepackage[english]{babel}
%\usepackage[italian]{babel}
% For further options (multilanguage documents, hypenations, language environments...)
% please refer to babel/polyglossia's documentation.
\usepackage[utf8]{inputenc}
\usepackage[singlelinecheck=false]{caption}
\usepackage{lipsum}
\usepackage{listings}
\usepackage{shortvrb}
\usepackage{stfloats}
\captionsetup[table]{labelformat=empty,font={sf,sc,bf,},skip=0pt}
\MakeShortVerb{|}
\lstset{%
basicstyle=\ttfamily,
language=[LaTeX]{TeX},
breaklines=true,
}
\title{The Dark \LaTeX{} \\
\large An Example of the dndbook Class}
\author{The rpgTeX Team}
\date{2019/07/18}
\begin{document}
\frontmatter
\maketitle
\tableofcontents
\mainmatter%
\chapter{Sections}
\DndDropCapLine{T}{his package is designed to aid you in} writing beautifully typeset documents for the fifth edition of the world's greatest roleplaying game. It starts by adjusting the section formatting from the defaults in \LaTeX{} to something a bit more familiar to the reader. The chapter formatting is displayed above.
\section{Section}
Sections break up chapters into large groups of associated text.
\subsection{Subsection}
Subsections further break down the information for the reader.
\subsubsection{Subsubsection}
Subsubsections are the furthest division of text that still have a block header. Below this level, headers are displayed inline.
\paragraph{Paragraph}
The paragraph format is seldom used in the core books, but is available if you prefer the other style.
\subparagraph{Subparagraph}
The subparagraph format with the paragraph indent is likely going to be more familiar to the reader.
\section{Items and Spells}
The module also includes the functions |\DndItemHeader| and |\DndSpellHeader| to aid in the proper typesetting of items (including magic items and traps) and spells.
\DndItemHeader{Foo's Quill}{Wondrous item, rare}
This quill has 3 charges. While holding it, you can use an action to expend 1 of its charges. The quill leaps from your hand and writes a contract applicable to your situation.
The quill regains 1d3 expended charges daily at dawn.
\DndSpellHeader%
{Beautiful Typesetting}
{4th-level illusion}
{1 action}
{5 feet}
{S, M (ink and parchment, which the spell consumes)}
{Until dispelled}
You are able to transform a written message of any length into a beautiful scroll. All creatures within range that can see the scroll must make a wisdom saving throw or be charmed by you until the spell ends.
While the creature is charmed by you, they cannot take their eyes off the scroll and cannot willingly move away from the scroll. Also, the targets can make a wisdom saving throw at the end of each of their turns. On a success, they are no longer charmed.
\section{Map Regions}
The map region functions |\area| and |\subarea| provide automatic numbering of areas.
\DndArea{Village of Hommlet}
This is the village of hommlet.
\DndSubArea{Inn of the Welcome Wench}
Inside the village is the inn of the Welcome Wench.
\DndSubArea{Blacksmith's Forge}
There's a blacksmith in town, too.
\DndArea{Foo's Castle}
This is foo's home, a hovel of mud and sticks.
\DndSubArea{Moat}
This ditch has a board spanning it.
\DndSubArea{Entrance}
A five-foot hole reveals the dirt floor illuminated by a hole in the roof.
\chapter{Text Boxes}
The module has three environments for setting text apart so that it is drawn to the reader's attention. |DndReadAloud| is used for text that a game master would read aloud.
\begin{DndReadAloud}
As you approach this module you get a sense that the blood and tears of many generations went into its making. A warm feeling welcomes you as you type your first words.
\end{DndReadAloud}
\section{As an Aside}
The other two environments are the |DndComment| and the |DndSidebar|. The |DndComment| is breakable and can safely be used inline in the text.
\begin{DndComment}{This Is a Comment Box!}
A |DndComment| is a box for minimal highlighting of text. It lacks the ornamentation of |DndSidebar|, but it can handle being broken over a column.
\end{DndComment}
The |DndSidebar| is not breakable and is best used floated toward a page corner as it is below.
\begin{DndSidebar}[float=!b]{Behold the DndSidebar!}
The |DndSidebar| is used as a sidebar. It does not break over columns and is best used with a figure environment to float it to one corner of the page where the surrounding text can then flow around it.
\end{DndSidebar}
\section{Tables}
The |DndTable| colors the even rows and is set to the width of a line by default.
\begin{DndTable}[header=Nice Table]{XX}
\textbf{Table head} & \textbf{Table head} \\
Some value & Some value \\
Some value & Some value \\
Some value & Some value
\end{DndTable}
\chapter{Monsters and NPCs}
% Monster stat block
\begin{DndMonster}[float*=b,width=\textwidth + 8pt]{Monster Foo}
\begin{multicols}{2}
\DndMonsterType{Medium aberration (metasyntactic variable), neutral evil}
% If you want to use commas in the key values, enclose the values in braces.
\DndMonsterBasics[
armor-class = {9 (12 with \emph{mage armor})},
hit-points = {\DndDice{3d8 + 3}},
speed = {30 ft., fly 30 ft.},
]
\DndMonsterAbilityScores[
str = 12,
dex = 8,
con = 13,
int = 10,
wis = 14,
cha = 15,
]
\DndMonsterDetails[
%saving-throws = {Str +0, Dex +0, Con +0, Int +0, Wis +0, Cha +0},
%skills = {Acrobatics +0, Animal Handling +0, Arcana +0, Athletics +0, Deception +0, History +0, Insight +0, Intimidation +0, Investigation +0, Medicine +0, Nature +0, Perception +0, Performance +0, Persuasion +0, Religion +0, Sleight of Hand +0, Stealth +0, Survival +0},
%damage-vulnerabilities = {cold},
%damage-resistances = {bludgeoning, piercing, and slashing from nonmagical attacks},
%damage-immunities = {poison},
%condition-immunities = {poisoned},
senses = {darkvision 60 ft., passive Perception 10},
languages = {Common, Goblin, Undercommon},
challenge = 1,
]
% Traits
\DndMonsterAction{Innate Spellcasting}
Foo's spellcasting ability is Charisma (spell save DC 12, +4 to hit with spell attacks). It can innately cast the following spells, requiring no material components:
\begin{DndMonsterSpells}
\DndInnateSpellLevel{misty step}
\DndInnateSpellLevel[3]{fog cloud, rope trick}
\DndInnateSpellLevel[1]{identify}
\end{DndMonsterSpells}
\DndMonsterAction{Spellcasting}
Foo is a 2nd-level spellcaster. Its spellcasting ability is Charisma (spell save DC 12, +4 to hit with spell attacks). It has the following sorcerer spells prepared:
\begin{DndMonsterSpells}
\DndMonsterSpellLevel{blade ward, fire bolt, light, shocking grasp}
\DndMonsterSpellLevel[1][3]{burning hands, mage armor, shield}
\end{DndMonsterSpells}
\DndMonsterSection{Actions}
\DndMonsterAction{Multiattack}
The foo makes two melee attacks.
%Default values are shown commented out
\DndMonsterAttack[
name=Dagger,
%distance=both, % valid options are in the set {both,melee,ranged},
%type=weapon, %valid options are in the set {weapon,spell}
mod=+3,
%reach=5,
%range=20/60,
%targets=one target,
dmg=\DndDice{1d4+1},
dmg-type=piercing,
%plus-dmg=,
%plus-dmg-type=,
%or-dmg=,
%or-dmg-when=,
%extra=,
]
%\DndMonsterMelee calls \DndMonsterAttack with the melee option
\DndMonsterMelee[
name=Flame Tongue Longsword,
mod=+3,
%reach=5,
%targets=one target,
dmg=\DndDice{1d8+1},
dmg-type=slashing,
plus-dmg=\DndDice{2d6},
plus-dmg-type=fire,
or-dmg=\DndDice{1d10+1},
or-dmg-when=if used with two hands,
%extra=,
]
%\DndMonsterRanged calls \DndMonsterAttack with the ranged option
\DndMonsterRanged[
name=Assassin's Light Crossbow,
mod=+1,
range=80/320,
dmg=\DndDice{1d8},
dmg-type=piercing,
%plus-dmg=,
%plus-dmg-type=,
%or-dmg=,
%or-dmg-when=,
extra={, and the target must make a DC 15 Constitution saving throw, taking 24 (7d6) poison damage on a failed save, or half as much damage on a successful one}
]
% Legendary Actions
\DndMonsterSection{Legendary Actions}
The foo can take 3 legendary actions, choosing from the options below. Only one legendary action option can be used at a time and only at the end of another creature's turn. The foo regains spent legendary actions at the start of its turn.
\begin{DndMonsterLegendaryActions}
\DndMonsterLegendaryAction{Move}{The foo moves up to its speed.}