package game type Equipment struct { Artifact Durability int } func newEquipmentFromPath(cardPath string, containing interface{}, owner *Player) *Equipment { card := NewCard(cardPath) return newEquipment(card, containing, owner) } func newEquipment(card *Card, containing interface{}, owner *Player) *Equipment { e := &Equipment{ *NewArtifact(card, nil, owner), card.Values["durability"].(int), } if containing != nil { switch containing := containing.(type) { case *Tile: e.tile = containing case *Unit: addPermanentToPile(containing, e) } } return e } func (e *Equipment) onDrop(p Permanent) { e.permanentBase.onDrop(p) e.Durability-- if e.Durability < 1 { e.Controller().gameState.destroyPermanent(e) return } }