diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-08-06 09:33:50 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:57:33 +0200 |
| commit | deee4b76b6ab1a94e5578818aba4b94e22e6ac89 (patch) | |
| tree | 084ecc66dc9284e8bd7db4663525470eec244fce | |
| parent | c696829f9e37e9f3752fdb89ebaadd4b3b237bea (diff) | |
| download | muhqs-game-deee4b76b6ab1a94e5578818aba4b94e22e6ac89.tar.gz muhqs-game-deee4b76b6ab1a94e5578818aba4b94e22e6ac89.zip | |
fix parsing of solid artifacts
| -rw-r--r-- | go/game/artifact.go | 17 | ||||
| -rw-r--r-- | go/game/artifact_test.go | 21 | ||||
| -rw-r--r-- | go/game/card_test.go | 13 |
3 files changed, 34 insertions, 17 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/artifact_test.go b/go/game/artifact_test.go new file mode 100644 index 00000000..84c15652 --- /dev/null +++ b/go/game/artifact_test.go @@ -0,0 +1,21 @@ +package game + +import ( + "testing" +) + +func TestSolid(t *testing.T) { + p := NewArtifactFromPath("base/palisade", NewMockTile(), NewMockPlayer()) + if !p.Attackable() { + t.Fatal("palisade not attackable") + } + + if p.IsDestroyed() { + t.Fatal("palisade already destroyed") + } + + p.adjustDamage(6) + if !p.IsDestroyed() { + t.Fatal("palisade not destroyed") + } +} diff --git a/go/game/card_test.go b/go/game/card_test.go index 3e9c8f6f..7e2fefa9 100644 --- a/go/game/card_test.go +++ b/go/game/card_test.go @@ -26,12 +26,13 @@ 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() { + if !archer.IsBuyable() || !ritual.IsBuyable() || !recruit.IsBuyable() || !sword.IsBuyable() || !palisade.IsBuyable() { t.Fatal("unexpected buyability result") } - if !archer.IsPermanent() || ritual.IsPermanent() || !recruit.IsPermanent() || !sword.IsPermanent() { + if !archer.IsPermanent() || ritual.IsPermanent() || !recruit.IsPermanent() || !sword.IsPermanent() || !palisade.IsPermanent() { t.Fatal("unexpected permanent 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") + } } |
