shotgun/game/item.go

58 lines
789 B
Go
Raw Normal View History

2024-01-20 22:06:56 -06:00
package game
type Item int8
const (
ItemNone Item = iota
ItemLens
ItemCig
ItemBeer
ItemCuff
ItemKnife
)
func NewItem(rng *RNG) Item {
return Item(rng.Intn(5)) + 1
}
func (i Item) Apply(g *Game) bool {
switch i {
case ItemNone:
return false
case ItemLens:
if g.Reveal {
return false
}
g.Reveal = true
return true
case ItemCig:
cur := g.CurrentPlayer()
if cur.HP < g.HP {
cur.HP++
return true
}
return false
case ItemBeer:
g.PopShell()
if g.Empty() {
g.StartGroup()
}
return true
case ItemCuff:
opp := g.Opponent()
if opp.Cuffs != Uncuffed {
return false
}
opp.Cuffs = Cuffed
return true
case ItemKnife:
if g.Damage != 1 {
return false
}
g.Damage = 2
return true
default:
panic("shotgun: unknown item")
}
}