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

Military Dashboard

{{ fortress_name or "The Fortress" }} — arms and armor

{% if military.summary.total_soldiers > 0 or military.summary.total_battles > 0 %}
{{ military.summary.total_soldiers }}
Soldiers
{{ military.summary.total_squads }}
Squads
{{ military.summary.total_kills }}
Kills
{{ military.summary.total_battles }}
Battles
{{ military.summary.total_casualties }}
Casualties
{% if military.summary.total_sieges > 0 %}
{{ military.summary.total_sieges }}
Sieges
{% endif %}
{% if military.squads %}

Squad Roster

{% for squad in military.squads %}

{{ squad.name }} ({{ squad.members | length }} member{{ 's' if squad.members | length != 1 else '' }})

{% for m in squad.members %}
{{ m.name }} {% if m.is_leader %}{% endif %} {% if not m.is_alive %} (dead){% endif %}
{{ m.profession }}
{% if m.combat_skills %}
{% for s in m.combat_skills[:4] %} {{ s.name }}: {{ s.level }} {% endfor %} {% if m.combat_skills | length > 4 %} +{{ m.combat_skills | length - 4 }} more {% endif %}
{% endif %} {% if m.wounds %}
{% for w in m.wounds[:2] %} {% if w is mapping %}{{ w.wound_type | default('injured') }} {{ w.body_part | default('') }}{% else %}{{ w }}{% endif %}{% if not loop.last %}, {% endif %} {% endfor %}
{% endif %}
{% endfor %}
{% endfor %}
{% endif %} {% if military.top_warriors %}

Top Warriors

{% for w in military.top_warriors %} {% endfor %}
# Name Profession Kills Attacks Defenses Total
{{ loop.index }} {{ w.name }} {% if not w.is_alive %} (dead){% endif %} {{ w.profession }} {{ w.kills }} {{ w.attacks }} {{ w.defenses }} {{ w.total_combat }}
{% endif %}
{% if military.combat_series %}

Combat Activity by Season

{% endif %} {% if military.kills_series %}

Kills by Season

{% endif %}
{% if military.recent_engagements %}

Recent Engagements

{% for eng in military.recent_engagements %}
{{ eng.date_label }}, Year {{ eng.year }}
{{ eng.fight_count }} fight{{ 's' if eng.fight_count != 1 else '' }} — {{ eng.blow_count }} blow{{ 's' if eng.blow_count != 1 else '' }} {% if eng.casualties > 0 %} — {{ eng.casualties }} killed {% endif %}
{% if eng.fortress_fighters %}
Our fighters: {{ eng.fortress_fighters | join(', ') }}
{% endif %} {% if eng.targets %}
{% for target in eng.targets %}
vs {{ target.name }} — {{ target.blows }} blow{{ 's' if target.blows != 1 else '' }} ({{ target.attackers | join(', ') }}) {% if target.defeated %}☠ defeated{% endif %}
{% endfor %}
{% elif eng.enemies %}
Enemies: {{ eng.enemies | join(', ') }}
{% endif %}
{% endfor %}
{% endif %} {% if military.military_timeline %}

Military Timeline

{% for item in military.military_timeline %}
{{ item.season }} of Year {{ item.year }}
{% if item.type == 'siege' %}⚔ {% endif %}{{ item.description }}
{% endfor %}
{% endif %} {% if military.unassigned_fighters %}

Unassigned Fighters (dwarves with combat skills but no squad)

{% for m in military.unassigned_fighters %}
{{ m.profession }}
{% if m.combat_skills %}
{% for s in m.combat_skills[:3] %} {{ s.name }}: {{ s.level }} {% endfor %}
{% endif %}
{% endfor %}
{% endif %} {% else %}

No military data yet. Assign dwarves to squads and engage in combat to see military stats here.

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