site relaunch
65
deadsands/content/bestiary/rolling-cactus.md
Normal file
|
@ -0,0 +1,65 @@
|
|||
---
|
||||
# bestiary/rolling-cactus.md
|
||||
|
||||
title: Rolling Cactus
|
||||
author: evilchili
|
||||
tags: monster
|
||||
date: 2023-05-27 14:43:16.001825
|
||||
template: monster
|
||||
show_dm_content: True
|
||||
status: published
|
||||
monster:
|
||||
name: "Rolling Cactus"
|
||||
size: medium
|
||||
type: beast
|
||||
alignment: unaligned
|
||||
AC: 10
|
||||
HP: 100 (10d10 + 50)
|
||||
speed: 30ft
|
||||
STR: 10,0
|
||||
DEX: 10,0
|
||||
CON: 10,0
|
||||
INT: 10,0
|
||||
WIS: 10,0
|
||||
CHA: 10,0
|
||||
skills:
|
||||
saving_throws:
|
||||
resistances:
|
||||
damage_immunities:
|
||||
condition_immunities:
|
||||
senses: Passive Perception 10
|
||||
languages: Common
|
||||
cr:
|
||||
attributes:
|
||||
"name1": description
|
||||
"name2": description
|
||||
traits:
|
||||
Actions:
|
||||
attributes:
|
||||
"multiattack": description
|
||||
options:
|
||||
"name1": "+1 to hit, reach 5 ft., one target. Hit: 5 (2d4) DamageType damage."
|
||||
"name2": "+1 to hit, reach 5 ft., one target. Hit: 5 (2d4) DamageType damage."
|
||||
Reactions:
|
||||
attributes:
|
||||
options:
|
||||
"Opportunity Attack": description
|
||||
Legendary Actions:
|
||||
attributes:
|
||||
"count": 3
|
||||
options:
|
||||
"name1": description
|
||||
"name2": description
|
||||
Legendary Reactions:
|
||||
options:
|
||||
"name1": description
|
||||
"name2": description
|
||||
Lair and Actions:
|
||||
attributes:
|
||||
"name1": description
|
||||
options:
|
||||
"name1": description
|
||||
"name2": description
|
||||
---
|
||||
|
||||
Flavour text goes here.
|
130
deadsands/content/dm/hooks.md
Normal file
|
@ -0,0 +1,130 @@
|
|||
---
|
||||
title: PC Hooks
|
||||
---
|
||||
|
||||
Player character hooks for plot etc...
|
||||
|
||||
### Krjn
|
||||
|
||||
##### 1. what is your secret reason for becoming an adventurer?
|
||||
|
||||
hoping to do enough to make up for what happened in the forest such that I put myself in exile, so that I can go home.
|
||||
|
||||
##### 2. who have you wronged?
|
||||
|
||||
my people and the forest they live in
|
||||
|
||||
##### 3. what would you kill to know?
|
||||
|
||||
who really is responsible for the devastation of my forest home. I took the blame upon myself, but was only an indirect cause
|
||||
|
||||
##### 4. what do you fear?
|
||||
|
||||
I fear I will never be able to atone for my sins. I also value propriety and am horrified whenever I set a toe out of line.
|
||||
|
||||
##### Goals
|
||||
|
||||
**STG**: just exist. go on quests, make money to survive. live with my guilt
|
||||
**MTG**: eke out a life in exile that is satisfactory.
|
||||
**LTG**: rejoin my brethren in the forest
|
||||
|
||||
### Rosney
|
||||
|
||||
##### 1. what is your secret reason for becoming an adventurer?
|
||||
|
||||
Find papa. to make my mark.
|
||||
|
||||
##### 2. who have you wronged?
|
||||
|
||||
Sanders, shady alchemist who sold bad potions. run off into the desert.
|
||||
|
||||
Liberty Sisters not happy she left?
|
||||
|
||||
##### 3. what would you kill to know?
|
||||
|
||||
Ways to survive.
|
||||
|
||||
Where is papa?
|
||||
|
||||
##### 4. what do you fear?
|
||||
|
||||
**STG**: Money and connections
|
||||
**MTG**: make a name for myself
|
||||
**LTG**: My own faction
|
||||
|
||||
### The Gaunt Traveler
|
||||
|
||||
##### 1. What is your secret reason for becoming an adventurer?
|
||||
|
||||
My secret is that I am FELURIUS MAGNUS MAGNUSSON PASHTUM, Magnus Stairwell, The Man Who Will Not Die.
|
||||
|
||||
I sent myself unknowingly into the past of Telisar to learn about Residium.
|
||||
|
||||
##### 2. Who have you wronged?
|
||||
|
||||
I sell high grade nitrogen fertilizer for gun powder and incendiaries.
|
||||
|
||||
My brand is FUNGUS MINERALS.
|
||||
|
||||
Minus a 'U', this is an anagram of Magnus Felurius.
|
||||
|
||||
The fertilizer bags' logo is a rainbow formed of the brand name, over a cartoon character.
|
||||
|
||||
The character is a smiling mushroom, giving a thumbs up of approval.
|
||||
|
||||
If you consider the rainbow an inverted 'U', his name is on every bag he sells.
|
||||
|
||||
Someone considers the sale of these materials a wrong.
|
||||
|
||||
##### 3. What would you kill to know?
|
||||
|
||||
I would kill to:
|
||||
* know the fundamental secrets of how Residium works
|
||||
* establish my hidden Myconid colony. (Know that my family is safe)
|
||||
* keep the secrets of Residium for the colony. (Know that my future is assured)
|
||||
|
||||
##### 4. What do you fear?
|
||||
|
||||
I fear dying without understanding how Residium works.
|
||||
|
||||
##### Extra Credit Goals
|
||||
|
||||
###### Short-term
|
||||
|
||||
* find a safe place to reincarnate as a Myconid.
|
||||
* secure the trust of folks to protect myself and the colony.
|
||||
|
||||
###### Medium-term
|
||||
|
||||
* found a new Myconid colony around the secrets of Residium crystals.
|
||||
|
||||
###### Long-term
|
||||
|
||||
* discover the secrets of the Residium waste and crystals.
|
||||
* collect, protect, harvest and distribute Rresidium among an army of Myconids.
|
||||
* found a distributed set of colonies.
|
||||
* establish a store house of knowledge and equipment as a legacy for my future self, trusted travelers and companions.
|
||||
|
||||
### Evelina's Character
|
||||
|
||||
##### 1. What is your secret reason for becoming an adventurer?
|
||||
- Was sent into exile after going against wishes of her tribe and saving an individual who then took advantage of the hospitality - causing harm to her tribe and perhaps even resulting in the death of some of her people.
|
||||
|
||||
##### 2. Who have you wronged
|
||||
- Her own people, according to them. She is estranged from family for her choices to help “selfish” adventurers.
|
||||
- Probably countless competing adventurers
|
||||
|
||||
##### 3. What would you kill to know
|
||||
- How to restore the land and thus restore her people (she was raised in a “corrupted view” tribe)
|
||||
- The location of the individual that wronged her and her people and led to her exile. But she isn’t entirely sure what she would do when/if she ever found them.
|
||||
|
||||
##### 4. What do you fear
|
||||
- Losing those she has grown close to, which perhaps has hindered her getting too close to anyone in the past
|
||||
- Losing herself (her physiology being tied to the land - she was raised with a belief that she is corrupted and can succumb further to her people’s “curse” and become more and more savage)
|
||||
|
||||
##### What are your short, medium, and long-term goals
|
||||
**STG**: Surviving and making a difference in the way she best can. Getting stronger and finding ways to adapt and market her skills. Collecting cool things + tattoos of her exploits.
|
||||
|
||||
**MTG**: Finding a place to belong. Filling the void of connection with her tribe.
|
||||
|
||||
**LTG**: Restoring the land to the legacy of her ancestors, and in turn hopefully restoring her people.
|
BIN
deadsands/content/images/gopher_gulch.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
|
@ -1 +0,0 @@
|
|||
../../../deadsands-notes/images/notes/
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 306 KiB |
BIN
deadsands/content/images/overland_calamity_ridge.png
Normal file
After Width: | Height: | Size: 126 KiB |
BIN
deadsands/content/images/overland_dust_river_canyon.png
Normal file
After Width: | Height: | Size: 265 KiB |
BIN
deadsands/content/images/overland_gopher_gulch.png
Normal file
After Width: | Height: | Size: 185 KiB |
Before Width: | Height: | Size: 647 KiB After Width: | Height: | Size: 920 KiB |
BIN
deadsands/content/images/overland_map_thumbnail.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
deadsands/content/images/tokens/rolling_cactus.png
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
deadsands/content/images/tokens/rolling_cactus.png~
Normal file
After Width: | Height: | Size: 14 KiB |
|
@ -1,13 +1,14 @@
|
|||
---
|
||||
# /Users/evilchili/dnd/deadsands/www/content/region/blooming-wastes.md
|
||||
# /Users/evilchili/dnd/deadsands/www/content/locations/blooming-wastes.md
|
||||
|
||||
title: The Blooming Wastes
|
||||
author: evilchili
|
||||
tags: region, homebrew
|
||||
tags: region
|
||||
date: 2022-07-20 17:54:47.286869
|
||||
template: region
|
||||
show_dm_content: True
|
||||
description: <a href='/images/overland_blooming_wastes.png'><img class='region_map' alt="Detail of an overland map of the Sahwat Desert" src='/images/overland_blooming_wastes.png'></a> Leads to <a href='/regions/calamity-ridge/'>Calamity Ridge</a>, <a href='/regions/dust-river-canyon/'>Dust River Canyon</a>, and Tano's Edge.
|
||||
thumbnail: /images/overland_blooming_wastes.png
|
||||
description:
|
||||
region:
|
||||
name: The Blooming Wastes
|
||||
size: 20
|
||||
|
@ -69,5 +70,8 @@ region:
|
|||
Rarity: Weird
|
||||
Value: 5 GP
|
||||
---
|
||||
|
||||
The Blooming Wastes stretch out before you: a mostly flat expanse of hard, cracked earth blanketed by some kind of sandy brown scrub. Small mesas dot the horizon, suggesting the possibility of shelter. As you approach you see that the scrub is covered in thick black thorns sharp enough to pierce boot leather; you will need to tread carefully.
|
||||
|
||||
|
||||
**Leads to <a href='/locations/calamity-ridge/'>Calamity Ridge</a>, <a href='/locations/dust-river-canyon/'>Dust River Canyon</a>, and Tano's Edge.**
|
||||
|
|
@ -7,6 +7,8 @@ tags: region
|
|||
date: 2022-08-07 13:59:35.261130
|
||||
template: region
|
||||
show_dm_content: False
|
||||
thumbnail: /images/overland_calamity_ridge.png
|
||||
description:
|
||||
region:
|
||||
name: Calamity Ridge
|
||||
size: 25
|
||||
|
@ -68,3 +70,5 @@ region:
|
|||
---
|
||||
|
||||
Southwest of the Blooming Wastes lies an empty stretch of hard-packed stone, from which rises Calamity Ridge -- a sprawling mesa 15 miles long and 200 feet high. Sheltering at the base of the ridge is advised, as the otherwise empty land provides no cover from stalking predators. Legend has it that a tribe of lizardfolk once claimed the mesa but were wiped out by faction miners who descended on the region following rumours of veins of precious metals. Whether the rumours proved false or the veins were exhausted isn't clear, but the region is uninhabited today.
|
||||
|
||||
**Leads to <a href='/locations/tanos-edge'>Tano's Edge</a>.**
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
# regions/dust-river-canyon.md
|
||||
# locations/dust-river-canyon.md
|
||||
|
||||
title: Dust River Canyon
|
||||
status: published
|
||||
|
@ -8,6 +8,8 @@ tags: region
|
|||
date: 2022-08-07 13:21:31.543012
|
||||
template: region
|
||||
show_dm_content: True
|
||||
thumbnail: /images/overland_dust_river_canyon.png
|
||||
description:
|
||||
region:
|
||||
name: Dust River Canyon
|
||||
size: 40
|
||||
|
@ -69,3 +71,5 @@ region:
|
|||
---
|
||||
|
||||
Dust River Canyon is a half-mile wide gash in the landscape, running forty miles southeast from the edge of the Blooming Wastes. A sheer, crumbling switchback leads to its base where thick clouds of red dust some 2 feet thick swirl, resisting all attempts to settle or disperse. Stalking predators move unseen within the dust, emerging from caves in the canyon walls.
|
||||
|
||||
**Leads to <a href='/locations/blooming-wastes/'>The Blooming Wastes</a> and <a href='/locations/gopher-gulch/'>Gopher Gulcch</a>.**
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
# regions/gopher-gulch.md
|
||||
# locations/gopher-gulch.md
|
||||
|
||||
title: Gopher Gulch
|
||||
status: published
|
||||
|
@ -7,7 +7,9 @@ author: evilchili
|
|||
tags: region
|
||||
date: 2022-08-07 13:38:52.296672
|
||||
template: region
|
||||
show_dm_content: False
|
||||
show_dm_content: True
|
||||
thumbnail: /images/overland_gopher_gulch.png
|
||||
description:
|
||||
region:
|
||||
name: Gopher Gulch
|
||||
size: 30
|
||||
|
@ -20,10 +22,10 @@ region:
|
|||
Notes:
|
||||
Forage:
|
||||
DC: 18
|
||||
Notes: no shelter; water harvestable from rolling cacti
|
||||
Track:
|
||||
DC: 15
|
||||
Notes:
|
||||
Track:
|
||||
DC: 19
|
||||
Notes: no shelter
|
||||
Evade:
|
||||
DC: 19
|
||||
Notes:
|
||||
|
@ -34,11 +36,11 @@ region:
|
|||
encounters:
|
||||
d1-d2:
|
||||
Difficulty: Dangerous
|
||||
d3-d4:
|
||||
d3-d10:
|
||||
Difficulty: Deadly
|
||||
d5-d7:
|
||||
d11-d15:
|
||||
Difficulty: Easy
|
||||
d8-d20:
|
||||
d15-d20:
|
||||
Difficulty: None
|
||||
weather:
|
||||
d1-d2:
|
||||
|
@ -59,8 +61,7 @@ region:
|
|||
Rarity: Uncommon
|
||||
d6-d7:
|
||||
Description: Sand Storm
|
||||
Effect: Heavily obscured; visibility 5ft, disadvantage on WIS (Perception) checks
|
||||
and INT (Investigation) checks
|
||||
Effect: Heavily obscured; visibility 5ft, disadvantage on WIS (Perception) checks and INT (Investigation) checks
|
||||
Rarity: Uncommon
|
||||
d8:
|
||||
Description: Inverted Bubble Rain
|
||||
|
@ -81,10 +82,13 @@ region:
|
|||
Rarity: Common
|
||||
Value: 1 GP
|
||||
d5-d8:
|
||||
Name: Rolling Cactus
|
||||
Description: A globular cactus that rolls and bounces freely in the wind. 1 gallon of water can be harvested from 10 cacti.
|
||||
Name: Globe Cactus
|
||||
Description: A globular cactus. 1 gallon of water can be harvested from 10 cacti.
|
||||
Rarity: Common
|
||||
Value: 5 GP
|
||||
---
|
||||
|
||||
Gopher Gulch emerges from the southern edge of Dust River Canyon and turns east towards the rocky foothills at the base of the eastern range of Hoard's Vault. Heavy irregular stone cover the shallow riverbed which traverses a barren plain of cracked, broken ground. Shrub and small plants dot the area, but the most prominent flora is the Rolling Catci -- an odd species of globular cactus that rolls and bounces freely, pushed about by the desert winds.
|
||||
|
||||
|
||||
**Leads to <a href='/locations/dust-river-canyon/'>Dust River Canyon</a>.**
|
27
deadsands/content/locations/tanos-edge.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
# locations/tanos-edge.md
|
||||
|
||||
title: Tano's Edge
|
||||
author: evilchili
|
||||
tags: location
|
||||
date: 2023-06-11 16:57:53.734985
|
||||
template: location
|
||||
show_dm_content: False
|
||||
thumbnail: /images/tanos_edge_thumb.png
|
||||
image: /images/tanos_edge.png
|
||||
location:
|
||||
type: settlement
|
||||
name: Tano's Edge
|
||||
population: 1000
|
||||
notable_races: Humans, Halfings, Dragonborn
|
||||
economy: Arcane research, enchantment, antiquities
|
||||
dm_notes: |
|
||||
DM's notes go here.
|
||||
stores:
|
||||
- angry-andoks-apothecary
|
||||
- generals-store
|
||||
|
||||
status: published
|
||||
---
|
||||
|
||||
Until recently, Tano's Edge was little more than a remote village on a ridge of the same name overlooking the Sahwat desert, catering to outcasts and the lawless. But with the discovery of ruins under the sands and the riches they contain, this town has become a powder keg of competing interests.
|
86
deadsands/content/locations/the-haunted-hills.md
Normal file
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
# regions/the-haunted-hills.md
|
||||
|
||||
title: The Haunted Hills
|
||||
author: evilchili
|
||||
tags: region
|
||||
date: 2023-06-09 18:36:37.735366
|
||||
template: region
|
||||
show_dm_content: False
|
||||
region:
|
||||
name: The Haunted Hills
|
||||
size: 20
|
||||
terrain: normal
|
||||
dm_notes: Talisman of Blightward required to avoid effects of weather.
|
||||
skills:
|
||||
Travel:
|
||||
DC: 19
|
||||
Notes:
|
||||
Forage:
|
||||
DC: 12
|
||||
Notes:
|
||||
Track:
|
||||
DC: 10
|
||||
Notes:
|
||||
Evade:
|
||||
DC: 13
|
||||
Notes:
|
||||
Survey:
|
||||
DC: 10
|
||||
Notes:
|
||||
cr: 5
|
||||
encounters:
|
||||
d1:
|
||||
Difficulty: Dangerous
|
||||
d2-d3:
|
||||
Difficulty: Deadly
|
||||
d4-d6:
|
||||
Difficulty: Difficult
|
||||
d7-d14:
|
||||
Difficulty: Easy
|
||||
d15-d20:
|
||||
Difficulty: None
|
||||
weather:
|
||||
d1-d2:
|
||||
Rarity: Common
|
||||
Description: Clear Skies
|
||||
Effect: No effect
|
||||
d3:
|
||||
Rarity: Rare
|
||||
Description: Howling Fantods
|
||||
Effect: A phantasm appears and disappears at random. Anyone who can see it is frightened.
|
||||
d4-d5:
|
||||
Description: Ghostly Wailing
|
||||
Effect: Disadvantage on CON checks for concentration checks
|
||||
Rarity: Uncommon
|
||||
d6-d7:
|
||||
Rarity: Rare
|
||||
Description: Breath of the Dead
|
||||
Effect: 1d6 Necrotic damage per half-day
|
||||
d8:
|
||||
Rarity: Rare
|
||||
Description: Soul Blight
|
||||
Effect: Maximum HP is reduced by 1d4 per half-day unless wearing a Talisman of Blightward.
|
||||
regional_effects:
|
||||
- On a spell attack critical hit or miss, roll on the Wild Magic Table
|
||||
forage_table:
|
||||
d1-d2:
|
||||
Rarity: Rare
|
||||
Name: Deadbreath
|
||||
Description: A tough black root that grows in cracks in the stone. When disturbed, the bark releases Breath of the Dead spores. DC 13 Nature, Survival, Constitution check or 1d4 Necrotic damage.
|
||||
Value: 5 GP
|
||||
d3:
|
||||
Rarity: Uncommon
|
||||
Name: Brightshrooms
|
||||
Description: |
|
||||
A grey, partially translucent mushroom that glows green in the presence of leaving creatures.
|
||||
Value: 1 GP
|
||||
d4:
|
||||
Rarity: Common
|
||||
Name: Water
|
||||
Description: Cool, crisp, clear. Small pools and springs dot the caverns.
|
||||
Value: 1 GP
|
||||
status: draft
|
||||
---
|
||||
|
||||
South of Gopher Gulch at the base of the eastern range of Hoard's Vault, lies a long series of rocky foothills carved through by howling winds; the interior of the hills is a vast network of tunnels that wail like the moaning of the dead, leading to the popular superstition that the land is cursed.
|
|
@ -26,8 +26,6 @@ For each half-day, the party will:
|
|||
<li> Resolve skill check successes / complications</li>
|
||||
</ul>
|
||||
</div>
|
||||
The Sahwat is a vast desert region stretching some thousands of square miles, containing a variety of conditions: rocky mesas, scrub, cactus forests, empty bedrock, plateaus, valleys, caverns, salt flats, and endless dunes. At the heart of the desert lies an impenetrable whirlwind called the Heartstorm through which no one has passed and which is the subject of wild speculation.
|
||||
|
||||
Until recently traveling the Sahwat proper was an activity limited to the desparate and the outcast, and nearly none of it had been mapped. This is changing, though, with the discovery of buried wonders of the Yanrin Didan. Now every faction, bandit crew, hedge wizard and treasure hunter is descending on the desert and racing to uncover its secrets. When you undertake a journey into the desert, the party will need to contend with *Provisioning*, *Survival*, and *Regional Effects*; these are described below.
|
||||
|
||||
|
||||
|
|
|
@ -9,6 +9,12 @@ date: 2022-07-09 11:00
|
|||
|
||||
## Welcome to Telisar...
|
||||
|
||||
The Second Era ended in fire. The Empire of Yanrin Didan -- "Glowing Sands" in the common tongue -- spanned half the continent of Vosh, from the Sea of Storms in the south and across the jungles of Dewa Q'Asos to the peaks of Hoard's Vault. Its civilization stood unchallenged for an age, until a great power swept aside their magics, destroyed their cities, and scorched the earth leaving behind only dry, dead rock. No one knows just what caused destruction on such a scale, for it is said that not one soul survived the cataclysm and now, a thousand years later, their name and thousands of miles of desert are all that remain. The Empire's arcane wonders, their secrets, and their doom all lie buried under the dead sands of the Sahwat.
|
||||
*The Second Era ended in fire. The Empire of Yanrin Didan -- "Glowing Sands" in the common tongue -- spanned half the continent of Vosh, from the Sea of Storms in the south and across the jungles of Dewa Q'Asos to the peaks of Hoard's Vault. Its civilization stood unchallenged for an age, until a great power swept aside their magics, destroyed their cities, and scorched the earth leaving behind only dry, dead rock. No one knows just what caused destruction on such a scale, for it is said that not one soul survived the cataclysm and now, a thousand years later, their name and thousands of miles of desert are all that remain. The Empire's arcane wonders, their secrets, and their doom all lie buried under the dead sands of the Sahwat.*
|
||||
|
||||
But there are whispers. Rumours of hoppers returning from the desert streaming gold from their packs and long-dead artifacts suddenly glowing with new enchantments. Sightings of strange, twisted creatures appearing on the dunes only to disappear like a mirage. And rumours that somewhere in the heart of the Sahwat, through the magical storms, across the dunes, at the very seat of that dead empire: history is stirring.
|
||||
*But there are whispers. Rumours of hoppers returning from the desert streaming gold from their packs and long-dead artifacts suddenly glowing with new enchantments. Sightings of strange, twisted creatures appearing on the dunes only to disappear like a mirage. And rumours that somewhere in the heart of the Sahwat, through the magical storms, across the dunes, at the very seat of that dead empire: history is stirring.*
|
||||
|
||||
### The Dead Sands
|
||||
|
||||
The Dead Sands, our group's second campaign, is a **post-apocalyptic gold rush weird western** set in a realm of Telisar. Our first campaign explored the meaning of story and the interplay of myth, religion, and fate, and led to grand adventures on a huge scale with gods, demons, and the fey. For the Dead Sands I'd like to explore stories more grounded in local events: in civilized areas, the tension between magic and technology, the politics of factions, and the effects of a gold rush transforming societies. In the desert, exploration and survival will be key themes.
|
||||
|
||||
We'll dig into these themes using some new mechanics; [A Hopper's Guide to the Dewa Q'Asos](locations/) is the compendium of information unlocked by the party as they [explore the world](mechanics/desert-travel-rules).
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
# pages/maps.md
|
||||
|
||||
title: Maps
|
||||
author: evilchili
|
||||
tags: page
|
||||
date: 2022-08-03 23:20:02.243922
|
||||
key_image:
|
||||
src: '/images/dewa_qasos.png'
|
||||
alt: "Hand-drawn map of the Dewa Q'Asos"
|
||||
gallery:
|
||||
overland_map.png: "Overland map of the Sahwat Desert (so far)"
|
||||
tanos_edge.png: "Old Town district of Tano's Edge"
|
||||
---
|
||||
|
|
@ -4,21 +4,22 @@
|
|||
title: Angry Andok's Apothecary
|
||||
author: evilchili
|
||||
show_dm_content: False
|
||||
tags: post
|
||||
location: Tano's Edge
|
||||
tags: store
|
||||
date: 2023-05-13 13:18:26.226450
|
||||
description: Was that a short joke?! I'll gut you! See if I don't!<br>--Andok
|
||||
status: published
|
||||
---
|
||||
|
||||
Andok's is a cantankerous dwarf who specializes in nonmagical salves, potions, and reagants. He makes a killing
|
||||
supplying hoppers who wisely avoid magical healing when in the desert, but is notorious for his quick, violent
|
||||
temper and contempt for, well, pretty much everything and everyone. He remains stubbornly unaligned, but his wares
|
||||
are so useful the Liberty Sisters don't dare chase him out of town.
|
||||
Andok's is a cantankerous dwarf who specializes in nonmagical salves, potions,
|
||||
and reagents. He makes a killing supplying hoppers who wisely avoid magical
|
||||
healing when in the desert, but is notorious for his quick, violent temper and
|
||||
contempt for, well, pretty much everything and everyone. He remains stubbornly
|
||||
unaligned, but his wares are so useful the Liberty Sisters don't dare chase him
|
||||
out of town.
|
||||
|
||||
"Andok's Elixirs" are reliable, if vile, substitutes for potions of healing, if you can afford them.
|
||||
|
||||
|
||||
|
||||
Location: **Tano's Edge**
|
||||
|
||||
Faction: **Unaligned**
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
title: General's Store
|
||||
author: evilchili
|
||||
show_dm_content: False
|
||||
tags: post
|
||||
location: Tano's Edge
|
||||
faction: Liberty Sisters
|
||||
tags: store
|
||||
date: 2023-04-12 17:52:34.363950
|
||||
description: Inventory subject to availability, prices subject to change, haggle at your own risk. -- The General
|
||||
status: published
|
||||
|
@ -18,8 +20,6 @@ The general supply is well-stocked with basic adventuring gear and a healthy cli
|
|||
items high. The General has a reputation for being able to move just about anything, from random metal scraps to
|
||||
gardening supplies to artifacts of historical interest.
|
||||
|
||||
|
||||
|
||||
Location: **Tano's Edge**
|
||||
|
||||
Faction: **Liberty Sisters**
|
||||
|
|
|
@ -136,13 +136,14 @@ h6 { font-size: 1.25em; }
|
|||
color: #692F28;
|
||||
}
|
||||
|
||||
.container .box article.recent p:first-of-type::first-letter {
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
float: inherit;
|
||||
margin: inherit;
|
||||
padding: inherit;
|
||||
color: inherit;
|
||||
.container .box article.recent p:first-of-type::first-letter,
|
||||
.summary p:first-of-type::first-letter {
|
||||
font-family: inherit !important;
|
||||
font-size: inherit !important;
|
||||
float: inherit !important;
|
||||
margin: inherit !important;
|
||||
padding: inherit !important;
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
img {
|
||||
|
@ -186,6 +187,19 @@ img {
|
|||
text-justify: left;
|
||||
}
|
||||
|
||||
.thumbnail {
|
||||
float: right;
|
||||
max-width: 150px;
|
||||
margin-left: 1em;
|
||||
}
|
||||
.thumbnail img {
|
||||
border: 1px solid black;
|
||||
box-shadow: inset 0px 0px 4px 0px rgba(0,0,0,1);
|
||||
max-width: 150px;
|
||||
max-height: 150px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
article.recent {
|
||||
font-style: italic;
|
||||
margin-bottom: 1em;
|
||||
|
@ -196,6 +210,7 @@ article.recent a.title {
|
|||
font-style: normal;
|
||||
}
|
||||
|
||||
article.recent .pull,
|
||||
article.recent h3,
|
||||
article.recent h4,
|
||||
article.recent h5,
|
||||
|
@ -753,6 +768,46 @@ a.disabled:hover {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.statblock > .stat {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.statblock > .stat > .value {
|
||||
font-weight: normal;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
.monster {
|
||||
font-family: Roboto,Helvetica,sans-serif !important;
|
||||
text-align: justify;
|
||||
font-size: 0.9em;
|
||||
column-count: 2;
|
||||
-webkit-column-break-inside: avoid;
|
||||
page-break-inside: avoid;
|
||||
break-inside: avoid-column;
|
||||
}
|
||||
|
||||
.monster h3, h4 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.monster h4 {
|
||||
margin-top: 1em;
|
||||
border-bottom: 1px solid #000;
|
||||
}
|
||||
|
||||
.monster hr {
|
||||
content: "";
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
|
||||
.monster-type {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.pull {
|
||||
float: right;
|
||||
max-width: 40%;
|
||||
|
@ -810,6 +865,19 @@ a.disabled:hover {
|
|||
text-align: left;
|
||||
}
|
||||
|
||||
div.location {
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
div.location:hover, div.location:active {
|
||||
background: rgba(244,241,232, 0.5);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.location:hover h4 a, div.location:active h4 a {
|
||||
color:#cca138;
|
||||
}
|
||||
|
||||
.container .box p:first-of-type::first-letter {
|
||||
margin-bottom: -0.5em;
|
||||
}
|
||||
|
|
|
@ -27,14 +27,18 @@
|
|||
{% if self.is_dm() %}
|
||||
<li><a href="{{ SITEURL }}/dm">DM</a></li>
|
||||
{% endif %}
|
||||
{% if DISPLAY_CATEGORIES_ON_MENU %}
|
||||
{% for category, articles in categories %}
|
||||
{% if category != 'dm' %}
|
||||
<li><a href="{{ SITEURL }}/{{ category.name }}">{{ category }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if DISPLAY_PAGES_ON_MENU %}
|
||||
{% for p in pages %}
|
||||
<li{% if p == page %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a></li>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% for m in MENU_ITEMS %}<li><a href="{{ SITEURL }}/{{ m[1] }}">{{ m[0] }}</a></li>{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -6,7 +6,11 @@
|
|||
{% else %}
|
||||
<section id="content" class="content">
|
||||
{% if category %}
|
||||
{% if category.name in ('locations', ) %}
|
||||
{% include category.name + "-index.html" %}
|
||||
{% else %}
|
||||
{% with key='category', values=[category], title=category %}{% include "category-index.html" %}{% endwith %}
|
||||
{% endif %}
|
||||
{% elif tag %}
|
||||
{% include "tag-index.html" %}
|
||||
{% endif %}
|
||||
|
|
33
deadsands/deadsands-theme/templates/location.html
Normal file
|
@ -0,0 +1,33 @@
|
|||
{% extends "base.html" %}
|
||||
{% import "macros.html" as macros %}
|
||||
{% block title %}{{ article.title|capitalize }} - {{SITENAME}}{% endblock title %}
|
||||
{% block summary %}{{ article.summary|striptags }}{% endblock %}
|
||||
{% block key_image %}{{ macros.key_image(article) }}{% endblock key_image %}
|
||||
{% block content %}
|
||||
{% if not self.is_dm() and article.category == 'dm' %}
|
||||
{% else %}
|
||||
<section id="content">
|
||||
<div class='box curled'>
|
||||
<h2 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
|
||||
<hr>
|
||||
<div class='byline'>
|
||||
<span class='date'>{{ article.locale_date }}</span> {% if article.tags %}{% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> {% endfor %}{% endif %}
|
||||
</div>
|
||||
{% if article.description or article.thumbnail %}
|
||||
<div class='scrap'>
|
||||
<div class='note'>
|
||||
<a href='{{article.image or article.thumbnail}}'><img src='{{article.thumbnail}}'></a>
|
||||
{{ article.description or '' }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{{ article.content }}
|
||||
{% if article.location.type == 'settlement' %}
|
||||
{% with article=article %}{% include "settlement.html" %}{% endwith %}
|
||||
{% endif %}
|
||||
<hr>
|
||||
{% include "bottom-nav.html" %}
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
{% endblock content %}
|
36
deadsands/deadsands-theme/templates/locations-index.html
Normal file
|
@ -0,0 +1,36 @@
|
|||
{% set locations = articles | selectattr('category', 'in', ['locations']) | list | sort(attribute=date) %}
|
||||
<img src='/images/dewa_qasos.png' class='key_image' alt="Hand-drawn map of the Dewa Q'Asos">
|
||||
<div class='box curled'>
|
||||
<h2>A Hopper's Guide To<br>The Dewa Q'Asos</h2>
|
||||
<h3>Cites, Towns, and Settlements</h3>
|
||||
{% for location in locations if 'region' not in location.tags %}
|
||||
<div class='location' onclick="window.location.href='{{ SITEURL }}/{{ location.url }}'">
|
||||
<h4><a class='title' href="{{ SITEURL }}/{{ location.url }}" rel="bookmark" title="{{location.title|striptags}}">{{ location.title }}</a></h4>
|
||||
<div class='thumbnail'><a href='{{location.thumbnail}}'><img src='{{ location.thumbnail }}' alt='{{location.title}}'></a></div>
|
||||
<span class="summary"> {{ location.summary }} </span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<h3>The Sahwat Desert</h3>
|
||||
<div class='thumbnail'><a href='/images/overland_map.png'><img src='/images/overland_map.png' alt="The known regions of the Sawhat Desert" /></a></div>
|
||||
<span class='summary'>
|
||||
The Sahwat Desert is a vast expanse covering thousands of miles of the Dewa Q'Asos region in southwestern Vosh, from
|
||||
Tano's Edge to the Sea of Storms. It is comprised of a multitude of regions each with its own geography, weather,
|
||||
and secrets, ranging from inhospitable to deadly. At the heart of the desert lies an impenetrable whirlwind called
|
||||
the Heartstorm, through which no one has passed and which is the subject of wild speculation.
|
||||
<p>
|
||||
<br>
|
||||
Travel in the Sahwat is governed by <a href='/mechanics/desert-travel-rules'>the rules for overland travel.</a> Mind how you step, Hopper.
|
||||
</p>
|
||||
</span>
|
||||
|
||||
{% for location in locations if 'region' in location.tags %}
|
||||
<div class='location' onclick="window.location.href='{{ SITEURL }}/{{ location.url }}'">
|
||||
<h4><a class='title' href="{{ SITEURL }}/{{ location.url }}" rel="bookmark" title="{{location.title|striptags}}">{{ location.title }}</a></h4>
|
||||
<div class='thumbnail'><img src='{{ location.thumbnail }}' alt='{{location.title}}'></a></div>
|
||||
<span class="summary"> {{ location.summary }} </span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
147
deadsands/deadsands-theme/templates/monster.html
Normal file
|
@ -0,0 +1,147 @@
|
|||
{% extends "base.html" %}
|
||||
{% import "macros.html" as macros %}
|
||||
{% block title %}{{ article.title|capitalize }} - {{SITENAME}}{% endblock title %}
|
||||
{% block summary %}{{ article.summary|striptags }}{% endblock %}
|
||||
{% block key_image %}{{ macros.key_image(article) }}{% endblock key_image %}
|
||||
{% block content %}
|
||||
{% set m = article.metadata.monster %}
|
||||
|
||||
<section id="content">
|
||||
<div class='box curled'>
|
||||
<h2 class="entry-title"><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h2>
|
||||
{% import 'translations.html' as translations with context %}
|
||||
{{ translations.translations_for(article) }}
|
||||
<hr>
|
||||
<div class='byline'>
|
||||
<span class='date'>{{ article.locale_date }}</span> {% if article.tags %}{% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> {% endfor %}{% endif %}
|
||||
</div>
|
||||
{% if article.description %}
|
||||
<div class='scrap'><div class='note'>{{ article.description }}</div></div>
|
||||
{% endif %}
|
||||
|
||||
{% set target = article.title.replace(' ', '_') %}
|
||||
{% if self.is_dm() or article.show_dm_content %}
|
||||
<div class='statblock monster'>
|
||||
<h3>{{ article.title }}</h3>
|
||||
<div class='monster-type'>
|
||||
<em>
|
||||
{{m.size}} {{m.type}}{% if m.alignment %}, {{m.alignment}}{%endif%}
|
||||
</em>
|
||||
</div>
|
||||
<hr>
|
||||
<div class='stat'>
|
||||
Armor Class <span class='value'>{{ m.AC }}</span>
|
||||
</div>
|
||||
<div class='stat'>
|
||||
Hit Points <span class='value'>{{ m.HP }}</span>
|
||||
</div>
|
||||
<div class='stat'>
|
||||
Speed <span class='value'>{{ m.speed }}</span>
|
||||
</div>
|
||||
<hr>
|
||||
<table>
|
||||
<tr>
|
||||
<th>STR</th><th>DEX</th><th>CON</th><th>INT</th><th>WIS</th><th>CHA</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ m.STR }}</td>
|
||||
<td>{{ m.DEX }}</td>
|
||||
<td>{{ m.CON }}</td>
|
||||
<td>{{ m.INT }}</td>
|
||||
<td>{{ m.WIS }}</td>
|
||||
<td>{{ m.CHA }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
{% if m.saving_throws %}
|
||||
<div class='stat'>
|
||||
Saving Throws <span class='value'>{{ m.saving_throws }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.skills %}
|
||||
<div class='stat'>
|
||||
Skills <span class='value'>{{ m.skills }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.resistances %}
|
||||
<div class='stat'>
|
||||
Damage Resistances <span class='value'>{{ m.resistances }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.vulnerabilities %}
|
||||
<div class='stat'>
|
||||
Damage Vulnerabilities <span class='value'>{{ m.vulnerabilities }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.damage_immunities %}
|
||||
<div class='stat'>
|
||||
Damage Immunities <span class='value'>{{ m.damage_immunities }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.condition_immunities %}
|
||||
<div class='stat'>
|
||||
Condition Immunities <span class='value'>{{ m.condition_immunities }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.saving_throws %}
|
||||
<div class='stat'>
|
||||
Senses <span class='value'>{{ m.senses }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.languages %}
|
||||
<div class='stat'>
|
||||
Languages <span class='value'>{{ m.languages }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if m.cr %}
|
||||
<div class='stat'>
|
||||
Challenge <span class='value'>{{ m.cr }}</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
|
||||
{% for (attr_name, attr_desc) in m.attributes.items() %}
|
||||
<div class='stat'>{{ attr_name }}. <span class='value'>{{attr_desc}}</span></div>
|
||||
{% endfor %}
|
||||
|
||||
{% for section in ('Actions', 'Reactions', 'Legendary Actions', 'Legendary Reactions', 'Lair and Actions') %}
|
||||
{% if section in m.traits %}
|
||||
{% set trait = m.traits[section] %}
|
||||
{% if 'attributes' in trait or 'options' in trait %}
|
||||
<h4>{{ section }}</h4>
|
||||
{% if trait.attributes %}
|
||||
{% for (attr_name, attr_desc) in trait.attributes.items() %}
|
||||
<div class='stat'>{{ attr_name }}. <span class='value'>{{attr_desc}}</span></div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if trait.options %}
|
||||
{% for (attr_name, attr_desc) in trait.options.items() %}
|
||||
<div class='stat'>{{ attr_name }}. <span class='value'>{{attr_desc}}</span></div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ article.content }}
|
||||
|
||||
<div class='read'>{{ m.dm_notes }}</div>
|
||||
|
||||
<hr>
|
||||
{% include "bottom-nav.html" %}
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
|
@ -5,12 +5,6 @@
|
|||
<div class='box curled'>
|
||||
<hr>
|
||||
{{ page.content }}
|
||||
<hr>
|
||||
{% if page.show_recent %}
|
||||
<h3>Recent Posts</h3>
|
||||
{% with count=10, key='category', values=['lore', 'mechanics', 'regions'] %}{% include "recent.html" %}{% endwith %}
|
||||
<hr>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
|
|
@ -15,8 +15,13 @@
|
|||
<div class='byline'>
|
||||
<span class='date'>{{ article.locale_date }}</span> {% if article.tags %}{% for tag in article.tags %}<a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> {% endfor %}{% endif %}
|
||||
</div>
|
||||
{% if article.description %}
|
||||
<div class='scrap'><div class='note'>{{ article.description }}</div></div>
|
||||
{% if article.description or article.thumbnail %}
|
||||
<div class='scrap'>
|
||||
<div class='note'>
|
||||
<a href='{{article.thumbnail}}'><img src='{{article.thumbnail}}'></a>
|
||||
{{ article.description or '' }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ article.content }}
|
||||
|
@ -32,7 +37,7 @@
|
|||
</div>
|
||||
<dl>
|
||||
<dt>Size</dt><dd>{{ r.size }} sq. miles </dd>
|
||||
<dt>Terrain</dt><dd>{{ r.terrain }} (walking: {{ r.size / 10 if r.terrain == 'difficult' else 20 |round }} days)</dd>
|
||||
<dt>Terrain</dt><dd>{{ r.terrain }} (walking: {{ r.size / (10 if r.terrain == 'difficult' else 20) |round }} days)</dd>
|
||||
<dt>Regional Effects</dt><dd>{{ macros.table(r.regional_effects) }}</dd>
|
||||
<dt>Skill Challenges</dt><dd>{{ macros.table(r.skills, ['Skills', 'DC', 'Notes']) }}</dd>
|
||||
<dt>Encounters (CR {{r.cr}})</dt><dd>{{ macros.table(r.encounters, ['Roll', 'Difficulty']) }}</dd>
|
||||
|
|
24
deadsands/deadsands-theme/templates/settlement.html
Normal file
|
@ -0,0 +1,24 @@
|
|||
<table>
|
||||
<tr>
|
||||
<th>Population</th>
|
||||
<th>Notable Races</th>
|
||||
<th>Economy</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ article.location.population }}</td>
|
||||
<td>{{ article.location.notable_races }}</td>
|
||||
<td>{{ article.location.economy }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Stores</h3>
|
||||
{% set stores = articles |selectattr('tags', 'eq', ['store']) | selectattr('location', 'eq', article.title) | list %}
|
||||
{% if stores %}
|
||||
{% for store in stores %}
|
||||
<div class='location' onclick="window.location.href='{{ SITEURL }}/{{ store.url }}'">
|
||||
<h4><a class='title' href="{{ SITEURL }}/{{ store.url }}" rel="bookmark" title="{{store.title|striptags}}">{{ store.title }}</a></h4>
|
||||
<span class="summary"> {{ store.summary }} </span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
29
deadsands/markdown-templates/location.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
# {{filename}}
|
||||
|
||||
title: {{ title }}
|
||||
author: {{ author if author else 'evilchili' }}
|
||||
tags: {{ tags or 'location'}}
|
||||
{% if date %}
|
||||
date: {{ date }}
|
||||
{% endif %}
|
||||
template: location
|
||||
show_dm_content: False
|
||||
thumbnail: /images/{{ title|slugify }}_thumb.png
|
||||
image: /images/{{title|slugify}}.png
|
||||
{% if summary %}
|
||||
summary: {{summary}}
|
||||
{% endif %}
|
||||
location:
|
||||
type: settlment
|
||||
name: {{ title }}
|
||||
population: 1000
|
||||
notable_races: humans
|
||||
economy: textiles
|
||||
dm_notes: |
|
||||
DM's notes go here.
|
||||
stores:
|
||||
status: {{ status if status else 'draft' }}
|
||||
---
|
||||
|
||||
{{ description }}
|
70
deadsands/markdown-templates/monster.md
Normal file
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
# {{filename}}
|
||||
|
||||
title: {{ title }}
|
||||
author: {{ author if author else 'evilchili' }}
|
||||
tags: {{ tags or 'monster'}}
|
||||
{% if date %}
|
||||
date: {{ date }}
|
||||
{% endif %}
|
||||
template: monster
|
||||
show_dm_content: True
|
||||
{% if summary %}
|
||||
summary: {{summary}}
|
||||
{% endif %}
|
||||
status: {{ status if status else 'draft' }}
|
||||
monster:
|
||||
name: "{{title}}"
|
||||
size: medium
|
||||
type: beast
|
||||
alignment: unaligned
|
||||
AC: 10
|
||||
HP: 100 (10d10 + 50)
|
||||
speed: 30ft
|
||||
STR: 10,0
|
||||
DEX: 10,0
|
||||
CON: 10,0
|
||||
INT: 10,0
|
||||
WIS: 10,0
|
||||
CHA: 10,0
|
||||
skills:
|
||||
saving_throws:
|
||||
resistances:
|
||||
damage_immunities:
|
||||
condition_immunities:
|
||||
senses: Passive Perception 10
|
||||
languages: Common
|
||||
cr:
|
||||
attributes:
|
||||
"name1": description
|
||||
"name2": description
|
||||
traits:
|
||||
Actions:
|
||||
attributes:
|
||||
"multiattack": description
|
||||
options:
|
||||
"name1": "+1 to hit, reach 5 ft., one target. Hit: 5 (2d4) DamageType damage."
|
||||
"name2": "+1 to hit, reach 5 ft., one target. Hit: 5 (2d4) DamageType damage."
|
||||
Reactions:
|
||||
attributes:
|
||||
options:
|
||||
"Opportunity Attack": description
|
||||
Legendary Actions:
|
||||
attributes:
|
||||
"count": 3
|
||||
options:
|
||||
"name1": description
|
||||
"name2": description
|
||||
Legendary Reactions:
|
||||
options:
|
||||
"name1": description
|
||||
"name2": description
|
||||
Lair and Actions:
|
||||
attributes:
|
||||
"name1": description
|
||||
options:
|
||||
"name1": description
|
||||
"name2": description
|
||||
---
|
||||
|
||||
Flavour text goes here.
|
27
deadsands/markdown-templates/store.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
# {{filename}}
|
||||
|
||||
title: {{ title }}
|
||||
author: {{ author if author else 'evilchili' }}
|
||||
show_dm_content: False
|
||||
tags: {{ tags }}
|
||||
{% if date %}
|
||||
date: {{ date }}
|
||||
{% endif %}
|
||||
{% if description %}
|
||||
description: {{description}}
|
||||
{% endif %}
|
||||
status: {{ status if status else 'published' }}
|
||||
---
|
||||
|
||||
{{ summary }}
|
||||
|
||||
|
||||
Location: **{{location}}**
|
||||
|
||||
Faction: **{{faction}}**
|
||||
|
||||
|
||||
### Current Stock
|
||||
|
||||
{{ inventory }}
|
|
@ -30,6 +30,9 @@ LINKS = (('Pelican', 'https://getpelican.com/'),
|
|||
SOCIAL = (('You can add links in your config file', '#'),
|
||||
('Another social link', '#'),)
|
||||
|
||||
DISPLAY_PAGES_ON_MENU = False
|
||||
DISPLAY_CATEGORIES_ON_MENU = False
|
||||
|
||||
ARTICLE_URL = '{category}/{slug}/'
|
||||
CATEGORY_URL = "{slug}/index.html"
|
||||
TAG_URL = "tags/{slug}/"
|
||||
|
@ -52,12 +55,16 @@ ARCHIVE_SAVE_AS = "archives/{slug}.html"
|
|||
ARCHIVES_SAVE_AS = "archives/index.html"
|
||||
|
||||
MENU_ITEMS = (
|
||||
("A Hopper's Guide", "locations/"),
|
||||
("Lore", "lore/"),
|
||||
("Bestiary", "bestiary/"),
|
||||
("Mechanics", "mechanics/"),
|
||||
("Index", "archives/"),
|
||||
)
|
||||
|
||||
SITEMAP = {
|
||||
'format': 'xml',
|
||||
"exclude": ["tag/"],
|
||||
"exclude": ["tag/", "session0"],
|
||||
}
|
||||
|
||||
PLUGINS = [
|
||||
|
|
|
@ -49,6 +49,7 @@ class ContentType(str, Enum):
|
|||
lore = 'lore'
|
||||
monster = 'monster'
|
||||
region = 'region'
|
||||
location = 'location'
|
||||
page = 'page'
|
||||
|
||||
|
||||
|
@ -226,9 +227,11 @@ def new(
|
|||
print("You must specify a category for 'post' content.")
|
||||
sys.exit()
|
||||
case 'monster':
|
||||
category = 'beastiary'
|
||||
category = 'bestiary'
|
||||
case 'region':
|
||||
category = 'regions'
|
||||
category = 'locations'
|
||||
case 'location':
|
||||
category = 'locations'
|
||||
case 'page':
|
||||
category = 'pages'
|
||||
case _:
|
||||
|
|
|
@ -18,10 +18,10 @@ def create(content_type: str, title: str, template_dir: str,
|
|||
return slugify(s, regex_subs=SETTINGS['SLUG_REGEX_SUBSTITUTIONS'])
|
||||
|
||||
template_path = Path(template_dir)
|
||||
template_name = template + ".md"
|
||||
template_name = f"{template or content_type}.md"
|
||||
if not (template_path / template_name).exists():
|
||||
print(f"Expected template {template_name} not found. Using default markdown template.")
|
||||
template_name = 'default.md'
|
||||
print("Not found. Using default markdown template.")
|
||||
env = Environment(
|
||||
loader=FileSystemLoader(template_path),
|
||||
trim_blocks=True,
|
||||
|
|