{% extends 'base.html.twig' %} {% block title %}Équipe — CSI World{% endblock %} {% block body %}
{# ── Page header ── #} ← Revenir à la carte {# ── Flashes ── #} {% for msg in app.flashes('error') %}
{{ msg }}
{% endfor %} {% for msg in app.flashes('success') %}
{{ msg }}
{% endfor %} {% if inBattle %}
Vous êtes en combat — la gestion de l'équipe est désactivée.
{% endif %} {# ── Équipe active ── #}

Équipe active

{% for slot in 0..3 %} {% set char = team[slot] ?? null %}
SLOT {{ slot + 1 }} {% if char %} {% if char.modelMmo and char.modelMmo.filename %} {{ char.name }} {% else %}
?
{% endif %}
{{ char.name }}
{{ char.classMmo ? char.classMmo.name : '—' }}
Niv. {{ char.classLevel }}
{{ char.currentPv }} / {{ char.pvMax }} PV
{% if not inBattle and char.classMmo %}
{# Évolution #} {% if char.classMmo.evolvesTo is not empty %} {% set evoLevel = char.classMmo.evolutionLevel %} {% set canEvolve = evoLevel is null or char.classLevel >= evoLevel %} {% if canEvolve %}
Évoluer
{% for targetId in char.classMmo.evolvesTo %} {% if classesById[targetId] is defined %} {% set target = classesById[targetId] %}
{% endif %} {% endfor %}
{% else %} Évoluer (niv. {{ evoLevel }} requis) {% endif %} {% endif %} {# Changement de classe — bases + avancées débloquées #} {% set playedIds = char.playedClassIds %} {% set hasChangeTarget = false %} {% for cls in baseClasses %}{% if cls.id != char.classMmo.id %}{% set hasChangeTarget = true %}{% endif %}{% endfor %} {% if not hasChangeTarget %} {% for cls in classesById %}{% if cls.advanced and cls.id in playedIds and cls.id != char.classMmo.id %}{% set hasChangeTarget = true %}{% endif %}{% endfor %} {% endif %} {% if hasChangeTarget %}
Changer de classe
{% set lvls = char.classLevels %} {% for cls in baseClasses %} {% if cls.id != char.classMmo.id %} {% set played = (cls.id ~ '') in lvls|keys %}
{% endif %} {% endfor %} {% set hasUnlockedAdvanced = false %} {% for cls in classesById %}{% if cls.advanced and cls.id in playedIds and cls.id != char.classMmo.id %}{% set hasUnlockedAdvanced = true %}{% endif %}{% endfor %} {% if hasUnlockedAdvanced %}

Avancées débloquées

{% for cls in classesById %} {% if cls.advanced and cls.id in playedIds and cls.id != char.classMmo.id %}
{% endif %} {% endfor %} {% endif %}
{% endif %}
{% endif %} {% else %}
Slot vide
{% endif %}
{% endfor %}
{# ── Réserve ── #}

Réserve

{% if reserve is empty %}

Aucun personnage en réserve.

{% else %}
{% for char in reserve %}
{% if char.modelMmo and char.modelMmo.filename %} {{ char.name }} {% else %}
?
{% endif %}
{{ char.name }}
{{ char.classMmo ? char.classMmo.name : '—' }}
Niv. {{ char.classLevel }}
{{ char.currentPv }} / {{ char.pvMax }} PV
{% if not inBattle and char.classMmo %}
{# Évolution #} {% if char.classMmo.evolvesTo is not empty %} {% set evoLevel = char.classMmo.evolutionLevel %} {% set canEvolve = evoLevel is null or char.classLevel >= evoLevel %} {% if canEvolve %}
Évoluer
{% for targetId in char.classMmo.evolvesTo %} {% if classesById[targetId] is defined %} {% set target = classesById[targetId] %}
{% endif %} {% endfor %}
{% else %} Évoluer (niv. {{ evoLevel }} requis) {% endif %} {% endif %} {# Changement de classe — bases + avancées débloquées #} {% set playedIds = char.playedClassIds %} {% set hasChangeTarget = false %} {% for cls in baseClasses %}{% if cls.id != char.classMmo.id %}{% set hasChangeTarget = true %}{% endif %}{% endfor %} {% if not hasChangeTarget %} {% for cls in classesById %}{% if cls.advanced and cls.id in playedIds and cls.id != char.classMmo.id %}{% set hasChangeTarget = true %}{% endif %}{% endfor %} {% endif %} {% if hasChangeTarget %}
Changer de classe
{% set lvls = char.classLevels %} {% for cls in baseClasses %} {% if cls.id != char.classMmo.id %} {% set played = (cls.id ~ '') in lvls|keys %}
{% endif %} {% endfor %} {% set hasUnlockedAdvanced = false %} {% for cls in classesById %}{% if cls.advanced and cls.id in playedIds and cls.id != char.classMmo.id %}{% set hasUnlockedAdvanced = true %}{% endif %}{% endfor %} {% if hasUnlockedAdvanced %}

Avancées débloquées

{% for cls in classesById %} {% if cls.advanced and cls.id in playedIds and cls.id != char.classMmo.id %}
{% endif %} {% endfor %} {% endif %}
{% endif %}
{% endif %}
{% for slot in 0..3 %} {% set occupied = team[slot] is defined %} {% endfor %}
{% endfor %}
{% endif %}
{# ── Personnages disponibles / créer ── #} {% if not inBattle %}

Créer un personnage

{{ availableSlots }} slot{{ availableSlots > 1 ? 's' : '' }} disponible{{ availableSlots > 1 ? 's' : '' }}
{% if availableSlots > 0 %} + Nouveau personnage {% else %}

Aucun slot disponible — achetez-en un ci-dessous.

{% endif %}
{% endif %} {# ── Acheter un slot ── #} {% set canBuySlot = not inBattle and (totalCharacters + availableSlots) < maxMmoCharacters %} {% if canBuySlot %}

Acheter un slot

{{ totalCharacters + availableSlots }} / {{ maxMmoCharacters }} utilisés
{% set canAffordMoney = money >= slotCostMoney %}
Dollawrs Dollawrs {{ slotCostMoney|number_format(0, ',', ' ') }} Solde : {{ money|number_format(0, ',', ' ') }}
{% set canAffordPremium = premiumMoney >= slotCostPremium %}
Crédits MasterMoney MasterMoney {{ slotCostPremium|number_format(0, ',', ' ') }} Solde : {{ premiumMoney|number_format(0, ',', ' ') }}
{% endif %} {# ── Agrandir le roster ── #} {% if not inBattle and maxMmoCharacters < maxRoster %}

Agrandir le roster

+10 emplacements — max {{ maxRoster }}
{% set canAffordExpandMoney = money >= expandCostMoney %}
Dollawrs Dollawrs {{ expandCostMoney|number_format(0, ',', ' ') }} Solde : {{ money|number_format(0, ',', ' ') }}
{% set canAffordExpandPremium = premiumMoney >= expandCostPremium %}
Crédits MasterMoney MasterMoney {{ expandCostPremium|number_format(0, ',', ' ') }} Solde : {{ premiumMoney|number_format(0, ',', ' ') }}
{% endif %}
{% endblock %}