Add rolltable support, fix regions

This commit is contained in:
evilchili
2022-08-06 21:22:47 -07:00
parent 9e960cb251
commit 24a36e3096
10 changed files with 143 additions and 86 deletions
@@ -6,11 +6,21 @@
{% endif %}
{% endmacro %}
{% macro rolltable(t) %}
{% macro list_to_cols(l, headers) %}
{% if l is mapping %}
{% for key in l if key in headers%}
{{ list_to_cols(l[key], headers) }}
{% endfor %}
{% else %}
<td>{{ l if l else "" }}</td>
{% endif %}
{% endmacro %}
{% macro table(t, headers=[]) %}
<table>
<tr><th>Roll</th><th>Effect</th></tr>
{% for die in t %}
<tr><td>{{ die }}</td><td>{{ t[die] }}</td></tr>
<tr>{% for h in headers %}{% if h %}<th>{{ h }}</th>{% endif %}{% endfor %}</tr>
{% for key in t %}
<tr><td>{{ key }}</td>{{ list_to_cols(t[key], headers) }}</tr>
{% endfor %}
</table>
{% endmacro %}
@@ -30,29 +30,13 @@
<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>
<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>
<dt>Weather Effects</dt><dd>{{ macros.table(r.weather, ['Roll', None, 'Description', 'Effect']) }}</dd>
</dl>
</div>
</div>
<hr>
{% include "bottom-nav.html" %}
</div>