package game type Artifact struct { permanentBase Solid int } func NewArtifactFromPath(cardPath string, tile *Tile, owner *Player) *Artifact { card := NewCard(cardPath) return NewArtifact(card, tile, owner) } func NewArtifact(card *Card, tile *Tile, owner *Player) *Artifact { a := &Artifact{ permanentBase: permanentBase{ card: card, tile: tile, owner: owner, controller: owner, marks: make(map[PermanentMark]int), }, } if s, err := card.getXEffect("solid"); err == nil { a.Solid = s.x } return a } func (a *Artifact) String() string { return FmtPermanent(a) } func (a *Artifact) IsDestroyed() bool { return a.Solid > 0 && a.Damage() >= a.Solid } func (a *Artifact) Attackable() bool { return a.permanentBase.Attackable() && a.Solid > 0 }