Skip to content

Commit 68a2481

Browse files
committed
temp workaround and more filters
1 parent 331c2d2 commit 68a2481

11 files changed

+161
-64
lines changed

Classes/OptionalReagentSlot.lua

+7-4
Original file line numberDiff line numberDiff line change
@@ -57,24 +57,27 @@ end
5757
--- returns wether the player has enough the selected optional reagent
5858
---@param multiplier number? default: 1
5959
---@param crafterUID string
60-
function CraftSim.OptionalReagentSlot:HasItem(multiplier, crafterUID)
60+
---@param excludeWarbankTemp? boolean
61+
function CraftSim.OptionalReagentSlot:HasItem(multiplier, crafterUID, excludeWarbankTemp)
6162
multiplier = multiplier or 1
6263
if not self.activeReagent then
6364
return true
6465
end
6566

66-
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, self.activeReagent.item:GetItemID())
67+
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, self.activeReagent.item:GetItemID(),
68+
excludeWarbankTemp)
6769

6870
return itemCount >= (multiplier * self.maxQuantity)
6971
end
7072

7173
--- check how many times the player can fulfill the allocated item quantity
7274
---@param crafterUID string
73-
function CraftSim.OptionalReagentSlot:HasQuantityXTimes(crafterUID)
75+
function CraftSim.OptionalReagentSlot:HasQuantityXTimes(crafterUID, excludeWarbankTemp)
7476
if not self.activeReagent then
7577
return math.huge -- yes I have infinite a number of times yes
7678
end
77-
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, self.activeReagent.item:GetItemID())
79+
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, self.activeReagent.item:GetItemID(),
80+
excludeWarbankTemp)
7881
return itemCount * self.maxQuantity
7982
end
8083

Classes/Reagent.lua

+6-4
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,15 @@ end
136136

137137
--- returns wether the player has enough of the given required item's allocations (times the multiplier)
138138
---@param multiplier number? default: 1
139-
function CraftSim.Reagent:HasItems(multiplier, crafterUID)
139+
---@param crafterUID CrafterUID?
140+
---@param excludeWarbankTemp? boolean
141+
function CraftSim.Reagent:HasItems(multiplier, crafterUID, excludeWarbankTemp)
140142
multiplier = multiplier or 1
141143

142144
-- check if the player owns enough of each allocated items's quantity and sum up the allocated quantities
143145
local totalQuantity = 0
144146
for _, reagentItem in pairs(self.items) do
145-
local hasItems = reagentItem:HasItem(multiplier, crafterUID)
147+
local hasItems = reagentItem:HasItem(multiplier, crafterUID, excludeWarbankTemp)
146148
totalQuantity = totalQuantity + reagentItem.quantity
147149
if not hasItems then
148150
return false
@@ -158,7 +160,7 @@ function CraftSim.Reagent:HasItems(multiplier, crafterUID)
158160
end
159161

160162
--- check how many times the player can fulfill the allocated item quantity
161-
function CraftSim.Reagent:HasQuantityXTimes(crafterUID)
163+
function CraftSim.Reagent:HasQuantityXTimes(crafterUID, excludeWarbankTemp)
162164
local currentMinTimes = math.huge
163165

164166
local print = CraftSim.DEBUG:SetDebugPrint(CraftSim.CONST.DEBUG_IDS.CRAFTQ)
@@ -169,7 +171,7 @@ function CraftSim.Reagent:HasQuantityXTimes(crafterUID)
169171
-- use original item if available
170172
local itemID = (reagentItem.originalItem and reagentItem.originalItem:GetItemID()) or
171173
reagentItem.item:GetItemID()
172-
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID)
174+
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID, excludeWarbankTemp)
173175
--print("--player item count: " .. tostring(itemCount))
174176
--print("--reagentItem.quantity: " .. tostring(reagentItem.quantity))
175177
local itemFitCount = math.floor(itemCount / reagentItem.quantity)

Classes/ReagentData.lua

