Welcome Adventurer!
Greetings weary traveller! I trust your journey was safe albeit long. Whether from the storm-tossed seas of Word or the raging wastelands of Google Docs, you have finally made your way to the golden shore of Asciidoctor! asciidoctor-p2e is an extension for AsciiDoctor that makes it easier to create stylized content for the Pathfinder Second Edition roleplaying system. Your years of searching are at an end, for this extension supports creature stat blocks, item stat blocks, hazard stat blocks, a stylized Table of Contents, decorated Sidebars, and Pathfinder-style headers. All of which will be demonstrated in cloying detail!
You can find the git repo for this project in the mystical realm of SourceHut: https://git.sr.ht/~bosco/asciidoctor-p2e, a fantastic forge of free software also known to the old ones as Sir Hat.
Usage
This extension is archived in the scrolls of
RubyGems and can be added to your
inventory with the gem install asciidoctor-p2e
command. Once the
asciidoctor-p2e
gem is installed you can run
asciidoctor -r asciidoctor-p2e <input>
to create your output.
Note
|
Images and assets will be installed/referenced in a p2e directory
wherever your output is created.
|
Style
Zero level headers will use a yellow outline Eczar font and first level headers
will use the Eczar font. This styling is from the
GM Binder Pathfinder 2nd
Edition Homebrew Template. Fonts are included with asciidoctor-p2e
and will
be installed in the p2e
directory when your output is created. The body of
the document uses a parchment background.
As you can see on the left, if the Table of Contents is used (:toc: left
) a
burnt parchment edge will be show with Pathfinder style header fonts for each
section.
Enemies
A block of type stat
can be used to create a creature stat block from
TOML input. For example:
[stat.center, type=creature]
--
name = "Hoo Man"
level = "1"
tags = ["ce","tiny"]
perception = "+1"
senses = "scent"
skills = ["Intimidation +2", "Thievery +1"]
[attributes]
cha = "-2"
con = "+1"
dex = "+2"
int = "-2"
str = "-1"
wis = "-1"
[defense]
ac = "10"
fort = "+2"
ref = "+6"
will = "+1"
hp = "10"
immunities = ""
reactions = ["Attack of Opportunity"]
[offense]
speed = "25"
otherSpeeds = "Climb Speed 25"
[[offense.attacks]]
actions = 1
damage = "1d4 piercing"
name = "Melee"
text = "teeth +4"
[[offense.attacks]]
actions = 2
name = "Helicopter Dance"
text = """\
Hoo Man dazzles anyone watching with a unique dance causing anyone who \
fails a Will save (DC 15) to become fascinated.\
"""
--
Notice that a role can be passed: in this case 'center'. If the block is floated (left right) a 20px margin will be set on the opposite side. If a type is not specified, 'creature' is assumed. The above listing creates the following stat block:
Treasure
In a similar fashion to creature stat blocks, item stat blocks can be created:
[stat.center, type=item]
--
name = "Pear of Silence"
level = "6+"
tags = ["uncommon"]
price = "100 gp" # optional
usage = "held in 1 hand"
bulk = "L"
description = """\
A cruel device famed to be designed by Roderick the Malevolent. A seemingly \
delicious fruit, when placed in someone's mouth it expands to render them \
unable to speak. A magical phrase that disables the effect is bound to the \
fruit at the time of creation (not that the victim would be able to utter \
it).\
"""
[hardness] # optional
hardness = "9"
hp = "10"
bp = "5"
[[activations]] # optional
actions = 1
actionText = "Interact" # optional
trigger = "The pear is placed inside someone's mouth" # optional
# effect is optional too
effect = """\
The pear rapidly expands, filling the victims mouth and rendering them \
unable to speak until the pear is destroyed or disabled.\
"""
[[activations]]
actions = 2
actionText = "Interact"
trigger = """\
The magic phrase that disables the pear is spoken loudly at a distance of \
less than five feet from the pear.\
"""
effect = """\
The pear resumes its normal shape and form. It can be spit out by the \
victim.\
"""
[[types]] #optional
type = "lesser"
level = "6"
price = "100 gp" # optional
description = """\
Can be destroyed by the victim with a DC 20 Fortitude saving throw.\
"""
[[types]]
type = "greater"
level = "10"
price = "200 gp"
description = """\
Can be destroyed by the victim with a DC 25 Fortitude saving throw.\
"""
[[types]]
type = "major"
level = "12"
price = "300 gp"
description = """\
Can be destroyed by the victim with a DC 30 Fortitude saving throw.\
"""
--
The above block yields:
Traps
Hazard stat blocks can also be created:
[stat.center, type=hazard]
====
name = "Bed Spike"
level = "1"
tags = ["mechanical", "trap"]
stealth = "DC 15 (or 0 if they look under the bed)"
description = """\
The support ropes for a bed are cut almost completely through. Under the bed \
are several sharpened wooded spikes. Typically the sheets are hung over the \
edge of the bed to disguise the spikes.\
"""
disable = """\
Crafting DC 10 to remove the spikes. The bed will still not support weight \
but there will be no damage caused by falling through.\
"""
[[triggers]]
name = "Fall Through"
text = """\
A creature lays on the bed, causing the ropes to snap and dealing 1D6 piercing
damage.\
"""
====
The above block yields:
Cryptic Texts
When a sidebar is used to display information the background will use a styling from Pathfinder 2 easy Library.
Sidebars can especially effective for notes from Wizards with specific details regarding the functioning of dangerous items:
Adventurer’s Log
-
The layout, much of the styling, and the demonstration creature come from the Pathfinder 2E Monster Creator
-
Action and reaction CSS icons come from CSS for Pathfinder 2nd Edition
-
Asciidoctor Extensions Lab was used as a reference in creating this extension.
-
GM Binder Pathfinder 2nd Edition Homebrew Template was used for fonts and further styling.
-
The Pathfinder 2 easy Library was used for the Sidebar styling