1.1 KiB
1.1 KiB
Einheiten: backend/tft/sim/shop.py
stand: f41ac76b57
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: