Booster-Phase raus, Karten auf die Hand
Die Boosterwahl kostete jede Runde eine eigene Phase mit 30 Sekunden Frist. Zwischen Wurf und Ansage lag damit eine Wartezeit, die den Ablauf zerriss. Jetzt gibt es Karten statt einer Phase: * Wer einen Wuerfel abgibt, zieht eine Karte. Das ist der einzige Nachschub, also bekommt der etwas zurueck, der gerade hinten liegt. * Gespielt wird jederzeit waehrend der Ansagen, nicht nur am eigenen Zug. * Hoechstens drei Karten auf der Hand. * Die Hand liegt offen unten links, ein Klick spielt. Nur Feinschliff und Gluecksgriff fragen noch nach dem Wuerfel. Der Katalog ist angepasst, weil jede Karte jetzt sofort wirken muss: neu sind Erhoehen (Ansage +1), Widerruf (hebt Nebel, Stoerfeuer und Maulkorb auf dir auf) und Nachschub (ein Wuerfel dazu). Zwilling und Ruetteln sind raus - beide brauchten den festen Zeitpunkt vor dem Wurf. Bots spielen ihre Karten am eigenen Zug, bei voller Hand immer. Zwei Karten gleichzeitig wuerden sich beim Wuerfeln in die Quere kommen, deshalb wird immer nur eine aufgeloest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -102,38 +102,12 @@ static func _is_higher(count: int, face: int, bid: Dictionary, min_raise: int) -
|
||||
return count == bid.count and face > bid.face
|
||||
|
||||
|
||||
static func choose_booster(offer: Array, values: Array, dice_left: int, rng: RandomNumberGenerator) -> Dictionary:
|
||||
var scores: Array = []
|
||||
for id in offer:
|
||||
var b: Dictionary = BoosterDB.get_booster(id)
|
||||
var s := rng.randf()
|
||||
if b.kind == BoosterDB.Kind.BUFF:
|
||||
s += 0.35
|
||||
if dice_left <= 2 and b.kind == BoosterDB.Kind.BUFF:
|
||||
s += 0.35
|
||||
scores.append(s)
|
||||
var pick := 0
|
||||
for i in scores.size():
|
||||
if scores[i] > scores[pick]:
|
||||
pick = i
|
||||
var id: String = offer[pick]
|
||||
return {"id": id, "target": _target_for(id, values)}
|
||||
|
||||
|
||||
static func _target_for(id: String, values: Array) -> int:
|
||||
## Welcher eigene Würfel soll dran glauben? Für Karten mit Zielwahl.
|
||||
static func target_for(id: String, values: Array) -> int:
|
||||
if values.is_empty():
|
||||
return 0
|
||||
if id == "twin":
|
||||
# Würfel mit dem häufigsten Wert
|
||||
var counts := {}
|
||||
for v in values:
|
||||
counts[v] = counts.get(v, 0) + 1
|
||||
var best_v: int = values[0]
|
||||
for v: int in counts:
|
||||
if counts[v] > counts.get(best_v, 0):
|
||||
best_v = v
|
||||
return values.find(best_v)
|
||||
# sonst: schwächster Würfel
|
||||
# Der schwächste Würfel: den neu zu werfen oder zur 6 zu machen bringt
|
||||
# am meisten.
|
||||
var idx := 0
|
||||
for i in values.size():
|
||||
if values[i] < values[idx]:
|
||||
|
||||
Reference in New Issue
Block a user