{% extends "base.html" %} {% block title %}Badges{% endblock %} {% block page_title %}Badges{% endblock %} {% block content %}

{{ summary.total }}

Total

{{ summary.active }}

Active

{{ summary.secret }}

Secret

{{ summary.earned_any }}

Earned

{{ summary.unearned }}

Unearned

{{ summary.invalid_evaluators }}

Invalid Evaluators

Rarity Distribution

{% for r in rarity_summary %} {% set colors = {"common": "text-text-2", "rare": "text-cyan", "epic": "text-purple", "legendary": "text-amber"} %} {% set bg_colors = {"common": "bg-text-2", "rare": "bg-cyan", "epic": "bg-purple", "legendary": "bg-amber"} %}
{{ r.rarity }} {{ r.earned }} / {{ r.defined }}
{% endfor %}

Definitions are loaded from YAML on startup. The active toggle is preserved across restarts — deactivated badges stay deactivated until re-enabled here or via a YAML change. Secret badges are hidden from players until earned.

{% for b in badges %} {% set rarity_colors = {"common": "text-text-2", "rare": "text-cyan", "epic": "text-purple", "legendary": "text-amber"} %} {% endfor %}
Badge Category Rarity Pts Earned Evaluator Secret Valid Active
{{ b.title }} {{ b.description }}
{{ b.category_display }} {{ b.rarity }} {{ b.points }} {% if b.earn_count > 0 %} {{ b.earn_count }} {% else %} 0 {% endif %} {{ b.evaluator_class }} {% if b.is_secret %} {% else %} - {% endif %} {% if b.evaluator_valid %} {% else %} {% endif %}
{% endblock %} {% block scripts %} {% endblock %}