+26-16
Original file line numberDiff line numberDiff line change
@@ -358,25 +358,26 @@ end
358358
---comment
359359
---@param multiplier number?
360360
---@param crafterUID string
361+
---@param excludeWarbankTemp? boolean
361362
---@return boolean
362-
function CraftSim.ReagentData:HasEnough(multiplier, crafterUID)
363+
function CraftSim.ReagentData:HasEnough(multiplier, crafterUID, excludeWarbankTemp)
363364
multiplier = multiplier or 1
364365
-- check required, optional and finished reagents if the player has enough times multiplier in his inventory and bank
365366

366367
local hasRequiredReagents = GUTIL:Every(self.requiredReagents,
367368
---@param requiredReagent CraftSim.Reagent
368369
function(requiredReagent)
369-
return requiredReagent:HasItems(multiplier, crafterUID)
370+
return requiredReagent:HasItems(multiplier, crafterUID, excludeWarbankTemp)
370371
end)
371372

372373
local hasOptionalReagents = GUTIL:Every(GUTIL:Concat({ self.optionalReagentSlots, self.finishingReagentSlots }),
373374
---@param optionalReagentSlot CraftSim.OptionalReagentSlot
374375
function(optionalReagentSlot)
375-
return optionalReagentSlot:HasItem(multiplier, crafterUID)
376+
return optionalReagentSlot:HasItem(multiplier, crafterUID, excludeWarbankTemp)
376377
end)
377378
local hasSparkReagent = true
378379
if self:HasSparkSlot() then
379-
hasSparkReagent = self.sparkReagentSlot:HasItem(multiplier, crafterUID)
380+
hasSparkReagent = self.sparkReagentSlot:HasItem(multiplier, crafterUID, excludeWarbankTemp)
380381
end
381382
-- update item cache for all possible optional reagents if I am the crafter
382383
if crafterUID == CraftSim.UTIL:GetPlayerCrafterUID() then
@@ -402,33 +403,37 @@ function CraftSim.ReagentData:HasEnough(multiplier, crafterUID)
402403

403404
if self.recipeData.isEnchantingRecipe then
404405
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, CraftSim.CONST
405-
.ENCHANTING_VELLUM_ID)
406+
.ENCHANTING_VELLUM_ID, true)
406407
hasVellumIfneeded = itemCount >= multiplier
407408
end
408409

409410

410411
return hasRequiredReagents and hasOptionalReagents and hasSparkReagent and hasVellumIfneeded
411412
end
412413

413-
function CraftSim.ReagentData:GetCraftableAmount(crafterUID)
414+
---@param crafterUID CrafterUID
415+
---@param excludeWarbankTemp? boolean
416+
function CraftSim.ReagentData:GetCraftableAmount(crafterUID, excludeWarbankTemp)
414417
local print = CraftSim.DEBUG:SetDebugPrint(CraftSim.CONST.DEBUG_IDS.CRAFTQ)
415418

416419
print("getCraftable amount", false, true)
417420

418421
local currentMinimumReagentFit = math.huge
419422
for _, requiredReagent in pairs(self.requiredReagents) do
420423
if not requiredReagent:IsOrderReagentIn(self.recipeData) then
421-
if not requiredReagent:HasItems(1, crafterUID) then
424+
if not requiredReagent:HasItems(1, crafterUID, excludeWarbankTemp) then
422425
return 0
423426
end
424-
currentMinimumReagentFit = math.min(requiredReagent:HasQuantityXTimes(crafterUID), currentMinimumReagentFit)
427+
currentMinimumReagentFit = math.min(requiredReagent:HasQuantityXTimes(crafterUID, excludeWarbankTemp),
428+
currentMinimumReagentFit)
425429
end
426430
end
427431

