Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Themes, configurable image floats, quotation boxes, new stat blocks, and more! #360

Open
wants to merge 6 commits into
base: dev
Choose a base branch
from

Conversation

AlanQuatermain
Copy link
Contributor

I've been tinkering for a long while. In my spare time I've been doing things like porting the original Dragonlance adventure to 5e, porting the original Eberron adventure cycle, and attempting to put together a codex of all things Dark Sun for 5e, including an attempt at 'real' psionic rules for mental combat. Along the way I've made numerous additions to the base classes, mostly to scratch at itches I had while working. These have built up over quite a while, so there's a lot to look at here, but it's all been used successfully in my various passion projects.

Themes

There is now an eberron theme that will set some fonts and recto/verso background images to match the Eberron book stylings. Top-level titles get some new fonts, and a couple of colors change.

You can now choose between three font sets. The default uses the original font settings from the rpgtex implementation. In addition, you can provide the option fonts=wotc or fonts=dmsguild. Use wotc to select the fonts that WotC uses in their published books (you'll have to pay for the fonts, and I can't speak to any trade dress issues that might arise). I like using this because I'm vain and I mostly write these adventures for myself, for fun. Yes, I'm a typography nerd, this is fun. The dmsguild version uses the fonts specified by the DM's Guild materials.

I've included details on where to obtain each of these fonts. The official DM's Guild fonts are all available for free download, the paid fonts can be found at either MyFonts or Adobe.

Images

I've added support for floatable images using tcolorbox, with \DndImage providing a plain image, and \DndCaptionedImage for an image with a corresponding caption, in the correct (themed) font. You can provide options from tcolorbox to both of these to provide some fine-tuning or to have images extend out to the edges of the printed page, for example.

Stat Blocks

You can now create stat blocks for sentient items via \DndSentientItemAbilityScores. Sentient items use Int, Wis, Cha, and Alignment.

Added psionic as an attack type, alongside weapon and spell. I'm working on some Dark Sun ideas, and one approach I have defines psionic attacks.

Added support for vehicle stat blocks using the DndVehicle environment. This functions the same way as for DndMonster, with appropriate no-bg variants. There are corresponding commands for the various components of the stat block:

  • DndVehicleBasics
  • DndVehicleDetails
  • DndVehicleAbilityScores
  • DndVehicleSection
  • DndVehicleAction
  • DndVehicleSpeed
  • DndVehicleComponent
  • DndVehicleControl
  • DndVehicleMovement
  • DndVehicleWeapon
  • DndVehicleAttack

New Boxed Text Environments

You can add quotation boxes now with the DndQuotation and DndAside environments. DndQuotation expects an attribution argument, and is intended for either book quotes or for notes from e.g. Tasha or Xanathar. DndAside provides the same without an attribution. Both render in the form of a small sticky note attached to the page, as close as I can get it to the ones in the official books.

Areas

Areas have been updated to allow for specifying ranges. You can use \DndAreaRange to supply an area description for e.g. "Area 1.10–1.12". Area references are now also updated to make it easier to reference areas outside the current set. For instance, if you're in "F.3." and you want to build a reference back to "C.5", you can now do so directly.

\DndAreaRef now generates the C5 string, rather than a page number, since that's the more common usage. To get a page number, there's a new \DndAreaPageRef command which takes on the original behavior.

Utilities

There are new \DndSkillCheck and \DndAbilityCheck macros that can be used to generate DC checks using localized strings from the locale file. Ability checks render as e.g. "DC 12 Dexterity", while skill checks render as e.g. "DC 12 Strength (Athletics)".

There are macros wrapping these for ability saves (\DndStrSave, \DndConSave etc.). There are also macros wrapping skills checks that provide the usual attribute name, though this can be overridden. You can use \DndAthletics{12} to get "DC 12 Strength (Athletics)", or \DndAthletics[\conname]{12} to get "DC 12 Constitution (Athletics)", for example.

