update
Tests / headless (push) Waiting to run
Tests / fenster-schnell (push) Waiting to run
Tests / fenster-voll (push) Skipped
Tests / balance (push) Skipped

This commit is contained in:
team3 committed 2026-10-15 17:16:01 +02:00
1 parent 1d563b9eec
commit 04fe9716e8
22 files changed
+764 -151

No files matched your search

+24 -3
View File
@@ -137,6 +137,9 @@ class Player extends RefCounted:
var cards_played := 0 # ausgespielte Karten (Münzen nach dem Kampf)
var draws := 0 # in diesem Zug gezogene Karten; die n-te kostet n-1 Mana
var fatigue := 0 # Züge ohne Karten im Stapel: so viel Leben kostet der nächste
var bonus_attack := 0 # Skill Stark: so viel mehr Angriff auf jeder gezogenen Karte
var bonus_health := 0 # Skill Zäh: so viel mehr Leben
var cheap_from := 99 # Skill Sparsam: Karten ab diesen Kosten sind 1 Mana billiger
func _init(n: String, h: bool, l: int, t: String = "") -> void:
name = n
@@ -148,12 +151,24 @@ class Player extends RefCounted:
func alive() -> bool:
return life > 0
## Die oberste Karte des eigenen Stapels als Exemplar in der eigenen Stufe; null, wenn er leer ist.
## Die oberste Karte des eigenen Stapels als Exemplar in der eigenen Stufe und mit den Skillboni
## (Stark, Zäh, Sparsam); null, wenn er leer ist.
func draw_from_deck() -> Cards.Card:
if deck.is_empty():
return null
var id: String = deck.pop_back()
return Cards.by_id(id).leveled(int(looks.get(id, 0)))
return boost(Cards.by_id(id).leveled(int(looks.get(id, 0))))
## Legt die Skillboni auf ein Exemplar: Stark und Zäh getrennt von den Grundwerten (Fusionen
## rechnen ohne sie), Sparsam macht teure Karten 1 Mana billiger.
func boost(c: Cards.Card) -> Cards.Card:
c.boost_attack = bonus_attack
c.boost_health = bonus_health
c.attack += bonus_attack
c.health += bonus_health
if c.cost >= cheap_from:
c.cost -= 1
return c
## Offene eigene Wesen mit diesem Element.
func element_count(e: String) -> int:
@@ -177,6 +192,9 @@ class Player extends RefCounted:
p.deck = deck.duplicate()
p.draws = draws
p.fatigue = fatigue
p.bonus_attack = bonus_attack
p.bonus_health = bonus_health
p.cheap_from = cheap_from
for c in board:
p.board.append(c.clone(p))
return p
@@ -489,7 +507,7 @@ func can_fuse(p: Player, a, b) -> Array:
## Die Karte, die aus a und b entsteht (siehe Cards.fused), in der höheren Stufe der Eltern.
static func fusion_result(p: Player, a, b) -> Cards.Card:
return Cards.fused(card_of(a), card_of(b), maxi(look_of(p, card_of(a)), look_of(p, card_of(b))))
return p.boost(Cards.fused(card_of(a), card_of(b), maxi(look_of(p, card_of(a)), look_of(p, card_of(b)))))
## Verschmilzt zwei eigene Karten zu einer neuen Handkarte: Wesen verlassen das Brett, die neue
@@ -633,6 +651,9 @@ static func new_battle_with(opp: Player, r: RandomNumberGenerator = null, fixed_
human.perks = Array(rules.get("human_perks", []))
human.looks = rules.get("looks", {})
human.deck = rules.get("deck", []).duplicate()
human.bonus_attack = int(rules.get("bonus_attack", 0))
human.bonus_health = int(rules.get("bonus_health", 0))
human.cheap_from = int(rules.get("cheap_from", 99))
var g := Game.new(human, opp, r)
for p in g.players:
if "leben_35" in p.perks: