Mercurial > wow > reagentmaker
comparison ReagentMaker.lua @ 46:40d6886d1966
Correct the number of items to craft (the formulae was wrong and has to take the number of item crafted into account)
| author | contrebasse |
|---|---|
| date | Sat, 30 Apr 2011 01:31:19 +0200 |
| parents | 00c2282f073a |
| children | 512660b07eda |
comparison
equal
deleted
inserted
replaced
| 45:4e6492b19f4c | 46:40d6886d1966 |
|---|---|
| 111 | 111 |
| 112 -- Index of the reagent in the recipe, taken from the button name | 112 -- Index of the reagent in the recipe, taken from the button name |
| 113 local reagentRecipeIndex = A.buttonNumber(btn) | 113 local reagentRecipeIndex = A.buttonNumber(btn) |
| 114 | 114 |
| 115 -- ID of the reagent we want to craft | 115 -- ID of the reagent we want to craft |
| 116 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(GetTradeSkillSelectionIndex(), reagentRecipeIndex)) | 116 local recipeIndex = GetTradeSkillSelectionIndex() |
| 117 local reagentID = A.link2ID(GetTradeSkillReagentItemLink(recipeIndex, reagentRecipeIndex)) | |
| 117 | 118 |
| 118 -- Continue only if the reagent is known | 119 -- Continue only if the reagent is known |
| 119 if not reagentID or not A.data[reagentID] then return end | 120 if not reagentID or not A.data[reagentID] then return end |
| 120 | 121 |
| 121 -- If only one recipe is known for the reagent, use it | 122 -- If only one recipe is known for the reagent, use it |
| 124 if not numMakable then | 125 if not numMakable then |
| 125 A.Error("The recipe to make the reagent seems to be hidden, it is not makable.") | 126 A.Error("The recipe to make the reagent seems to be hidden, it is not makable.") |
| 126 return | 127 return |
| 127 end | 128 end |
| 128 if numMakable>0 then | 129 if numMakable>0 then |
| 129 A.craft(reagentID,reagentRecipeIndex,reagentIndex,numMakable,chooseNumberToCraft) | 130 A.craft(recipeIndex,reagentRecipeIndex,reagentIndex,numMakable,chooseNumberToCraft) |
| 130 return | 131 return |
| 131 end | 132 end |
| 132 | 133 |
| 133 -- If we can make the item needed to make the reagent, open a window to make it | 134 -- If we can make the item needed to make the reagent, open a window to make it |
| 134 -- one step recursion, enables to mill to create an ink | 135 -- one step recursion, enables to mill to create an ink |
| 153 DoTradeSkill(owner.ReagentMaker_reagentIndex,tonumber(split)) | 154 DoTradeSkill(owner.ReagentMaker_reagentIndex,tonumber(split)) |
| 154 owner.ReagentMaker_reagentIndex = nil | 155 owner.ReagentMaker_reagentIndex = nil |
| 155 end | 156 end |
| 156 | 157 |
| 157 -- Craft the reagent of an item, given it's position in the recipe | 158 -- Craft the reagent of an item, given it's position in the recipe |
| 158 function A.craft(reagentID,reagentRecipeIndex,reagentIndex,numReagentMakable,chooseNumber) | 159 function A.craft(recipeIndex,reagentRecipeIndex,reagentIndex,numReagentMakable,chooseNumber) |
| 159 -- Look at how many we need to make one item for the selected recipe | 160 -- Look at how many we need to make one item for the selected recipe |
| 160 local numToMake = 1 | 161 local numToMake = 1 |
| 161 local selectedIndex = GetTradeSkillSelectionIndex() | 162 local _, _, reagentCount, playerReagentCount = GetTradeSkillReagentInfo(recipeIndex, reagentRecipeIndex) |
| 162 local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(selectedIndex) | |
| 163 local reagentName, reagentTexture, reagentCount, playerReagentCount = GetTradeSkillReagentInfo(selectedIndex, reagentRecipeIndex) | |
| 164 -- make enough reagents to craft one more item | 163 -- make enough reagents to craft one more item |
| 165 numToMake = math.min(reagentCount*(1+numAvailable) - playerReagentCount,numReagentMakable) | 164 numToMake = math.min(math.floor(playerReagentCount/reagentCount+1)*reagentCount-playerReagentCount,numReagentMakable) |
| 166 | 165 |
| 166 -- take into account that some recipe craft more than one item | |
| 167 -- use the mean between min and max, but make at least one... | |
| 168 local minMade, maxMade = GetTradeSkillNumMade(reagentIndex) | |
| 169 numToMake = math.max(math.floor(2*numToMake/(maxMade+minMade)),1) | |
| 170 | |
| 167 -- Choose number or craft directly | 171 -- Choose number or craft directly |
| 168 if chooseNumber and numReagentMakable>1 then | 172 if chooseNumber then |
| 169 -- the dialog window is linked to the reagent button | 173 -- the dialog window is linked to the reagent button |
| 170 local btn = _G["TradeSkillReagent"..reagentRecipeIndex] | 174 local btn = _G["TradeSkillReagent"..reagentRecipeIndex] |
| 171 | 175 |
| 172 -- Store info to be able to run the function later | 176 -- Store info to be able to run the function later |
| 173 btn.ReagentMaker_reagentIndex = reagentIndex | 177 btn.ReagentMaker_reagentIndex = reagentIndex |
