update
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
class_name Game
|
||||
extends RefCounted
|
||||
## Spielregeln: Duell, Mana je Zug, Ziehen aus dem gemeinsamen Stapel, verdeckte Wesen,
|
||||
## Elementboni, Verschmelzen und Verbessern.
|
||||
## Elementboni und Verschmelzen.
|
||||
|
||||
const MAX_BOARD := 5
|
||||
const MAX_HAND := 5
|
||||
@@ -21,7 +21,6 @@ const PERKS := {
|
||||
"extra_mana": "Bekommt jeden Zug 1 Mana mehr",
|
||||
"leben_35": "Beginnt mit 5 Leben mehr",
|
||||
"alle_flink": "Wesen greifen sofort an",
|
||||
"verbessern_billig": "Eigenschaften kosten 1 weniger",
|
||||
"start_energie": "Hat im ersten Zug 2 Mana mehr",
|
||||
"element_doppelt": "Elementbonus zählt doppelt",
|
||||
}
|
||||
@@ -65,8 +64,8 @@ class Creature extends RefCounted:
|
||||
func owner():
|
||||
return owner_ref.get_ref()
|
||||
|
||||
## Eigenschaft: gekauft, als Sondereffekt des Elementpaars der eigenen Seite oder als
|
||||
## Boss-Merkmal. Verdeckte Wesen haben keine.
|
||||
## Eigenschaft: als Sondereffekt des Elementpaars der eigenen Seite, aus der Karte
|
||||
## (verschmolzene erben) oder als Boss-Merkmal. Verdeckte Wesen haben keine.
|
||||
func has(kw: String) -> bool:
|
||||
if hidden:
|
||||
return false
|
||||
@@ -322,12 +321,6 @@ func draw_cost(p: Player) -> int:
|
||||
return 0 if "ziehen_gratis" in p.perks else DRAW_COST
|
||||
|
||||
|
||||
## Preis einer Eigenschaft für p.
|
||||
func upgrade_cost(p: Player, keyword: String) -> int:
|
||||
var c := int(Cards.KEYWORD_COST[keyword])
|
||||
return maxi(1, c - 1) if "verbessern_billig" in p.perks else c
|
||||
|
||||
|
||||
func draw(p: Player) -> String:
|
||||
var ok := can_draw(p)
|
||||
if not ok[0]:
|
||||
@@ -455,43 +448,6 @@ func _flip(cr: Creature) -> void:
|
||||
apply_auras()
|
||||
|
||||
|
||||
# --- Verbessern: Eigenschaften für Mana -------------------------------------
|
||||
|
||||
## target: eigenes Wesen auf dem Brett oder eigene Handkarte.
|
||||
func can_upgrade(p: Player, target, keyword: String) -> Array:
|
||||
if winner != "" or p != current():
|
||||
return [false, "Nicht dein Zug"]
|
||||
if not Cards.KEYWORD_COST.has(keyword):
|
||||
return [false, "Unbekannte Eigenschaft"]
|
||||
var card: Cards.Card = target.card if target is Creature else target
|
||||
if target is Creature:
|
||||
if not (target in p.board):
|
||||
return [false, "Nur eigene Wesen"]
|
||||
elif not (target in p.hand):
|
||||
return [false, "Nicht auf der Hand"]
|
||||
if keyword in card.keywords:
|
||||
return [false, "%s hat schon %s" % [card.name, keyword]]
|
||||
if p.energy < upgrade_cost(p, keyword):
|
||||
return [false, "Nicht genug Mana"]
|
||||
return [true, ""]
|
||||
|
||||
|
||||
func upgrade(p: Player, target, keyword: String) -> String:
|
||||
var ok := can_upgrade(p, target, keyword)
|
||||
if not ok[0]:
|
||||
return ok[1]
|
||||
p.energy -= upgrade_cost(p, keyword)
|
||||
var card: Cards.Card = (target.card if target is Creature else target).copy() # Kopien (KI) teilen sich Karten
|
||||
card.keywords.append(keyword)
|
||||
if target is Creature:
|
||||
target.card = card
|
||||
else:
|
||||
p.hand[p.hand.find(target)] = card
|
||||
say("%s bekommt %s." % [card.name, keyword])
|
||||
emit({"type": "upgrade", "player": players.find(p), "keyword": keyword, "uid": target.uid if target is Creature else -1})
|
||||
return ""
|
||||
|
||||
|
||||
# --- Verschmelzen ------------------------------------------------------------
|
||||
|
||||
static func card_of(x) -> Cards.Card:
|
||||
|
||||
Reference in New Issue
Block a user