update
This commit is contained in:
17
.planer/einheiten/backend__tft__sim__shop.py.md
Normal file
17
.planer/einheiten/backend__tft__sim__shop.py.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 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:
|
||||
Reference in New Issue
Block a user