428432
if self:HasSparkSlot() then
429433
if self.sparkReagentSlot.activeReagent then
430434
if not self.sparkReagentSlot.activeReagent:IsOrderReagentIn(self.recipeData) then
431-
currentMinimumReagentFit = math.min(self.sparkReagentSlot:HasQuantityXTimes(crafterUID),
435+
currentMinimumReagentFit = math.min(
436+
self.sparkReagentSlot:HasQuantityXTimes(crafterUID, excludeWarbankTemp),
432437
currentMinimumReagentFit)
433438
end
434439
else
@@ -443,10 +448,11 @@ function CraftSim.ReagentData:GetCraftableAmount(crafterUID)
443448
local optionalReagentSlots = GUTIL:Concat({ self.optionalReagentSlots, self.finishingReagentSlots })
444449
for _, optionalReagentSlot in pairs(optionalReagentSlots) do
445450
if optionalReagentSlot.activeReagent and not optionalReagentSlot.activeReagent:IsOrderReagentIn(self.recipeData) then
446-
if not optionalReagentSlot:HasItem(1, crafterUID) then
451+
if not optionalReagentSlot:HasItem(1, crafterUID, excludeWarbankTemp) then
447452
return 0
448453
end
449-
currentMinimumReagentFitOptional = math.min(optionalReagentSlot:HasQuantityXTimes(crafterUID),
454+
currentMinimumReagentFitOptional = math.min(
455+
optionalReagentSlot:HasQuantityXTimes(crafterUID, excludeWarbankTemp),
450456
currentMinimumReagentFitOptional)
451457
end
452458
end
@@ -455,7 +461,7 @@ function CraftSim.ReagentData:GetCraftableAmount(crafterUID)
455461
local vellumMinimumFit = math.huge
456462
if self.recipeData.isEnchantingRecipe then
457463
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, CraftSim.CONST
458-
.ENCHANTING_VELLUM_ID)
464+
.ENCHANTING_VELLUM_ID, true)
459465
vellumMinimumFit = itemCount
460466
print("minimum vellum fit: " .. tostring(vellumMinimumFit))
461467
end
@@ -484,6 +490,10 @@ function CraftSim.ReagentData:GetTooltipText(multiplier, crafterUID)
484490
local iconSize = 25
485491
local text = ""
486492

493+
-- TODO: Remove after 11.0.5
494+
local excludeWarbankTemp = self.recipeData.orderData and
495+
CraftSim.DB.OPTIONS:Get("CRAFTQUEUE_PATRON_ORDERS_EXCLUDE_WARBANK")
496+
487497
for _, requiredReagent in pairs(self.requiredReagents) do
488498
local reagentIcon = requiredReagent.items[1].item:GetItemIcon()
489499
local inlineIcon = GUTIL:IconToText(reagentIcon, iconSize, iconSize)
@@ -496,7 +506,7 @@ function CraftSim.ReagentData:GetTooltipText(multiplier, crafterUID)
496506
if reagentItem.originalItem then
497507
itemID = reagentItem.originalItem:GetItemID()
498508
end
499-
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID)
509+
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID, excludeWarbankTemp)
500510
local quantityText = f.r(tostring(requiredReagent.requiredQuantity * multiplier) ..
501511
"(" .. tostring(itemCount) .. ")")
502512

@@ -530,7 +540,7 @@ function CraftSim.ReagentData:GetTooltipText(multiplier, crafterUID)
530540
if reagentItem.originalItem then
531541
itemID = reagentItem.originalItem:GetItemID()
532542
end
533-
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID)
543+
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID, excludeWarbankTemp)
534544
local quantityText = f.r(
535545
tostring(reagentItem.quantity * multiplier) .. "(" .. tostring(itemCount) .. ")")
536546

@@ -566,7 +576,7 @@ function CraftSim.ReagentData:GetTooltipText(multiplier, crafterUID)
566576
local inlineIcon = GUTIL:IconToText(reagentIcon, iconSize, iconSize)
567577
text = text .. inlineIcon
568578
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID,
569-
itemID)
579+
itemID, excludeWarbankTemp)
570580
local requiredQuantity = self.sparkReagentSlot.maxQuantity * multiplier
571581
local quantityText = f.r(tostring(requiredQuantity) .. "(" .. tostring(itemCount) .. ")")
572582
if itemCount >= requiredQuantity or isOrderReagent then
@@ -597,7 +607,7 @@ function CraftSim.ReagentData:GetTooltipText(multiplier, crafterUID)
597607
local inlineIcon = GUTIL:IconToText(reagentIcon, iconSize, iconSize)
598608
text = text .. inlineIcon
599609
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID,
600-
optionalReagentSlot.activeReagent.item:GetItemID())
610+
optionalReagentSlot.activeReagent.item:GetItemID(), excludeWarbankTemp)
601611
local quantityText = f.r(tostring(multiplier) .. "(" .. tostring(itemCount) .. ")")
602612
if itemCount >= multiplier then
603613
quantityText = f.g(tostring(multiplier))

