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 | 
