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
|
author: evilchili
|
||||||
tags: region, homebrew
|
tags: region, homebrew
|
||||||
date: 2022-07-20 17:54:47.286869
|
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
|
template: region
|
||||||
region:
|
region:
|
||||||
name: The Blooming Wastes
|
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.
|
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:
|
travel:
|
||||||
dc: 10
|
dc: 10
|
||||||
critical_success: normal terrain
|
|
||||||
critical_failure:
|
|
||||||
resources:
|
|
||||||
forage:
|
forage:
|
||||||
dc: 10
|
dc: 10
|
||||||
critical_success:
|
|
||||||
critical_failure:
|
|
||||||
resources: redfoot, moon blossom (night only)
|
resources: redfoot, moon blossom (night only)
|
||||||
track:
|
track:
|
||||||
dc: 13
|
dc: 13
|
||||||
critical_success:
|
|
||||||
critical_failure: shelter occupied; random encounter
|
|
||||||
resources: shelter, water
|
resources: shelter, water
|
||||||
evade:
|
evade:
|
||||||
dc: 2
|
dc: 2
|
||||||
critical_success:
|
|
||||||
critical_failure: random encounter
|
|
||||||
survey:
|
survey:
|
||||||
dc: 13
|
dc: 13
|
||||||
critical_success:
|
|
||||||
critical_failure:
|
|
||||||
encounters: 1-6
|
|
||||||
cr: 4
|
cr: 4
|
||||||
|
encounters:
|
||||||
|
d1-d4: Easy
|
||||||
|
d5: Dangerous
|
||||||
|
d6: Deadly
|
||||||
|
d7-d20: None
|
||||||
regional_effects:
|
regional_effects:
|
||||||
- Add 1d6 to radiant damage
|
d1: Add 1d6 to radiant damage
|
||||||
- Nightvision not functional
|
d2: Nightvision not functional
|
||||||
- When a spell attack misses, it hits a random creature within 5 feet instead
|
d3: 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
|
d4: 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
|
d5: 1d4 piercing damage for every 30ft of movement during the Dash action
|
||||||
|
d6: No Effect
|
||||||
weather:
|
weather:
|
||||||
d1: Scorching Temperatures - 2x water consumption
|
d1: Scorching Temperatures - 2x water consumption
|
||||||
d2: Hail (no effect - counts as magical water if consumed)
|
d2: Hail (no effect - counts as magical water if consumed)
|
||||||
|
|
|
@ -359,7 +359,7 @@ ol > li > ul li:last-of-type {
|
||||||
}
|
}
|
||||||
|
|
||||||
.column {
|
.column {
|
||||||
margin: 1em 0;
|
margin: 0px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
@ -629,31 +629,6 @@ a.disabled:hover {
|
||||||
color: #333;
|
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 {
|
.two-column {
|
||||||
column-count: 2;
|
column-count: 2;
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -663,130 +638,84 @@ a.disabled:hover {
|
||||||
break-inside: avoid-column;
|
break-inside: avoid-column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.statblock table,
|
.read {
|
||||||
.statblock table tr {
|
margin: 1em;
|
||||||
break-inside: avoid-column;
|
margin-top: 0em;
|
||||||
width: 100%;
|
text-align: left;
|
||||||
}
|
|
||||||
|
|
||||||
.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;
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
/*
|
background: rgba(255,255,255, 0.5);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stat block typography */
|
/* Stat block typography */
|
||||||
|
|
||||||
.statblock {
|
.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 {
|
.statblock h4, h5, h6 {
|
||||||
padding-bottom: 5px;
|
|
||||||
border-bottom: 1px solid #28371C;
|
|
||||||
text-transform: capitalize;
|
text-transform: capitalize;
|
||||||
}
|
text-align: left;
|
||||||
|
|
||||||
|
|
||||||
.statblock .name {
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 2em;
|
|
||||||
font-variant: small-caps;
|
|
||||||
margin: 0;
|
margin: 0;
|
||||||
margin-top: -10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.statblock .name:hover {
|
.statblock table {
|
||||||
color: #28371C;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.statblock .size {
|
.statblock table tr, .statblock table tr td {
|
||||||
font-style: italic;
|
background: inherit;
|
||||||
margin-top: -3px;
|
|
||||||
padding-left:2px;
|
|
||||||
}
|
}
|
||||||
|
.statblock table tr th,
|
||||||
.statblock .stat {
|
.statblock table tr td {
|
||||||
font-size:0.9em;
|
vertical-align: top;
|
||||||
color: #28371C;
|
padding-right: 2em;
|
||||||
|
}
|
||||||
|
.statblock table tr td:first-of-type {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
.statblock .stat .value {
|
.statblock table tr:last-child,
|
||||||
color: #333;
|
.statblock table tr:last-child {
|
||||||
font-weight:normal;
|
padding-right: 1em;
|
||||||
padding-left: 3px;
|
}
|
||||||
|
.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;
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: space-between;
|
width: 100%;
|
||||||
list-style: none;
|
overflow: visible;
|
||||||
margin: 0 auto;
|
|
||||||
padding: 0;
|
|
||||||
color: #28371C;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
}
|
||||||
.statblock .ability-scores ul li {
|
.statblock dl dt {
|
||||||
width: calc(100% / 6);
|
flex: 0 0 25%;
|
||||||
font-size: 0.8em;
|
text-overflow: ellipsis;
|
||||||
text-align: center;
|
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 {
|
.statblock .inner {
|
||||||
font-weight: normal;
|
display: none;
|
||||||
color: #333;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.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) {
|
@media screen and (min-width: 900px) {
|
||||||
.column {
|
.column {
|
||||||
|
|
|
@ -5,3 +5,12 @@
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% 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" %}
|
{% extends "base.html" %}
|
||||||
|
{% import "macros.html" as macros %}
|
||||||
{% block title %}{{ article.title|capitalize }} - {{SITENAME}}{% endblock title %}
|
{% block title %}{{ article.title|capitalize }} - {{SITENAME}}{% endblock title %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% set r = article.metadata.region %}
|
{% set r = article.metadata.region %}
|
||||||
|
@ -18,79 +19,40 @@
|
||||||
|
|
||||||
{{ article.content }}
|
{{ article.content }}
|
||||||
|
|
||||||
|
{% set target = article.title.replace(' ', '_') %}
|
||||||
<div class='statblock'>
|
<div class='statblock'>
|
||||||
<div class='two-column'>
|
<div style='cursor: pointer;'
|
||||||
<h3>{{ article.title }}</h3>
|
onclick="document.getElementById('{{target}}').style.display=((document.getElementById('{{ target }}').style.display=='none')?'':'none');" ><h3>{{ article.title }}</h3></div>
|
||||||
<table class='auto'>
|
<div id="{{ target }}" style='display:none;'>
|
||||||
<tr>
|
<div class='read'>
|
||||||
<td colspan='2'>{{ r.description }}</td>
|
{{ r.description }}
|
||||||
</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>
|
</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>
|
</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>
|
</div>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
{% include "bottom-nav.html" %}
|
{% include "bottom-nav.html" %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,6 +2,7 @@ import click
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import shlex
|
||||||
import sys
|
import sys
|
||||||
import typer
|
import typer
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
@ -101,14 +102,14 @@ def serve() -> None:
|
||||||
def publish() -> None:
|
def publish() -> None:
|
||||||
clean()
|
clean()
|
||||||
pelican_run(publish=True)
|
pelican_run(publish=True)
|
||||||
subprocess.call(
|
subprocess.run(shlex.split(
|
||||||
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
|
'rsync --delete --exclude ".DS_Store" -pthrvz -c '
|
||||||
'-e "ssh -p {ssh_port}" '
|
'-e "ssh -p {ssh_port}" '
|
||||||
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
|
'{} {ssh_user}@{ssh_host}:{ssh_path}'.format(
|
||||||
CONFIG['deploy_path'].rstrip('/') + '/',
|
CONFIG['deploy_path'].rstrip('/') + '/',
|
||||||
**CONFIG
|
**CONFIG
|
||||||
)
|
)
|
||||||
)
|
))
|
||||||
|
|
||||||
|
|
||||||
@app.command()
|
@app.command()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user