Cap-Enforcer-Tiefgang: Injury-Swaps, Roster-Trim & User-Sicherheitsnetz
Ein Blick tief in den Salary-Cap-Enforcer: Ein Spielstand im lokalen Test (Game 206, Saison 3, Woche 1) zeigte, dass der Enforcer bestimmte Spieler übersah — mit dem Effekt, dass Teams bis zu 58 aktive Spieler bei Roster-Limit 53 und einen negativen Cap Space von über 26 Mio€ behielten. Diese Runde bringt drei neue Enforcer-Phasen, schützt Userteams vor ungewollten Releases und behebt einen hartnäckigen Blind Spot in der Roster-Abfrage.
🔍 Der Enforcer-Blind-Spot
- Die Roster-Abfrage des Enforcers filterte bisher
AND karriereende=0 AND draft!=2— gut gemeint, aber die gehaltszahlende Datenbank-Spalteteam.salarycapenthält alle Spieler - Folge: Der Enforcer sah 53 Spieler bei einer realen Kaderstärke von 58 und rechnete mit ~189M Gehalt, während die echte Summe bei 228,7M lag
- Fix: Filter entfernt, Enforcer sieht jetzt die komplette Realität — inklusive Spieler mit bevorstehendem Karriereende oder Draft-In-Progress-Flag
🏥 Phase 0A: Injury-Swaps
- Neuer Phase-Block, der vor dem Roster-Trim läuft: Verletzte aktive Spieler werden 1:1 gegen den stärksten gesunden Non-Retired PS-Spieler derselben Position getauscht
- Läuft in Schleife, bis keine Tausche mehr möglich sind — stabil auch bei mehreren Verletzten pro Team
- Phase 2 (Promotion) überspringt jetzt explizit verletzte und zurücktretende PS-Spieler, damit sie nie wieder hochgezogen werden
📉 Phase 0: Roster-Trim auf maxroster (53)
- Explizite Demote-to-PS-Logik bei Kadergröße >
maxroster, die die am höchsten bezahlten Spieler über dem Positions-Optimal zuerst demoten - Fallback: Falls keine über-optimale Position existiert, wird von Positionen oberhalb
min_lineupdemoten — so bleibt ein spielbarer Kader garantiert - Löst das Szenario mit 58/53 (6 CB bei Optimum 5, 5 QB bei Optimum 3, 2 P bei Optimum 1) in einem Durchgang auf
🛡️ User-Team-Sicherheitsnetz (keine Releases!)
- Neuer Parameter
$no_release_tidsimenforce_cpu_salary_cap()-Aufruf — Teams auf dieser Liste dürfen vom Enforcer nur demoten, aber nie Spieler entlassen - Der User-Team wird bei
depthchart_mode != 'manual'jetzt immer auf diese Liste gesetzt: Releases bleiben strikt eine User-Entscheidung - Neuer Action-Zweig
act_demote_above_minspringt ein, wenn andere Aktionen für geschützte Teams blockiert sind
🎚️ Depth-Chart-Mode-Toggle als Trigger
- Wechsel von
manualauf eine Auto-Sortierung (z.B. "Stärke absteigend") triggert jetzt optimizer + Cap-Enforcement, damit der Kader sofort sauber unter dem Cap liegt — ohne Releases beim User - Language-Key
autosort_auto_disabled_hintpräzisiert: "…wechsle den Modus oberhalb oder im Seitenmenü auf „Manuell""
Der Enforcer ist jetzt deutlich präziser, Userteams können nicht mehr unwillentlich Spieler verlieren, und verletzte Spieler landen automatisch dort, wo sie hingehören — auf der Practice / Injury Squad. Ein großer Schritt für die Balance aller Franchise-Modi.