aboutsummaryrefslogtreecommitdiff
path: root/internal/game/cmd_use.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/cmd_use.go')
-rw-r--r--internal/game/cmd_use.go33
1 files changed, 33 insertions, 0 deletions
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