Classes/ReagentItem.lua

+3-2
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,16 @@ end
5858
--- returns wether the player has enough of the given required item's allocations (times the multiplier) for crafting
5959
---@param multiplier number? default: 1
6060
---@param crafterUID string
61-
function CraftSim.ReagentItem:HasItem(multiplier, crafterUID)
61+
---@param excludeWarbankTemp? boolean
62+
function CraftSim.ReagentItem:HasItem(multiplier, crafterUID, excludeWarbankTemp)
6263
multiplier = multiplier or 1
6364
if not self.item then
6465
return false
6566
end
6667
-- only count the item actually used in the recipe (originalItem if we have one)
6768
-- in the case of e.g. rimefin tuna we want to count the non frosted one only (will be the original)
6869
local itemID = (self.originalItem and self.originalItem:GetItemID()) or self.item:GetItemID()
69-
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID)
70+
local itemCount = CraftSim.CRAFTQ:GetItemCountFromCraftQueueCache(crafterUID, itemID, excludeWarbankTemp)
7071
return itemCount >= (self.quantity * multiplier)
7172
end
7273

Classes/RecipeData.lua

+5-2
Original file line numberDiff line numberDiff line change
@@ -1253,10 +1253,13 @@ function CraftSim.RecipeData:CanCraft(amount)
12531253
return false, 0
12541254
end
12551255

1256+
-- TODO: Remove after 11.0.5
1257+
local excludeWarbankTemp = self.orderData and CraftSim.DB.OPTIONS:Get("CRAFTQUEUE_PATRON_ORDERS_EXCLUDE_WARBANK")
1258+
12561259
-- check amount of reagents in players inventory + bank
1257-
local hasEnoughReagents = self.reagentData:HasEnough(amount, self:GetCrafterUID())
1260+
local hasEnoughReagents = self.reagentData:HasEnough(amount, self:GetCrafterUID(), excludeWarbankTemp)
12581261

1259-
local craftAbleAmount = self.reagentData:GetCraftableAmount(self:GetCrafterUID())
1262+
local craftAbleAmount = self.reagentData:GetCraftableAmount(self:GetCrafterUID(), excludeWarbankTemp)
12601263

12611264
local isChargeRecipe = self.cooldownData.maxCharges > 0
12621265

CraftSim.toc

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
## Title: CraftSim
55
## Notes: Calculates the average profit based on your profession stats and other tools for the war within gold making
66
## Author: genju
7-
## Version: 18.2.9.2
7+
## Version: 18.3.0
88
## X-Curse-Project-ID: 705015
99
## X-Wago-ID: 0mNwaPKo
1010
## X-WoWI-ID: 26519

Data/News.lua

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ function CraftSim.NEWS:GET_NEWS(itemMap)
1717
local news = {
1818
f.bb(" Hello and thank you for using CraftSim!\n"),
1919
f.bb(" ( You are awesome! )"),
20+
newP("18.3.0"),
21+
f.s .. f.bb("CraftQueue Patron Orders"),
22+
f.a .. "- Added a temporary option to ignore warbank reagents",
23+
f.a .. " as a workaround to the warbank issue until 11.0.5",
24+
f.a .. "- Changed 'Ignore' Options to 'Include' options",
25+
f.a .. " and added augment rune and acuity",
2026
newP("18.2.9"),
2127
f.P .. f.bb("Recipe Scan"),
2228
f.a .. "- Concentration Optimization now frame distributed",

0 commit comments

Comments
 (0)