extends Node ## Katalog aller Karten. ## ## Karten gibt es nicht mehr rundenweise zur Auswahl. Wer einen Würfel ## verliert, zieht eine. Gespielt wird jederzeit während der Ansagen - deshalb ## wirkt jede Karte sofort und braucht keine eigene Phase mehr. enum Kind { BUFF, DEBUFF } ## Mehr als das passt nicht auf die Hand; sonst hortet man bis zum Schluss. const HANDLIMIT := 3 const ALL := [ { "id": "reroll_all", "kind": Kind.BUFF, "target": false, "name": "Neuwurf", "desc": "Wirf alle deine Würfel noch einmal neu.", }, { "id": "reroll_one", "kind": Kind.BUFF, "target": true, "name": "Feinschliff", "desc": "Wirf einen selbst gewählten Würfel neu.", }, { "id": "set_six", "kind": Kind.BUFF, "target": true, "name": "Glücksgriff", "desc": "Ein gewählter Würfel wird zur 6.", }, { "id": "gain_die", "kind": Kind.BUFF, "target": false, "name": "Nachschub", "desc": "Du bekommst einen Würfel dazu.", }, { "id": "cancel", "kind": Kind.BUFF, "target": false, "name": "Widerruf", "desc": "Hebt Nebel, Störfeuer und Maulkorb auf, die auf dir liegen.", }, { "id": "peek", "kind": Kind.BUFF, "target": false, "name": "Spähen", "desc": "Von jedem Gegner wird dir ein zufälliger Würfel aufgedeckt.", }, { "id": "bid_up", "kind": Kind.DEBUFF, "target": false, "name": "Erhöhen", "desc": "Die laufende Ansage steigt um 1.", }, { "id": "enemy_lower", "kind": Kind.DEBUFF, "target": false, "name": "Absenken", "desc": "Bei jedem Gegner sinkt ein zufälliger Würfel um 1 (1 bleibt 1).", }, { "id": "fog", "kind": Kind.DEBUFF, "target": false, "name": "Nebel", "desc": "Jeder Gegner verliert die Sicht auf einen seiner eigenen Würfel.", }, { "id": "raise_min", "kind": Kind.DEBUFF, "target": false, "name": "Störfeuer", "desc": "Alle Gegner müssen diese Runde um mindestens 2 erhöhen.", }, { "id": "gag", "kind": Kind.DEBUFF, "target": false, "name": "Maulkorb", "desc": "Wer gerade dran ist, muss bieten und darf nicht anfechten.", }, ] func get_booster(id: String) -> Dictionary: for b in ALL: if b.id == id: return b return {} func needs_target(id: String) -> bool: return get_booster(id).get("target", false) ## Eine zufällige Karte, für den, der gerade einen Würfel verloren hat. func zieh(rng: RandomNumberGenerator) -> String: return String(ALL[rng.randi_range(0, ALL.size() - 1)].id)