diff --git a/src/coffee/models/crafting/crafting_plan.coffee b/src/coffee/models/crafting/crafting_plan.coffee index e9715176d..65e3e4793 100644 --- a/src/coffee/models/crafting/crafting_plan.coffee +++ b/src/coffee/models/crafting/crafting_plan.coffee @@ -100,16 +100,18 @@ module.exports = class CraftingPlan result.push " #{stack}" result.push "Start with:" - @_need.each (stack)-> - result.push " #{stack}" + if @_need? + @_need.each (stack)-> + result.push " #{stack}" result.push "Use these recipes:" for step in @_steps result.push " #{step}" result.push "To produce:" - @_made.each (stack)-> - result.push " #{stack}" + if @_made? + @_made.each (stack)-> + result.push " #{stack}" if _.keys(@_rawScores).length > 0 result.push "Scores:" diff --git a/src/coffee/models/crafting/plan_evaluator.coffee b/src/coffee/models/crafting/plan_evaluator.coffee index 26bf97b32..6525c916b 100644 --- a/src/coffee/models/crafting/plan_evaluator.coffee +++ b/src/coffee/models/crafting/plan_evaluator.coffee @@ -17,7 +17,7 @@ module.exports = class PlanEvaluator if not plans? then throw new Error 'plans is required' @_plans = plans - @_lastScored = 0 + @_lastScored = -1 @_normalized = false # Public Methods ############################################################################### @@ -41,7 +41,7 @@ module.exports = class PlanEvaluator return if @complete maxPlanIndex = Math.min @_lastScored + count, @_plans.length - 1 - for i in [@_lastScored..maxPlanIndex] + for i in [(@_lastScored + 1)..maxPlanIndex] @_plans[i].computeRequired() @_scorePlan @_plans[i] @_lastScored = i diff --git a/src/coffee/models/inventory.coffee b/src/coffee/models/inventory.coffee index 645e8085b..2b814395d 100644 --- a/src/coffee/models/inventory.coffee +++ b/src/coffee/models/inventory.coffee @@ -90,7 +90,7 @@ module.exports = class Inventory extends BaseModel if qualifiedSlug? newSlugs.push qualifiedSlug - newStacks.push new Stack itemSlug:qualifiedSlug, stack.quantity + newStacks.push new Stack itemSlug:qualifiedSlug, quantity:stack.quantity else newSlugs.push itemSlug newStacks.push stack diff --git a/src/coffee/models/simple_inventory.coffee b/src/coffee/models/simple_inventory.coffee index 00a92224c..ffe0248df 100644 --- a/src/coffee/models/simple_inventory.coffee +++ b/src/coffee/models/simple_inventory.coffee @@ -66,21 +66,32 @@ module.exports = class SimpleInventory localize: -> if not @modPack? then throw new Error 'localize requires @modPack' + changed = false newSlugs = [] + newStacks = [] for itemSlug in @_itemSlugs stack = @_stacks[itemSlug] + continue unless stack? + + qualifiedSlug = if itemSlug.isQualified then itemSlug else null + if not qualifiedSlug? + qualifiedSlug = @modPack.findItem(itemSlug)?.slug + changed = qualifiedSlug? - qualifiedSlug = @modPack.findItem(itemSlug)?.slug if qualifiedSlug? - delete @_stacks[itemSlug] newSlugs.push qualifiedSlug - @_stacks[qualifiedSlug] = stack - stack.itemSlug = qualifiedSlug + newStacks.push new Stack itemSlug:qualifiedSlug, quantity:stack.quantity else newSlugs.push itemSlug + newStacks.push stack - @_itemSlugs = newSlugs - @_sort() + if changed + @_itemSlugs = newSlugs + @_stacks = {} + for stack in newStacks + @_stacks[stack.itemSlug] = stack + + @_sort() pop: -> itemSlug = @_itemSlugs.pop()