{% macro stats(s) %}
PV {{ s.pvMax != 0 ? (s.pvMax > 0 ? '+' : '') ~ s.pvMax : '—' }}
EG {{ s.egMax != 0 ? (s.egMax > 0 ? '+' : '') ~ s.egMax : '—' }}
ATQ {{ s.attaque != 0 ? (s.attaque > 0 ? '+' : '') ~ s.attaque : '—' }}
DEF {{ s.defense != 0 ? (s.defense > 0 ? '+' : '') ~ s.defense : '—' }}
ARC {{ s.arcane != 0 ? (s.arcane > 0 ? '+' : '') ~ s.arcane : '—' }}
SAG {{ s.sagesse != 0 ? (s.sagesse > 0 ? '+' : '') ~ s.sagesse : '—' }}
VIT {{ s.vitesse != 0 ? (s.vitesse > 0 ? '+' : '') ~ s.vitesse : '—' }}
FIN {{ s.finesse != 0 ? (s.finesse > 0 ? '+' : '') ~ s.finesse : '—' }}
{% endmacro %} {# Renders elemental resistance rows #} {% macro elemental_resistance(entries, elementMap) %} {% if entries %}
{% for e in entries %} {% set pct = ((1 - e.multiplier) * 1000)|round / 10 %} Résistance {{ elementMap[e.element_id] ?? '?' }} : {{ pct > 0 ? '+' }}{{ pct }}% {% endfor %}
{% endif %} {% endmacro %} {# Renders a stats-grid for a statsBuff (kind='buff') or statsDebuff (kind='debuff') array #} {% macro stat_changes(entries, kind) %} {% if entries %} {% set lbl = {pvMax: 'PV', egMax: 'EG', attaque: 'ATQ', defense: 'DEF', arcane: 'ARC', sagesse: 'SAG', vitesse: 'VIT', finesse: 'FIN'} %} {% set isBuff = kind == 'buff' %} {% set arrow = isBuff ? '↑' : '↓' %} {% set cls = isBuff ? 'heal' : 'dmg' %}
{% for entry in entries %} {{ arrow }} {{ lbl[entry['stat']] ?? entry['stat'] }} : {{ entry['turns']|default(0) }} tour{{ entry['turns']|default(0) != 1 ? 's' }}{% if entry['level'] is defined and entry['level'] > 1 %} ({{ entry['level'] }} niveaux){% endif %} {% endfor %}
{% endif %} {% endmacro %} {% macro rarity_stars(n, gameId) %} {% if n > 0 %} {% set m = {1:{r:255,g:255,b:255,l:'Commun'},2:{r:12,g:201,b:12,l:'Peu commun'},3:{r:81,g:168,b:245,l:'Rare'},4:{r:197,g:84,b:235,l:'Remarquable'},5:{r:255,g:150,b:0,l:'Légendaire'},6:{r:255,g:0,b:102,l:'Unique'},7:{r:255,g:255,b:128,l:'Héroïque'},8:{r:255,g:105,b:180,l:'Séraphin'},9:{r:0,g:255,b:255,l:'Nacré'},10:{r:189,g:135,b:255,l:'Surnaturel'},11:{r:18,g:255,b:148,l:'Fabuleux'},12:{r:235,g:52,b:128,l:'Immaculé'}} %} {% if m[n] is defined %} {% set r = m[n] %} {# Override couleur NS : Hérétique (rareté 7) en rouge #} {% if gameId == 3 and n == 7 %} {% set r = r|merge({r:220, g:40, b:50}) %} {% endif %} {% set overrideKey = 'rarity.label.' ~ (gameId ?? '_') ~ '.' ~ n %} {% set overrideLabel = overrideKey|trans({}, 'game') %} {% set label = overrideLabel != overrideKey ? overrideLabel : r.l %} {{label}} {% endif %} {% endif %} {% endmacro %} {% macro icon_img(entity) %} {% if entity.icon is defined and entity.icon %} {% set route = {0: 'icon_csi_forever', 3: 'icon_narval_souls'}[entity.gameId] ?? null %} {% if route %} {% else %}
?
{% endif %} {% else %}
✦
{% endif %} {% endmacro %} {# Voir entity/layout.html.twig::currency_pill — duplication assumée pour rester local au scope search. #} {% macro currency_pill(amount, gameId) %} {% set name = ('currency.name.' ~ gameId)|trans({}, 'game') %} {{ amount }} {{ name }} {% if gameId == 3 %} {% else %} {% endif %} {% endmacro %}