update
This commit is contained in:
@@ -40,11 +40,15 @@ static func start_deck(element: String) -> Array:
|
||||
return out
|
||||
|
||||
|
||||
## Füllt deck aus pool (Karten-IDs) bis limit auf, die teuersten zuerst; nichts doppelt.
|
||||
static func fill(deck: Array, pool: Array, limit: int) -> Array:
|
||||
## Füllt deck aus pool (Karten-IDs) bis limit auf, die wertvollsten zuerst (Card.value in der
|
||||
## Stufe aus levels: ID -> Stufe), bei gleichem Wert die teuersten; nichts doppelt.
|
||||
static func fill(deck: Array, pool: Array, limit: int, levels: Dictionary = {}) -> Array:
|
||||
var out := deck.duplicate()
|
||||
var cards := pool.filter(func(id): return not (id in out)).map(func(id): return Cards.by_id(id))
|
||||
cards.sort_custom(func(a, b): return a.cost > b.cost if a.cost != b.cost else a.id < b.id)
|
||||
var cards := pool.filter(func(id): return not (id in out)).map(func(id): return Cards.by_id(id).leveled(int(levels.get(id, 0))))
|
||||
cards.sort_custom(func(a, b):
|
||||
if a.value() != b.value():
|
||||
return a.value() > b.value()
|
||||
return a.cost > b.cost if a.cost != b.cost else a.id < b.id)
|
||||
for c in cards:
|
||||
if out.size() >= limit:
|
||||
break
|
||||
@@ -52,5 +56,16 @@ static func fill(deck: Array, pool: Array, limit: int) -> Array:
|
||||
return out
|
||||
|
||||
|
||||
## Stärke eines Stapels: der mittlere Kartenwert (Card.value) in den Stufen aus levels,
|
||||
## 100 für lauter Grundkarten bis 500 für lauter Ultimate Rare; leer: 0.
|
||||
static func strength(deck: Array, levels: Dictionary) -> int:
|
||||
if deck.is_empty():
|
||||
return 0
|
||||
var sum := 0
|
||||
for id in deck:
|
||||
sum += Cards.by_id(id).leveled(int(levels.get(id, 0))).value()
|
||||
return roundi(float(sum) / deck.size())
|
||||
|
||||
|
||||
static func random_opponent(life: int = Game.START_LIFE) -> Game.Player:
|
||||
return Game.Player.new("Gegner", false, life)
|
||||
|
||||
Reference in New Issue
Block a user