From eef5ddaa94f8cff6010d092c30fed53d2be01524 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Wed, 17 Jun 2026 17:34:40 -0400 Subject: feat: began implementing smithing, ground item display fixes. --- internal/game/cmd_use.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'internal/game/cmd_use.go') diff --git a/internal/game/cmd_use.go b/internal/game/cmd_use.go index 56aa5a1..247df72 100644 --- a/internal/game/cmd_use.go +++ b/internal/game/cmd_use.go @@ -74,6 +74,39 @@ func (g *Game) doUseItemOnTarget(sess *net.Session, p *player.Player, itemAName, stationIDs := []string{def.ID} recipes, err := g.RecipeStore.FindByStation(itemAID, stationIDs, "") if err == nil && len(recipes) > 0 { + if recipes[0].Type == "smelting" { + filtered := recipes[:0:0] + for _, r := range recipes { + if r.Type != "smelting" { + continue + } + if !r.HasAllItemsQty(p.CountItem) { + continue + } + skillLevel := p.Level(player.SkillName(r.Skill)) + if skillLevel < r.Level { + continue + } + filtered = append(filtered, r) + } + if len(filtered) == 0 { + sess.WriteLine("You can't smelt that here.") + return + } + if len(filtered) == 1 { + g.startSmelt(sess, p, &filtered[0], def.Name) + return + } + sess.PendingRecipeItem = itemAID + sess.PendingCookMenu = smeltRecipesToMenuData(filtered) + sess.State = net.StateSmeltRecipe + sess.WriteLine("\nWhat would you like to smelt?") + for i, r := range filtered { + sess.WriteLine(fmt.Sprintf(" %d) %s", i+1, g.recipeName(sess, &r))) + } + sess.WriteLine(fmt.Sprintf(" %d) Nothing", len(filtered)+1)) + return + } if len(recipes) == 1 { g.startCook(sess, p, &recipes[0], def.Name) return -- cgit v1.2.3