# Einheiten: backend/tft/sim/shop.py stand: f41ac76b5789 ## backend/tft/sim/shop.py::roll beschreibung: Führt einen Shop-Roll aus und liefert eine Anzahl zufälliger Units gemäß Level-Odds und verbleibenden Pool-Kopien. input: Pool-Instanz, Spieler-Level, Konfigurations-Dictionary mit Shop-Odds und Slot-Anzahl sowie ein random.Random-RNG. output: Liste von Unit-Champion-IDs (oder None für leere Slots) in Länge der konfigurierten Slot-Anzahl. entscheidungen: - Die Tier-Odds werden level-indiziert aus der Konfiguration gelesen, sodass die Wahrscheinlichkeiten pro Level konfigurierbar bleiben. beleg: "odds = cfg[\"shop\"][\"odds\"][level - 1]" - Für jeden Slot wird zuerst per gewichtetem Zufall ein Tier gezogen, bevor unter den Units dieses Tiers ausgewählt wird. beleg: "tier = rng.choices(range(1, 6), weights=odds)[0]" - Steht kein Kandidat eines gezogenen Tiers im Pool zur Verfügung, wird der Slot als None belegt statt zu scheitern. beleg: "if not candidates:" - Die Auswahl unter Kandidaten erfolgt gewichtet nach verfügbaren Pool-Kopien jeder Unit. beleg: "weights = [pool.available(a) for a in candidates]" kanten: