{% extends "base.html" %} {% block title %}World Lore — df-storyteller{% endblock %} {% block content %}

World Lore

The histories and legends of this world

{% if not lore_loaded %}

No legends data loaded. Export from Legends mode in Dwarf Fortress, then restart the server.

{% else %}
{% if not no_llm_mode %}
{% else %}
Write your own epic saga
{% endif %} {% if saved_sagas %}
Saved Sagas ({{ saved_sagas | length }}) {% for saga in saved_sagas | reverse %}
{{ saga.season | default('') | title }} of Year {{ saga.year | default('?') }}
{{ saga.text | replace('\n', '
') | safe }}
{% endfor %}
{% endif %} {% if eras %}
{% for era in eras %} {{ era.name }} {% if era.start_year %} (from year {{ era.start_year }}){% endif %} {% if not loop.last %} — {% endif %} {% endfor %}
{% endif %} {% if player_civ %}

Your Civilization: {{ player_civ.name }} ({{ player_civ.race }})

{% if player_civ.details %}

{{ player_civ.details }}

{% endif %} {% if player_civ.sub_entities %}

Organizations: {{ player_civ.sub_entities | join(', ') }}

{% endif %} {% if player_civ.figures %}

Notable Figures

{% for fig in player_civ.figures %}
{{ fig.name }}{% if fig.race %} ({{ fig.race }}){% endif %}{% if fig.description %} — {{ fig.description }}{% endif %}
{% endfor %} {% endif %} {% if player_civ.artifacts %}

Artifacts

{% for art in player_civ.artifacts %}
{{ art.name }}{% if art.details %} — {{ art.details }}{% endif %}
{% endfor %} {% endif %}
{% endif %} {% macro lore_section(title, items, id) %} {% if items %}

{{ title }} ({{ items | length }})

{{ caller() }}
{% endif %} {% endmacro %} {% call lore_section("Civilizations", civilizations, "civs") %} {% for civ in civilizations %}

{{ civ.name }}{% if civ.race %} ({{ civ.race }}){% endif %}

{% if civ.details %}

{{ civ.details }}

{% endif %} {% if civ.sub_entities %}

Organizations: {{ civ.sub_entities | join(', ') }}

{% endif %}
{% endfor %} {% endcall %} {% call lore_section("Wars & Conflicts", wars, "wars") %} {% for war in wars %}
{{ war.name }}{% if war.years %} ({{ war.years }}){% endif %} {% if war.details %}
{{ war.details }}{% endif %}
{% endfor %} {% endcall %} {% call lore_section("Notable Battles", battles, "battles") %} {% for battle in battles %}
{{ battle.name }}{% if battle.year %} (year {{ battle.year }}){% endif %} {% if battle.details %}
{{ battle.details }}{% endif %}
{% endfor %} {% endcall %} {% call lore_section("Notable Figures", figures, "figures") %} {% for fig in figures %}
{{ fig.name }}{% if fig.race %} ({{ fig.race }}){% endif %}{% if fig.description %} — {{ fig.description }}{% endif %}
{% endfor %} {% endcall %} {% call lore_section("Artifacts", artifacts, "artifacts") %} {% for art in artifacts %}
{{ art.name }}{% if art.details %} — {{ art.details }}{% endif %}
{% endfor %} {% endcall %} {% call lore_section("Assumed Identities — SPOILERS", identities, "identities") %}

Warning: This section reveals hidden identities — vampires, werebeasts, spies, and other secrets. Viewing this may spoil in-game discoveries.

{% for ident in identities %}
{{ ident.real_name }} → posing as "{{ ident.assumed_name }}"
{% endfor %} {% endcall %} {% call lore_section("Written Works", written_works, "works") %} {% for work in written_works %}
{{ work.title }}{% if work.details %} — {{ work.details }}{% endif %}
{% endfor %} {% endcall %} {% call lore_section("Notable Relationships", relationships, "rels") %} {% for rel in relationships %}
{{ rel.description }}{% if rel.year %} (year {{ rel.year }}){% endif %}
{% endfor %} {% endcall %} {% call lore_section("Geography", geography, "geo") %} {% for geo in geography %}
{{ geo.name }}{{ geo.details }}
{% endfor %} {% endcall %} {% if poetic_forms or musical_forms or dance_forms %}

Cultural Forms

{% if poetic_forms %}

Poetic Forms ({{ poetic_forms | length }})

{% for form in poetic_forms[:10] %}
{% set name = form.get("name", "") if form is mapping else "" %} {% set desc = form.get("description", "") if form is mapping else "" %} {% if name %}{{ name }}{% endif %} {% if desc %}

{{ desc }}

{% endif %}
{% endfor %} {% endif %} {% if musical_forms %}

Musical Forms ({{ musical_forms | length }})

{% for form in musical_forms[:10] %}
{% set name = form.get("name", "") if form is mapping else "" %} {% set desc = form.get("description", "") if form is mapping else "" %} {% if name %}{{ name }}{% endif %} {% if desc %}

{{ desc }}

{% endif %}
{% endfor %} {% endif %} {% if dance_forms %}

Dance Forms ({{ dance_forms | length }})

{% for form in dance_forms[:10] %}
{% set name = form.get("name", "") if form is mapping else "" %} {% set desc = form.get("description", "") if form is mapping else "" %} {% if name %}{{ name }}{% endif %} {% if desc %}

{{ desc }}

{% endif %}
{% endfor %} {% endif %}
{% endif %} {% endif %} {% endblock %} {% block scripts %} {% endblock %}