diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-09-04 20:01:27 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-09-04 20:01:27 +0200 |
| commit | 5898ef394b5ee99a1c7bf75b6dfcaf039eb00945 (patch) | |
| tree | abdb63624534249ff68dda1cd60f04eda15cc126 | |
| parent | 045a2ebbc5cac9ba5bdb707c78fb613454575064 (diff) | |
| download | muhqs-game-5898ef394b5ee99a1c7bf75b6dfcaf039eb00945.tar.gz muhqs-game-5898ef394b5ee99a1c7bf75b6dfcaf039eb00945.zip | |
implement power_to_the_people!
| -rw-r--r-- | go/game/cardImplementations.go | 17 | ||||
| -rw-r--r-- | go/game/cardImplementations_test.go | 21 |
2 files changed, 34 insertions, 4 deletions
diff --git a/go/game/cardImplementations.go b/go/game/cardImplementations.go index 926a3cad..1f7af599 100644 --- a/go/game/cardImplementations.go +++ b/go/game/cardImplementations.go @@ -794,6 +794,14 @@ func (*patricianImpl) freeActions(p Permanent) []*FreeAction { return []*FreeAction{m, a, ar, d, r} } +type powerToThePeopleImpl struct{ cardImplementationBase } + +func (*powerToThePeopleImpl) onPlay(a *PlayAction) { + p := a.Controller() + n := len(p.gameState.OwnUnits(p)) + p.gainResource(n) +} + type recycleImpl struct{ cardImplementationBase } func (*recycleImpl) playTargets() TargetDesc { @@ -856,9 +864,10 @@ func init() { "kraken/tides_change!": &tidesChangeImpl{}, "kraken/unholy_cannonball": &unholyCannonballImpl{}, - "exp1/illusion": &illusionImpl{}, - "exp1/illusionist": &illusionistImpl{}, - "exp1/patrician": &patricianImpl{}, - "exp1/recycle!": &recycleImpl{}, + "exp1/illusion": &illusionImpl{}, + "exp1/illusionist": &illusionistImpl{}, + "exp1/patrician": &patricianImpl{}, + "exp1/power_to_the_people!": &powerToThePeopleImpl{}, + "exp1/recycle!": &recycleImpl{}, } } diff --git a/go/game/cardImplementations_test.go b/go/game/cardImplementations_test.go index f75e4d80..b3ac5811 100644 --- a/go/game/cardImplementations_test.go +++ b/go/game/cardImplementations_test.go @@ -325,3 +325,24 @@ func TestRecycle(t *testing.T) { t.Fatal("Hand does not contain one cards") } } + +func TestPowerToThePeople(t *testing.T) { + s, _, player, _ := newMockState() + player.Resource = 3 + + for y := range 2 { + for x := range 2 { + s.addNewUnit(NewCard("base/archer"), Position{x, y}, player) + } + } + + c := NewCard("exp1/power_to_the_people!") + player.Hand.AddCard(c) + a := NewPlayAction(player, c) + + s.declareAction(a) + s.stack.pop() + if player.Resource != 4 { + t.Fatal("Not gained 4 resource") + } +} |
