{ "abdeckung": { "bedienen:act": { "abdruck": "965eccb9356235b1", "funktion": "Shop sperren", "trug": "b6a2ab03493b74c5" }, "bedienen:buy": { "abdruck": "63c51977c098cde3", "funktion": "Item kaufen", "trug": "f3d6ca24335fa3b1" }, "bedienen:buyXp": { "abdruck": "1a0c5247f488c54c", "funktion": "XP kaufen", "trug": "45683c6493a79b31" }, "bedienen:equip": { "abdruck": "e9e549414ab5a0d1", "funktion": "Einheit ausrüsten", "trug": "8c6d6267f598e37d" }, "bedienen:move": { "abdruck": "8ce9d559861ca921", "funktion": "", "trug": "" }, "bedienen:next": { "abdruck": "0b481f13ca9aebf9", "funktion": "Runde fortsetzen", "trug": "45149ffb5a41db45" }, "bedienen:p": { "abdruck": "88b57fbbc98d450c", "funktion": "Gegner einblenden", "trug": "b7192893969b60f4" }, "bedienen:pickAugment": { "abdruck": "ba2ea2a567fcde9c", "funktion": "Augment auswählen", "trug": "7a76e5f3d13ef6d7" }, "bedienen:reroll": { "abdruck": "fd56403509531bb6", "funktion": "XP kaufen", "trug": "45683c6493a79b31" }, "bedienen:start": { "abdruck": "710cd74615808655", "funktion": "Spiel starten", "trug": "84ca0e724728251f" }, "befehl:autoplay": { "abdruck": "7b035ff596c12934", "funktion": "", "trug": "" }, "befehl:build-artifact": { "abdruck": "153fed8ab2aa1f5b", "funktion": "Statische Daten herunterladen", "trug": "8390b7b7807ab3f0" }, "befehl:calibrate": { "abdruck": "e816c00e7793250b", "funktion": "Ranglisten-Matches crawlen", "trug": "a9e766bc343f6751" }, "befehl:crawl": { "abdruck": "c9bb4cca017189c1", "funktion": "Statische Daten herunterladen", "trug": "8390b7b7807ab3f0" }, "befehl:extract": { "abdruck": "9595995ee5598702", "funktion": "Statische Daten herunterladen", "trug": "8390b7b7807ab3f0" }, "befehl:fetch-static": { "abdruck": "2207bccdebcd9aa4", "funktion": "", "trug": "" }, "befehl:refresh": { "abdruck": "b8b8e201706f4c19", "funktion": "Spiele automatisch spielen", "trug": "3ef945fdc4f98631" }, "route:get /api/game/{game_id}": { "abdruck": "7391585929a1342c", "funktion": "Spielstand abrufen", "trug": "85b87d6154b2363b" }, "route:get /health": { "abdruck": "bf52cace58ae302a", "funktion": "Systemzustand prüfen", "trug": "3a72c3a11d536884" }, "route:post /api/game": { "abdruck": "fe2b8a04ab08ae82", "funktion": "Spiel starten", "trug": "84ca0e724728251f" }, "route:post /api/game/{game_id}/action": { "abdruck": "952a1c6a5b3a9372", "funktion": "Spielaktion ausführen", "trug": "274b16ec98a7a650" } }, "belege": { "[\"analyse\", \"Analysedaten generieren\"]": { "abdruck": "6a39ed91dabae20c", "beleg": "\"learned\": learned or {},", "datei": "backend/tft/model/artifact.py" }, "[\"analyse\", \"Endboards erfassen\"]": { "abdruck": "f8be70adea2b51f5", "beleg": "def extract_all(conn, static: dict) -> tuple[int, Counter]:", "datei": "backend/tft/matches/extract.py" }, "[\"analyse\", \"Platzierungen testen\"]": { "abdruck": "ed43baf02f00a9f5", "beleg": "def calibrate(conn, artifact: dict, holdout_only: bool = False, score_fn=None) -> dict:", "datei": "backend/tft/model/calibrate.py" }, "[\"einheit\", \"Einheit ausrüsten\"]": { "abdruck": "dc58e2411954a192", "beleg": "def equip(p: PlayerState, item_idx: int, board_idx: int, artifact: dict | None = None) -> None:", "datei": "backend/tft/sim/player.py" }, "[\"einheit\", \"Einheit verschieben\"]": { "abdruck": "298448c773048dde", "beleg": "def move(p: PlayerState, where: str, idx: int) -> None:\n src, dst = (p.bench, p.board) if where == \"bench\" else (p.board, p.bench)\n if not (0 <= idx < len(src)):\n raise InvalidAction(\"no unit there\")\n if dst is p.board and len(p.board) >= p.level:\n raise InvalidAction(\"board full for your level\")\n if dst is p.bench and len(p.bench) >= BENCH_SIZE:\n raise InvalidAction(\"bench full\")\n dst.append(src.pop(idx))", "datei": "backend/tft/sim/player.py" }, "[\"pipeline\", \"Pipeline ausführen\"]": { "abdruck": "55afc728ea543cb6", "beleg": "for stage in (\"crawl\", \"extract\", \"build-artifact\", \"calibrate\"):", "datei": "backend/tft/cli.py" }, "[\"pipeline\", \"Ranglisten-Matches crawlen\"]": { "abdruck": "d91e117ee0d050a4", "beleg": "def crawl(set_number: int, limit: int = 200) -> int:", "datei": "backend/tft/matches/crawl.py" }, "[\"pipeline\", \"Statische Daten herunterladen\"]": { "abdruck": "b558c5c5a5f4f2d9", "beleg": "def fetch_static(set_override: int | None = None) -> dict:", "datei": "backend/tft/staticdata/fetch.py" }, "[\"pipeline\", \"Systemzustand prüfen\"]": { "abdruck": "895ac2187188eb0a", "beleg": "@app.get(\"/health\")\ndef health() -> dict:\n return {\"status\": \"ok\"}", "datei": "backend/tft/api/app.py" }, "[\"shop\", \"Augment auswählen\"]": { "abdruck": "1e9f76ada85ce074", "beleg": "def pick_augment(p: PlayerState, choice: int) -> None:\n if not p.augment_offer:\n raise InvalidAction(\"no augment offer\")\n if not (0 <= choice < len(p.augment_offer)):\n raise InvalidAction(\"invalid choice\")\n p.augments.append(p.augment_offer[choice])\n p.augment_offer = []", "datei": "backend/tft/sim/player.py" }, "[\"shop\", \"Item kaufen\"]": { "abdruck": "ab0dc67b859c1205", "beleg": "def buy(p: PlayerState, slot: int, pool: Pool, artifact: dict) -> None:", "datei": "backend/tft/sim/player.py" }, "[\"shop\", \"Shop aktualisieren\"]": { "abdruck": "191c940daa30b69b", "beleg": "def reroll(p: PlayerState, pool: Pool, cfg: dict, rng: random.Random) -> None:\n cost = cfg[\"shop\"][\"reroll_cost\"]\n if p.gold < cost:\n raise InvalidAction(\"not enough gold\")\n p.gold -= cost\n refresh_shop(p, pool, cfg, rng)", "datei": "backend/tft/sim/player.py" }, "[\"shop\", \"Shop sperren\"]": { "abdruck": "fe80becbfaa689c5", "beleg": "def toggle_lock(self) -> None:\n self.player.shop_locked = not self.player.shop_locked", "datei": "backend/tft/sim/game.py" }, "[\"shop\", \"XP kaufen\"]": { "abdruck": "1b2d9644e3c6c09f", "beleg": "def buy_xp(p: PlayerState, cfg: dict) -> None:\n xp = cfg[\"xp\"]\n if p.level >= xp[\"max_level\"]:\n raise InvalidAction(\"max level\")\n if p.gold < xp[\"buy_cost\"]:\n raise InvalidAction(\"not enough gold\")\n p.gold -= xp[\"buy_cost\"]\n p.level, p.xp = economy.apply_xp(p.level, p.xp, xp[\"buy_amount\"], cfg)", "datei": "backend/tft/sim/player.py" }, "[\"spiel\", \"Gegner einblenden\"]": { "abdruck": "302223719243056a", "beleg": "@click=\"!p.is_player && (expanded = expanded === p.name ? null : p.name)\"", "datei": "frontend/src/components/OpponentList.vue" }, "[\"spiel\", \"Runde fortsetzen\"]": { "abdruck": "df80063512e078a7", "beleg": "def step(self) -> None:\n \"\"\"Resolve the current round and advance to the next planning phase.\"\"\"", "datei": "backend/tft/sim/game.py" }, "[\"spiel\", \"Spiel starten\"]": { "abdruck": "1fa645dc09353d68", "beleg": "@app.post(\"/api/game\")\ndef new_game(seed: int | None = None) -> dict:\n artifact, cfg = _load_game_deps()\n game_id = uuid.uuid4().hex[:8]\n GAMES[game_id] = Game(artifact, cfg, seed=seed)\n return {\"game_id\": game_id, **state(game_id)}", "datei": "backend/tft/api/app.py" }, "[\"spiel\", \"Spielaktion ausführen\"]": { "abdruck": "e113ab7b8e4f225b", "beleg": "@app.post(\"/api/game/{game_id}/action\")\ndef action(game_id: str, req: ActionRequest) -> dict:", "datei": "backend/tft/api/app.py" }, "[\"spiel\", \"Spiele automatisch spielen\"]": { "abdruck": "e6d88c6931086b25", "beleg": "def run(artifact: dict, cfg: dict, policy_name: str, n: int, seed: int = 1) -> dict:", "datei": "backend/tft/sim/autoplay.py" }, "[\"spiel\", \"Spielstand abrufen\"]": { "abdruck": "7c267f889cc18e5c", "beleg": "def state(game_id: str) -> dict:", "datei": "backend/tft/api/app.py" } }, "ohne_code": {}, "ohne_karte": {}, "paare": {}, "stil": { "[\"analyse\", \"\"]": { "abdruck": "36a5c535e2b6e294", "probleme": [] }, "[\"analyse\", \"Analysedaten generieren\"]": { "abdruck": "6c6136aa1f731cea", "probleme": [] }, "[\"analyse\", \"Endboards erfassen\"]": { "abdruck": "46ff85afaea26861", "probleme": [] }, "[\"analyse\", \"Platzierungen testen\"]": { "abdruck": "58f4097a7aad42b2", "probleme": [] }, "[\"einheit\", \"\"]": { "abdruck": "591f6d834b06521d", "probleme": [] }, "[\"einheit\", \"Einheit ausrüsten\"]": { "abdruck": "2b91a8a929caf2ea", "probleme": [] }, "[\"einheit\", \"Einheit verschieben\"]": { "abdruck": "0fa02b3c5370a837", "probleme": [] }, "[\"pipeline\", \"\"]": { "abdruck": "4c05ea483576379e", "probleme": [] }, "[\"pipeline\", \"Pipeline ausführen\"]": { "abdruck": "62c1b0e18d38c93e", "probleme": [] }, "[\"pipeline\", \"Ranglisten-Matches crawlen\"]": { "abdruck": "cfbaf9497a9ee888", "probleme": [] }, "[\"pipeline\", \"Statische Daten herunterladen\"]": { "abdruck": "a5527bcb3a8a8e95", "probleme": [] }, "[\"pipeline\", \"Systemzustand prüfen\"]": { "abdruck": "1bf0e238f72fcf45", "probleme": [] }, "[\"shop\", \"\"]": { "abdruck": "75b47d1052ed5c4c", "probleme": [] }, "[\"shop\", \"Augment auswählen\"]": { "abdruck": "39156336d367d481", "probleme": [] }, "[\"shop\", \"Item kaufen\"]": { "abdruck": "642d23d43adc285f", "probleme": [] }, "[\"shop\", \"Shop aktualisieren\"]": { "abdruck": "9a4c846ad728fba7", "probleme": [] }, "[\"shop\", \"Shop sperren\"]": { "abdruck": "45037477893cfe1e", "probleme": [] }, "[\"shop\", \"XP kaufen\"]": { "abdruck": "f39788167c4cc160", "probleme": [] }, "[\"spiel\", \"\"]": { "abdruck": "c9853896271c5be7", "probleme": [] }, "[\"spiel\", \"Gegner einblenden\"]": { "abdruck": "63d6fda80dd3b2d4", "probleme": [] }, "[\"spiel\", \"Runde fortsetzen\"]": { "abdruck": "cba0db2ace42f096", "probleme": [] }, "[\"spiel\", \"Spiel starten\"]": { "abdruck": "06a041341108c024", "probleme": [] }, "[\"spiel\", \"Spielaktion ausführen\"]": { "abdruck": "4c72ac35204cb4db", "probleme": [] }, "[\"spiel\", \"Spiele automatisch spielen\"]": { "abdruck": "63a5feadb6e87b2f", "probleme": [] }, "[\"spiel\", \"Spielstand abrufen\"]": { "abdruck": "3b51dd57c2d1e4e3", "probleme": [] } }, "verworfen": {} }