fixed statblock styling and region layout
This commit is contained in:
parent
49971ae270
commit
9e960cb251
|
@ -5,7 +5,6 @@ title: The Blooming Wastes
|
|||
author: evilchili
|
||||
tags: region, homebrew
|
||||
date: 2022-07-20 17:54:47.286869
|
||||
description: Once you have surveyed a region you will gain access a subset of this information; others, like weather and regional effects, must be discovered.
|
||||
template: region
|
||||
region:
|
||||
name: The Blooming Wastes
|
||||
|
@ -15,35 +14,29 @@ region:
|
|||
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.
|
||||
travel:
|
||||
dc: 10
|
||||
critical_success: normal terrain
|
||||
critical_failure:
|
||||
resources:
|
||||
forage:
|
||||
dc: 10
|
||||
critical_success:
|
||||
critical_failure:
|
||||
resources: redfoot, moon blossom (night only)
|
||||
track:
|
||||
dc: 13
|
||||
critical_success:
|
||||
critical_failure: shelter occupied; random encounter
|
||||
resources: shelter, water
|
||||
evade:
|
||||
dc: 2
|
||||
critical_success:
|
||||
critical_failure: random encounter
|
||||
survey:
|
||||
dc: 13
|
||||
critical_success:
|
||||
critical_failure:
|
||||
encounters: 1-6
|
||||
cr: 4
|
||||
encounters:
|
||||
d1-d4: Easy
|
||||
d5: Dangerous
|
||||
d6: Deadly
|
||||
d7-d20: None
|
||||
regional_effects:
|
||||
- Add 1d6 to radiant damage
|
||||
- Nightvision not functional
|
||||
- When a spell attack misses, it hits a random creature within 5 feet instead
|
||||
- On a spell attack critical hit or miss, roll on the Wild Magic Table
|
||||
- 1d4 piercing damage for every 30ft of movement during the Dash action
|
||||
d1: Add 1d6 to radiant damage
|
||||
d2: Nightvision not functional
|
||||
d3: When a spell attack misses, it hits a random creature within 5 feet instead
|
||||
d4: On a spell attack critical hit or miss, roll on the Wild Magic Table
|
||||
d5: 1d4 piercing damage for every 30ft of movement during the Dash action
|
||||
d6: No Effect
|
||||
weather:
|
||||
d1: Scorching Temperatures - 2x water consumption
|
||||
d2: Hail (no effect - counts as magical water if consumed)
|
||||
|
|
|
@ -359,7 +359,7 @@ ol > li > ul li:last-of-type {
|
|||
}
|
||||
|
||||
.column {
|
||||
margin: 1em 0;
|
||||
margin: 0px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
|
@ -629,31 +629,6 @@ a.disabled:hover {
|
|||
color: #333;
|
||||
}
|
||||
|
||||
.statblock h4, .statblock h5, .statblock h6 {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.statblock table,
|
||||
.statblock table tr {
|
||||
width: 100%;
|
||||
}
|
||||
.statblock table th {
|
||||
border: none;
|
||||
white-space: nowrap;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.statblock table th, .statblock table td {
|
||||
padding: 0.5em;
|
||||
width: 1%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.statblock table ul {
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
|
||||
.two-column {
|
||||
column-count: 2;
|
||||
display: block;
|
||||
|
@ -663,130 +638,84 @@ a.disabled:hover {
|
|||
break-inside: avoid-column;
|
||||
}
|
||||
|
||||
.statblock table,
|
||||
.statblock table tr {
|
||||
break-inside: avoid-column;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.statblock table th {
|
||||
width: 1%;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table.last-wide tr:last-child {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.auto, table.auto tr, table.auto th, table.auto td {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
.statblock, dl.spoiler {
|
||||
margin: 20px auto;
|
||||
.read {
|
||||
margin: 1em;
|
||||
margin-top: 0em;
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
/*
|
||||
background: rgb(255,255,255);
|
||||
background: linear-gradient(135deg, rgba(255,255,255,1) 40%, #A2B672 100%);
|
||||
*/
|
||||
border: 1px solid #AAA;
|
||||
}
|
||||
|
||||
.statblock .separator {
|
||||
content: "";
|
||||
display:block;
|
||||
width: 100%;
|
||||
margin: 10px 0px;
|
||||
border-top: 3px solid #28371C;
|
||||
background: rgba(255,255,255, 0.5);
|
||||
}
|
||||
|
||||
/* Stat block typography */
|
||||
|
||||
.statblock {
|
||||
font-size: 0.75em;
|
||||
padding: 1em;
|
||||
margin: 3em;
|
||||
background: #e8d4b3;
|
||||
background: rgba(244,241,232, 0.5);
|
||||
border: 1px solid #333;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 60%), 0 0 25px rgba(0, 0, 0, 20%) inset;
|
||||
}
|
||||
|
||||
.statblock h2, h3, h4, h5, h6 {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px solid #28371C;
|
||||
.statblock h4, h5, h6 {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
|
||||
.statblock .name {
|
||||
font-weight: 700;
|
||||
font-size: 2em;
|
||||
font-variant: small-caps;
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
.statblock .name:hover {
|
||||
color: #28371C;
|
||||
.statblock table {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.statblock .size {
|
||||
font-style: italic;
|
||||
margin-top: -3px;
|
||||
padding-left:2px;
|
||||
.statblock table tr, .statblock table tr td {
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
.statblock .stat {
|
||||
font-size:0.9em;
|
||||
color: #28371C;
|
||||
.statblock table tr th,
|
||||
.statblock table tr td {
|
||||
vertical-align: top;
|
||||
padding-right: 2em;
|
||||
}
|
||||
.statblock table tr td:first-of-type {
|
||||
font-weight: bold;
|
||||
}
|
||||
.statblock .stat .value {
|
||||
color: #333;
|
||||
font-weight:normal;
|
||||
padding-left: 3px;
|
||||
.statblock table tr:last-child,
|
||||
.statblock table tr:last-child {
|
||||
padding-right: 1em;
|
||||
}
|
||||
.statblock table tr:nth-child(even) {
|
||||
background: rgba(244,241,232, 0.5);
|
||||
}
|
||||
.statblock table tr:nth-child(odd) {
|
||||
background: rgba(255,255,255, 0.3);
|
||||
}
|
||||
|
||||
.statblock .ability-scores ul {
|
||||
font-size: 1.2rem;
|
||||
width: 100%;
|
||||
|
||||
|
||||
.statblock dl {
|
||||
display: flex;
|
||||
flex-flow: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
list-style: none;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
color: #28371C;
|
||||
font-weight: bold;
|
||||
width: 100%;
|
||||
overflow: visible;
|
||||
}
|
||||
.statblock .ability-scores ul li {
|
||||
width: calc(100% / 6);
|
||||
font-size: 0.8em;
|
||||
text-align: center;
|
||||
.statblock dl dt {
|
||||
flex: 0 0 25%;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
.statblock dl dd {
|
||||
flex:0 0 75%;
|
||||
margin-left: auto;
|
||||
text-align: left;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.statblock .ability-scores ul.score li small {
|
||||
font-weight: normal;
|
||||
color: #333;
|
||||
.statblock .inner {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.statblock p {
|
||||
font-family: Roboto,Helvetica,sans-serif !important;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.statblock p strong::after {
|
||||
content: '.';
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.statblock p em {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.statblock p em::after {
|
||||
content: ':';
|
||||
display:inline;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@media screen and (min-width: 900px) {
|
||||
.column {
|
||||
|
|
|
@ -5,3 +5,12 @@
|
|||
</a>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro rolltable(t) %}
|
||||
<table>
|
||||
<tr><th>Roll</th><th>Effect</th></tr>
|
||||
{% for die in t %}
|
||||
<tr><td>{{ die }}</td><td>{{ t[die] }}</td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endmacro %}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% import "macros.html" as macros %}
|
||||
{% block title %}{{ article.title|capitalize }} - {{SITENAME}}{% endblock title %}
|
||||
{% block content %}
|
||||
{% set r = article.metadata.region %}
|
||||
|
@ -18,79 +19,40 @@
|
|||
|
||||
{{ article.content }}
|
||||
|
||||
{% set target = article.title.replace(' ', '_') %}
|
||||
<div class='statblock'>
|
||||
<div class='two-column'>
|
||||
<h3>{{ article.title }}</h3>
|
||||
<table class='auto'>
|
||||
<tr>
|
||||
<td colspan='2'>{{ r.description }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Size</th>
|
||||
<td>{{ r.size }} sq. miles</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Terrain</th>
|
||||
<td>{{ r.terrain }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Encounters On</th>
|
||||
<td>{{ r.encounters }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Challenge Rating</th>
|
||||
<td>{{ r.cr }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>Regional Effects</th>
|
||||
<td>
|
||||
<ul>{% for e in r.regional_effects %}<li>{{ e }}</li>{% endfor %}</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div>
|
||||
<h4>Weather</h4>
|
||||
<table class='auto'>
|
||||
<tr><th>Roll</th><th>Effect</td></tr>
|
||||
<tr><td>d1</td><td>{{ r.weather.d1 }}</td></tr>
|
||||
<tr><td>d2</td><td>{{ r.weather.d2 }}</td></tr>
|
||||
<tr><td>d3</td><td>{{ r.weather.d3 }}</td></tr>
|
||||
<tr><td>d4</td><td>{{ r.weather.d4 }}</td></tr>
|
||||
<tr><td>d5</td><td>{{ r.weather.d5 }}</td></tr>
|
||||
<tr><td>d6</td><td>{{ r.weather.d6 }}</td></tr>
|
||||
<tr><td>d7</td><td>{{ r.weather.d7 }}</td></tr>
|
||||
<tr><td>d8</td><td>{{ r.weather.d8 }}</td></tr>
|
||||
</table>
|
||||
<div style='cursor: pointer;'
|
||||
onclick="document.getElementById('{{target}}').style.display=((document.getElementById('{{ target }}').style.display=='none')?'':'none');" ><h3>{{ article.title }}</h3></div>
|
||||
<div id="{{ target }}" style='display:none;'>
|
||||
<div class='read'>
|
||||
{{ r.description }}
|
||||
</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>Skill Challenges</dt><dd>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Skill</td>
|
||||
<th style='text-align: right;'>DC</th>
|
||||
<th>Resources</th>
|
||||
</tr>
|
||||
{% for (k, v) in [ ('Travel', r.travel), ('Forage', r.forage), ('Track', r.track), ('Evade', r.evade), ('Survey', r.survey) ] %}
|
||||
<tr>
|
||||
<td>{{ k }}</td>
|
||||
<td style='text-align: right;'>{{ v.dc or ""}}</td>
|
||||
<td>{{ v.resources or ""}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</dd>
|
||||
<dt>Encounters (CR {{r.cr}})</dt><dd>{{ macros.rolltable(r.encounters) }}</dd>
|
||||
<dt>Regional Effects</dt><dd>{{ macros.rolltable(r.regional_effects) }}</dd>
|
||||
<dt>Weather Effects</dt><dd>{{ macros.rolltable(r.weather) }}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
<br>
|
||||
<h4>Activities</h4>
|
||||
<table class='min'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </td>
|
||||
<th>DC</th>
|
||||
<th>Resources</th>
|
||||
<th>Notes</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for (k, v) in [ ('Travel', r.travel), ('Forage', r.forage), ('Track', r.track), ('Evade', r.evade), ('Survey', r.survey) ] %}
|
||||
<tr>
|
||||
<th>{{ k }}</th>
|
||||
<td>{{ v.dc or ""}}</td>
|
||||
<td>{{ v.resources or ""}}</td>
|
||||
<td>
|
||||
{% if v.critical_success %}crit. success = {{ v.critical_success }}<br>{% endif %}
|
||||
{% if v.critical_failure %}crit. failure = {{ v.critical_failure }}<br>{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
{% include "bottom-nav.html" %}
|
||||
</div>
|
||||
|
|
|
@ -2,6 +2,7 @@ import click
|
|||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import shlex
|
||||
import sys
|
||||
import typer
|
||||
import webbrowser
|
||||
|
@ -101,14 +102,14 @@ def serve() -> None:
|
|||
def publish() -> None:
|
||||
clean()
|
||||
pelican_run(publish=True)
|
||||
subprocess.call(
|
||||
subprocess.run(shlex.split(
|
||||
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
|
||||
'-e "ssh -p {ssh_port}" '
|
||||
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
|
||||
CONFIG['deploy_path'].rstrip('/') + '/',
|
||||
**CONFIG
|
||||
)
|
||||
)
|
||||
))
|
||||
|
||||
|
||||
@app.command()
|
||||
|
|
Loading…
Reference in New Issue
Block a user