In addition to these are a couple of macros for the things I consistently forget:

  • \DndPickLock{12} creates "DC 12 Dexterity" because I forget lock-picking is straight Dex.
  • `\DndThievesTools{12} creates "DC 12 Dexterity (Thieves' Tools)" for those cases where tool proficiency is helpful.

The eagle-eyed will note a dndmonsterlookup.sty in here as well, which is being superceded by a separate package. The intent is for you to be able to say A \Boar\ approaches and receive "A \textbf{boar} (\textit{MM}, p. 319) approaches" in the output. The separate package is better because it defines each source in an optional module, and provides a way to get plurals in place properly. That's coming Real Soon Now™.

THEMES
======

There is now an eberron theme that will set some fonts and recto/verso background images to match the
Eberron book stylings.  Top-level titles get some new fonts, and a couple of colors change.

You can now choose between three font sets.  The default uses the original font settings from the rpgtex
implementation.  In addition, you can provide the option `fonts=wotc` or `fonts=dmsguild`. Use `wotc` to
select the fonts that WotC uses in their published books (you'll have to pay for the fonts, and I can't
speak to any trade dress issues that might arise).  I like using this because I'm vain and I mostly write
these adventures for myself, for fun.  Yes, I'm a typography nerd, this is fun.  The `dmsguild` version
uses the fonts specified by the DM's Guild materials.

I've included details on where to obtain each of these fonts.  The official DM's Guild fonts are all
available for free download, the paid fonts can be found at either MyFonts or Adobe.

IMAGES
======

I've added support for floatable images using `tcolorbox`, with `\DndImage` providing a plain image, and
`\DndCaptionedImage` for an image with a corresponding caption, in the correct (themed) font.  You can
provide options from `tcolorbox` to both of these to provide some fine-tuning or to have images extend
out to the edges of the printed page, for example.

STAT BLOCKS
===========

You can now create stat blocks for sentient items via `\DndSentientItemAbilityScores`.  Sentient items
use `Int`, `Wis`, `Cha`, and `Alignment`.

Added `psionic` as an attack type, alongside `weapon` and `spell`.  I'm working on some Dark Sun ideas,
and one approach I have defines psionic attacks.

Added support for vehicle stat blocks using the `DndVehicle` environment.  This functions the same way
as for `DndMonster`, with appropriate no-bg variants.  There are corresponding commands for the various
components of the stat block:

  - `DndVehicleBasics`
  - `DndVehicleDetails`
  - `DndVehicleAbilityScores`
  - `DndVehicleSection`
  - `DndVehicleAction`
  - `DndVehicleSpeed`
  - `DndVehicleComponent`
  - `DndVehicleControl`
  - `DndVehicleMovement`
  - `DndVehicleWeapon`
  - `DndVehicleAttack`

NEW BOXES
=========

You can add quotation boxes now with the `DndQuotation` and `DndAside` environments.  `DndQuotation`
expects an attribution argument, and is intended for either book quotes or for notes from e.g. Tasha
or Xanathar.  `DndAside` provides the same without an attribution.  Both render in the form of a small
sticky note attached to the page, as close as I can get it to the ones in the official books.

AREAS
=====

Areas have been updated to allow for specifying ranges.  You can use `\DndAreaRange` to supply an area
description for e.g. "Area 1.10–1.12".  Area references are now also updated to make it easier to
reference areas outside the current set.  For instance, if you're in "F.3." and you want to build a
reference back to "C.5", you can now do so directly.

`\DndAreaRef` now generates the `C5` string, rather than a page number, since that's the more common
usage.  To get a page number, there's a new `\DndAreaPageRef` command which takes on the original
behavior.

UTILITIES
=========

There are new `\DndSkillCheck` and `\DndAbilityCheck` macros that can be used to generate DC checks
using localized strings from the locale file.  Ability checks render as e.g. "DC 12 Dexterity", while
skill checks render as e.g. "DC 12 Strength (Athletics)".

There are macros wrapping these for ability saves (`\DndStrSave`, `\DndConSave` etc.).  There are also
macros wrapping skills checks that provide the usual attribute name, though this can be overridden.
You can use `\DndAthletics{12}` to get "DC 12 Strength (Athletics)", or `\DndAthletics[\conname]{12}`
to get "DC 12 Constitution (Athletics)", for example.

In addition to these are a couple of macros for the things I consistently forget:

  - `\DndPickLock{12}` creates "DC 12 Dexterity" because I forget lock-picking is straight Dex.
  - `\DndThievesTools{12} creates "DC 12 Dexterity (Thieves' Tools)" for those cases where tool
    proficiency is helpful.

The eagle-eyed will note a `dndmonsterlookup.sty` in here as well, which is being superceded by a
separate package.  The intent is for you to be able to say `A \Boar\ approaches` and receive
"A \textbf{boar} (\textit{MM}, p. 319) approaches" in the output.  The separate package is better
because it defines each source in an optional module, and provides a way to get plurals in place
properly.  That's coming Real Soon Now™.
@AlanQuatermain
Copy link
Contributor Author

The CI appears to be broken. It's complaining that it can't update Debian packages.

@BrianCriswell
Copy link
Member

The CI appears to be broken. It's complaining that it can't update Debian packages.

Yeah, it's fairly old and probably needs an update. I think it is failing to load an out of date LaTeX version for the build.

@BrianCriswell
Copy link
Member

There is a lot of interesting stuff here. It will take a while to digest.

@AlanQuatermain
Copy link
Contributor Author

I got my monster reference package up, btw: https://github.com/AlanQuatermain/DND-5e-LaTeX-monsters

@BrianCriswell
Copy link
Member

I think this should be broken into smaller pull requests.

  • Themes
  • Boxes
  • Utilities
  • Areas
  • Images
  • etc.

It feels like too much to adequately digest all at once. If you want, I can break it down over time and create separate PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants