|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
local DIRTY ={ ALL = 1, NUM_CREATABLE = 2, MEETS_REQUIREMENTS = 3,} return objend end) end) end) EVENT_MANAGER:RegisterForEvent("ZO_ProvisionerManager", EVENT_INVENTORY_SINGLE_SLOT_UPDATE, function() end) EVENT_MANAGER:RegisterForEvent("ZO_ProvisionerManager", EVENT_NON_COMBAT_BONUS_CHANGED, function(eventCode, nonCombatBonusType) if GetTradeskillTypeForNonCombatBonusLevelType(nonCombatBonusType) ~= CRAFTING_TYPE_INVALID or nonCombatBonusType == NON_COMBAT_BONUS_PROVISIONING_RARITY_LEVEL then end end)endend endend else recipe.maxIterationsForIngredients = self:CalculateMaxIterationsForIngredients(recipe.recipeListIndex, recipe.recipeIndex, recipe.numIngredients) end end end end end end endend-- This calculates the number of times we could perform a craft with the ingredients we currently have, ignoring space or cost or other limits.-- To find out how many iterations you can actually do in one go, use GetMaxIterationsPossibleForRecipe() instead.function ZO_ProvisionerManager:CalculateMaxIterationsForIngredients(recipeListIndex, recipeIndex, numIngredients) if numIngredients == 0 then return 0 end local minCount = math.huge for ingredientIndex = 1, numIngredients do local requiredQuantity = GetRecipeIngredientRequiredQuantity(recipeListIndex, recipeIndex, ingredientIndex) local ingredientCount = GetCurrentRecipeIngredientCount(recipeListIndex, recipeIndex, ingredientIndex) if minCount == 0 then return 0 end end return minCountend return false end end return trueend if qualityReq == 0 then return true else --Only exclusively provisioning system recipes have a quality requirement endenddo local DEFAULT_RECIPE_CREATE_SOUND = SOUNDS.DEFAULT_RECIPE_CRAFTED return function(_, lastIndex) end end end local recipeListName, numRecipes, upIcon, downIcon, overIcon, _, recipeListCreateSound = GetRecipeListInfo(recipeListIndex) local _, recipeName, numIngredients, _, qualityReq, specialIngredientType, requiredCraftingStationType, itemId = GetRecipeInfo(recipeListIndex, recipeIndex) local maxIterationsForIngredients = self:CalculateMaxIterationsForIngredients(recipeListIndex, recipeIndex, numIngredients) local tradeskillsLevelReqs = {} local tradeskill, levelReq = GetRecipeTradeskillRequirement(recipeListIndex, recipeIndex, tradeskillIndex) tradeskillsLevelReqs[tradeskill] = levelReq end local createSound = recipeListCreateSound if createSound == "" then createSound = DEFAULT_RECIPE_CREATE_SOUND end local recipe = { recipeListName = recipeListName, recipeListIndex = recipeListIndex, recipeIndex = recipeIndex, qualityReq = qualityReq, specialIngredientType = specialIngredientType, numIngredients = numIngredients, maxIterationsForIngredients = maxIterationsForIngredients, createSound = createSound, iconFile = resultIcon, displayQuality = displayQuality, -- quality is deprecated, included here for addon backwards compatibility quality = displayQuality, tradeskillsLevelReqs = tradeskillsLevelReqs, requiredCraftingStationType = requiredCraftingStationType, resultItemId = itemId, } if not recipeList then recipeList = { recipeListName = recipeListName, recipeListIndex = recipeListIndex, upIcon = upIcon, downIcon = downIcon, overIcon = overIcon, recipes = {} } end end if recipeList then end end endend |