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