package game import ( "fmt" "thirdcollapse/internal/net" "thirdcollapse/internal/player" ) func (g *Game) doDrop(sess *net.Session, input string) { p := sess.Player.(*player.Player) matches := g.findInventoryMatches(input, p) if len(matches) == 0 { sess.WriteLine(fmt.Sprintf("You don't have any '%s'.", input)) return } unique := uniqueItemNames(matches) if len(unique) > 1 { sess.WriteLine("Which one?") for _, name := range unique { sess.WriteLine(fmt.Sprintf(" - %s", name)) } return } itemID := matches[0].ID slotIdx := matches[0].Slot slot := p.InvSlot(slotIdx) def, _ := g.ItemStore.Load(itemID) qty := 1 name := itemID if def != nil { name = def.Name } if slot.Quantity > qty { slot.Quantity -= qty } else { p.SetInvSlot(slotIdx, nil) } g.World.AddGroundItem(p.RoomID, itemID, qty) g.AccountStore.SaveCharacter(p) sess.WriteLine(fmt.Sprintf("You drop a %s.", name)) }