Files
tft/.planer/einheiten/backend__tft__model__baseline.py.md
2026-07-24 11:24:24 +02:00

33 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Einheiten: backend/tft/model/baseline.py
stand: f41ac76b5789
## backend/tft/model/baseline.py::unit_value
beschreibung: Berechnet einen numerischen Einheitenwert aus Einkaufskosten und Stern-Aufstufung.
input: cost (int) und stars (int)
output: float-Wert gemäß cost · 3^(stars1)
entscheidungen:
- Höhere Sternstufen werden exponentiell gewichtet, nicht additiv.
beleg: "cost * 3 ** (stars - 1)"
- Die Berechnung ist rein deterministisch ohne Seiteneffekte.
beleg: "def unit_value(cost: int, stars: int) -> float:"
- Das Ergebnis skaliert mit den Kosten der Einheit.
beleg: "return cost * 3 ** (stars - 1)"
kanten:
- wird-genutzt-von: backend/tft/model/baseline.py::classify_role
## backend/tft/model/baseline.py::classify_role
beschreibung: Ordnet eine Einheit über ihr Rollenattribut (mit Statistik-Fallback) einer strategischen Rolle zu.
input: unit (dict) mit mindestens den Schlüsseln "role" und "stats"
output: eine der vier Rollenstrings frontline | ad_carry | ap_carry | utility
entscheidungen:
- Fehlende Rollen werden über das letzte Element zu frontline bzw. ad_carry aufgelöst.
beleg: "return \"frontline\" if stats[\"range\"] <= 1 else \"ad_carry\""
- Treffererkennung erfolgt robust auf Teilstrings statt auf exakter Gleichheit.
beleg: "if \"tank\" in role:"
- Magische/AD-Rollen werden gegenüber dem Stat-Fallback bevorzugt geprüft.
beleg: "if \"caster\" in role or \"ap\" in role:"
- Die Normalisierung der Rolle erfolgt via lower() auf einen Default-leeren String.
beleg: "(unit.get(\"role\") or \"\").lower()"
kanten:
- wird-genutzt-von: backend/tft/model/baseline.py::unit_value