From afbdb034287adf961d20761b941a94946760337b Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 6 Aug 2025 09:33:50 +0200 Subject: fix parsing of solid artifacts --- go/game/artifact.go | 17 ++--------------- go/game/card_test.go | 9 +++++++++ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/go/game/artifact.go b/go/game/artifact.go index 8c9b74e0..35c05893 100644 --- a/go/game/artifact.go +++ b/go/game/artifact.go @@ -1,10 +1,5 @@ package game -import ( - "log" - "strconv" - "strings" -) type Artifact struct { permanentBase @@ -27,16 +22,8 @@ func NewArtifact(card *Card, tile *Tile, owner *Player) *Artifact { }, } - effects := card.getEffects() - for _, e := range effects { - if strings.HasPrefix(e, "Solid") { - tokens := strings.Split(e, " ") - var err error - a.Solid, err = strconv.Atoi(tokens[1]) - if err != nil { - log.Panicf("Invalid Solid definition %s\n", e) - } - } + if s, err := card.getXEffect("solid"); err == nil { + a.Solid = s.x } return a diff --git a/go/game/card_test.go b/go/game/card_test.go index 3e9c8f6f..c3c05197 100644 --- a/go/game/card_test.go +++ b/go/game/card_test.go @@ -26,6 +26,7 @@ func TestCardReporters(t *testing.T) { recruit := NewCard("base/recruit") ritual := NewCard("magic/ritual!") sword := NewCard("base/sword") + palisade := NewCard("base/palisade") if !archer.IsBuyable() || !ritual.IsBuyable() || recruit.IsBuyable() || !sword.IsBuyable() { t.Fatal("unexpected buyability result") @@ -50,4 +51,12 @@ func TestCardReporters(t *testing.T) { if archer.hasPlacementConstrain("swimmming") { t.Fatal("archer is not swimming") } + + x, err := palisade.getXEffect("solid") + if err != nil { + t.Fatal("xEffect error returned") + } + if x.x != 6 || !x.set { + t.Fatal("invalid palisade solid effect") + } } -- cgit v1.2.3