fixed statblock styling and region layout

This commit is contained in:
evilchili 2022-08-04 23:47:16 -07:00
parent 49971ae270
commit 9e960cb251
5 changed files with 107 additions and 213 deletions

View File

@ -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)

View File

@ -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 {

View File

@ -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 %}

View File

@ -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>&nbsp;</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>

View File

@ -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()