aboutsummaryrefslogtreecommitdiff
path: root/go/game/tile.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/game/tile.go')
-rw-r--r--go/game/tile.go30
1 files changed, 29 insertions, 1 deletions
diff --git a/go/game/tile.go b/go/game/tile.go
index 06770ff3..d5a256d9 100644
--- a/go/game/tile.go
+++ b/go/game/tile.go
@@ -97,6 +97,31 @@ var farmEffect areaEffect = newGrantFullActionEffect("misc/farmer",
}
}, "gain 3 resource", "farmAction")
+var towerEffect areaEffect = newDynamicAreaEffect(
+ func(p Permanent) {
+ var u *Unit
+ var ok bool
+ if u, ok = p.(*Unit); !ok {
+ return
+ }
+ if u.Attack.MaxRange() < 2 {
+ return
+ }
+ u.Attack.Extend(1)
+ },
+ func(p Permanent) {
+ var u *Unit
+ var ok bool
+ if u, ok = p.(*Unit); !ok {
+ return
+ }
+ if u.Attack.MaxRange() < 3 {
+ return
+ }
+ u.Attack.Shorten(1)
+ },
+)
+
type Tile struct {
Position Position
Permanent Permanent
@@ -131,8 +156,11 @@ func NewTileFromString(raw string, pos Position) (Tile, error) {
t := Tile{Position: pos, Type: tileType, Water: water, Raw: raw}
- if tileType == TileTypes.Farm {
+ switch tileType {
+ case TileTypes.Farm:
t.effects = append(t.effects, farmEffect)
+ case TileTypes.Tower:
+ t.effects = append(t.effects, towerEffect)
}
return t, nil