Skip to content

Commit

Permalink
Tww/#310 spec node prep (#312)
Browse files Browse the repository at this point in the history
* implemented nodes raw

* JW base

* File Bases

* toggled all implementations on for beta

* wip

* alchemy prep finished

* TWW Enchant data (#314)

* Cooldown charge implementation was causing lua errors when viewing/performing cooldowns (#313)

* merge, fixes, and news update

* Enchanting Node Structure

* EngineeringAndInscription

* leatherworkingAndTailoring

* Jewelcrafting

* redundancy cleanup

* affectedReagentIDs noderule mapping property

* ingenuity extra factor node rule property

* ingenuity

* concentrationCost

* concentrationLessUsageFactor noderule property

---------

Co-authored-by: Williwams <[email protected]>
  • Loading branch information
derfloh205 and Williwams authored Jul 22, 2024
1 parent b62d950 commit 9de5139
Show file tree
Hide file tree
Showing 21 changed files with 1,033 additions and 82 deletions.
2 changes: 1 addition & 1 deletion Classes/CooldownData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ function CraftSim.CooldownData:Update()
local elapsedTimeSinceCooldownStart = (self.maxCooldown - currentCooldown)
self.startTime = math.max(GetServerTime() - elapsedTimeSinceCooldownStart, 0)
else
self.cooldownPerCharge = C_Spell.GetSpellCharges(self.recipeID)["cooldownDuration"]
self.cooldownPerCharge = C_Spell.GetSpellCharges(self.recipeID).cooldownDuration
if self.currentCharges < self.maxCharges then
local elapsedTimeSinceCooldownStart = (self.cooldownPerCharge - currentCooldown)
self.startTimeCurrentCharge = GetServerTime() - elapsedTimeSinceCooldownStart
Expand Down
9 changes: 8 additions & 1 deletion Classes/IDMapping.lua
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ CraftSim.IDMapping = CraftSim.CraftSimObject:extend()

---@param idMappingData table
---@param exceptionRecipeIDs number[]
---@param affectedReagentIDs number[]
---@param recipeData CraftSim.RecipeData
function CraftSim.IDMapping:new(recipeData, idMappingData, exceptionRecipeIDs)
function CraftSim.IDMapping:new(recipeData, idMappingData, exceptionRecipeIDs, affectedReagentIDs)
self.recipeData = recipeData
---@type CraftSim.IDCategory[]
self.categories = {}
self.exceptionRecipeIDs = exceptionRecipeIDs or {}
self.affectedReagentIDs = affectedReagentIDs or {}

for categoryID, subtypeIDs in pairs(idMappingData or {}) do
table.insert(self.categories, CraftSim.IDCategory(categoryID, subtypeIDs))
Expand Down Expand Up @@ -68,5 +70,10 @@ function CraftSim.IDMapping:AffectsRecipe()
end
end

-- if recipe uses an affected reagent it automatically is affected by this rule
if #self.affectedReagentIDs > 0 and recipeData.reagentData:HasOneOfReagents(self.affectedReagentIDs) then
return true
end

return false
end
1 change: 0 additions & 1 deletion Classes/NodeData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ CraftSim.NodeData = CraftSim.CraftSimObject:extend()
local print = CraftSim.DEBUG:SetDebugPrint(CraftSim.CONST.DEBUG_IDS.SPECDATA)

---@param recipeData CraftSim.RecipeData?
---@param nodeName string
---@param nodeRulesData table
---@param parentNode CraftSim.NodeData
function CraftSim.NodeData:new(recipeData, nodeRulesData, parentNode)
Expand Down
17 changes: 11 additions & 6 deletions Classes/NodeRule.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ function CraftSim.NodeRule:new(recipeData, nodeRuleData, nodeData)
self.threshold = nodeRuleData.threshold or -42 -- dont ask why 42

---@type CraftSim.IDMapping
self.idMapping = CraftSim.IDMapping(recipeData, nodeRuleData.idMapping, nodeRuleData.exceptionRecipeIDs)
self.idMapping = CraftSim.IDMapping(recipeData, nodeRuleData.idMapping, nodeRuleData.exceptionRecipeIDs,
nodeRuleData.affectedReagentIDs)

self.professionStats.skill.value = nodeRuleData.skill or 0
self.professionStats.multicraft.value = nodeRuleData.multicraft or 0
Expand All @@ -32,13 +33,15 @@ function CraftSim.NodeRule:new(recipeData, nodeRuleData, nodeData)

self.professionStats.multicraft.extraFactor = nodeRuleData.multicraftExtraItemsFactor or 0
self.professionStats.resourcefulness.extraFactor = nodeRuleData.resourcefulnessExtraItemsFactor or 0
self.professionStats.ingenuity.extraFactor = nodeRuleData.ingenuityExtraConcentrationFactor or 0

self.equalsSkill = nodeRuleData.equalsSkill or 0
self.equalsMulticraft = nodeRuleData.equalsMulticraft or 0
self.equalsResourcefulness = nodeRuleData.equalsResourcefulness or 0
self.equalsIngenuity = nodeRuleData.equalsIngenuity or 0
self.equalsCraftingspeed = nodeRuleData.equalsCraftingspeed or 0
self.equalsResourcefulnessExtraItemsFactor = nodeRuleData.equalsResourcefulnessExtraItemsFactor or 0
self.equalsIngenuityExtraConcentrationFactor = nodeRuleData.equalsIngenuityExtraConcentrationFactor or 0
self.equalsPhialExperimentationChanceFactor = nodeRuleData.equalsPhialExperimentationChanceFactor or 0
self.equalsPotionExperimentationChanceFactor = nodeRuleData.equalsPotionExperimentationChanceFactor or 0
end
Expand All @@ -55,11 +58,6 @@ function CraftSim.NodeRule:UpdateProfessionStatsByRank(rank)
return
end

-- DEBUG
if self.nodeData.nodeName == "Curing and Tanning" then
print("updating curing and tanning node rule stats with rank: " .. tostring(rank))
end

if self.equalsSkill > 0 then
self.professionStats.skill.value = math.max(0, rank * self.equalsSkill)
end
Expand All @@ -84,6 +82,11 @@ function CraftSim.NodeRule:UpdateProfessionStatsByRank(rank)
self.professionStats.resourcefulness.extraFactor = math.max(0, rank * self.equalsResourcefulnessExtraItemsFactor)
end

if self.equalsIngenuityExtraConcentrationFactor > 0 then
self.professionStats.ingenuity.extraFactor = math.max(0,
rank * self.equalsIngenuityExtraConcentrationFactor)
end

if self.equalsPhialExperimentationChanceFactor > 0 then
self.professionStats.phialExperimentationFactor.extraFactor = math.max(0,
rank * self.equalsPhialExperimentationChanceFactor)
Expand All @@ -106,6 +109,7 @@ function CraftSim.NodeRule:Debug()
"equalsIngenuity: " .. tostring(self.equalsIngenuity),
"equalsCraftingspeed: " .. tostring(self.equalsCraftingspeed),
"equalsResourcefulnessExtraItemsFactor: " .. tostring(self.equalsResourcefulnessExtraItemsFactor),
"equalsIngenuityExtraConcentrationFactor: " .. tostring(self.equalsIngenuityExtraConcentrationFactor),
}
local statLines = self.professionStats:Debug()
statLines = CraftSim.GUTIL:Map(statLines, function(line) return "-" .. line end)
Expand All @@ -126,6 +130,7 @@ function CraftSim.NodeRule:GetJSON(indent)
jb:Add("equalsIngenuity", self.equalsIngenuity)
jb:Add("equalsCraftingspeed", self.equalsCraftingspeed)
jb:Add("equalsResourcefulnessExtraItemsFactor", self.equalsResourcefulnessExtraItemsFactor)
jb:Add("equalsIngenuityExtraConcentrationFactor", self.equalsIngenuityExtraConcentrationFactor)
jb:Add("equalsPhialExperimentationChanceFactor", self.equalsPhialExperimentationChanceFactor)
jb:Add("equalsPotionExperimentationChanceFactor", self.equalsPotionExperimentationChanceFactor, true)
jb:End()
Expand Down
6 changes: 4 additions & 2 deletions Classes/ReagentData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,9 @@ function CraftSim.ReagentData:GetMaxSkillFactor()
print("ReagentData: Could not determine max reagent skill factor: operationInfos nil")
end

function CraftSim.ReagentData:GetSkillFromRequiredReagents()
---@return number skillWithReagents
---@return number concentrationCosts
function CraftSim.ReagentData:GetSkillAndConcentrationCostFromRequiredReagents()
local requiredTbl = self:GetRequiredCraftingReagentInfoTbl()

local recipeID = self.recipeData.recipeID
Expand All @@ -250,7 +252,7 @@ function CraftSim.ReagentData:GetSkillFromRequiredReagents()
local baseSkill = baseOperationInfo.baseSkill + baseOperationInfo.bonusSkill
local skillWithReagents = operationInfoWithReagents.baseSkill + operationInfoWithReagents.bonusSkill

return skillWithReagents - baseSkill
return skillWithReagents - baseSkill, operationInfoWithReagents.concentrationCost or 0
end
print("ReagentData: Could not determine required reagent skill: operationInfos nil")
return 0
Expand Down
17 changes: 10 additions & 7 deletions Classes/RecipeData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ function CraftSim.RecipeData:new(recipeID, isRecraft, isWorkOrder, crafterData)
local crafterUID = self:GetCrafterUID()

self.concentrating = false
self.concentrationCost = 0

-- important for recipedata of alts to check if data was cached (and for any recipe data creation b4 tradeskill is ready)
self.specializationDataCached = false
Expand Down Expand Up @@ -142,11 +143,6 @@ function CraftSim.RecipeData:new(recipeID, isRecraft, isWorkOrder, crafterData)
self.supportsIngenuity = false
self.supportsCraftingspeed = true -- this is always supported (but does not show in details UI when 0)

if not self.isCooking then
---@type CraftSim.SpecializationData?
self.specializationData = self:GetSpecializationDataForRecipeCrafter()
end

self.cooldownData = self:GetCooldownDataForRecipeCrafter()

local schematicInfo = C_TradeSkillUI.GetRecipeSchematic(self.recipeID, self.isRecraft) -- is working even if profession is not learned on the character!
Expand All @@ -170,7 +166,12 @@ function CraftSim.RecipeData:new(recipeID, isRecraft, isWorkOrder, crafterData)
self.minItemAmount = schematicInfo.quantityMin
self.maxItemAmount = schematicInfo.quantityMax

-- EXCEPTION for Sturdy Expedition Shovel - 388279
if not self.isCooking then
---@type CraftSim.SpecializationData?
self.specializationData = self:GetSpecializationDataForRecipeCrafter()
end

-- EXCEPTION for Dragonflight - Sturdy Expedition Shovel - 388279
-- Due to a blizzard bug the recipe's baseItemAmount is 2 although it only produces 1
if self.recipeID == 388279 then
self.baseItemAmount = 1
Expand Down Expand Up @@ -437,11 +438,13 @@ end

-- Update the professionStats property of the RecipeData according to set reagents and gearSet (and any stat modifiers)
function CraftSim.RecipeData:UpdateProfessionStats()
local skillRequiredReagents = self.reagentData:GetSkillFromRequiredReagents()
local skillRequiredReagents, concentrationCost = self.reagentData:GetSkillAndConcentrationCostFromRequiredReagents()
local optionalStats = self.reagentData:GetProfessionStatsByOptionals()
local itemStats = self.professionGearSet.professionStats
local buffStats = self.buffData.professionStats

self.concentrationCost = concentrationCost

self.professionStats:Clear()

self.professionStats:add(self.baseProfessionStats)
Expand Down
2 changes: 1 addition & 1 deletion Classes/SpecializationData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ function CraftSim.SpecializationData:Deserialize(serializedData, recipeData)

local nodeIDMap = {} -- to restore references
local professionRuleNodes = CraftSim.SPECIALIZATION_DATA.NODE_DATA[recipeData.professionData.expansionID]
[recipeData.professionData.professionInfo.profession]
[recipeData.professionData.professionInfo.profession]

specializationData.nodeData = GUTIL:Map(serializedData.nodeData, function(nodeDataSerialized)
return CraftSim.NodeData:Deserialize(nodeDataSerialized, recipeData, nodeIDMap, professionRuleNodes)
Expand Down
8 changes: 8 additions & 0 deletions CraftSim.toc
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,15 @@ Data/SpecializationData/Dragonflight/Jewelcrafting.lua
Data/SpecializationData/Dragonflight/Leatherworking.lua
Data/SpecializationData/Dragonflight/Tailoring.lua
Data/SpecializationData/Dragonflight/Engineering.lua

Data/SpecializationData/TheWarWithin/Alchemy.lua
Data/SpecializationData/TheWarWithin/Blacksmithing.lua
Data/SpecializationData/TheWarWithin/Enchanting.lua
Data/SpecializationData/TheWarWithin/Inscription.lua
Data/SpecializationData/TheWarWithin/Jewelcrafting.lua
Data/SpecializationData/TheWarWithin/Leatherworking.lua
Data/SpecializationData/TheWarWithin/Tailoring.lua
Data/SpecializationData/TheWarWithin/Engineering.lua
# needs to be last
Data/SpecializationData/SpecializationData.lua

Expand Down
4 changes: 4 additions & 0 deletions Data/News.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ function CraftSim.NEWS:GET_NEWS(itemMap)
f.bb(" ( You are awesome! )"),
newP("17.0.0"),
f.P .. f.l("The War Within") .. " Update",
f.s .. "Goodbye " .. f.bb("Inspiration") .. "!",
f.a .. "Inspiration support replaced with concentration support",
f.s .. "Thanks updating enchant data:",
f.a .. f.bb("https://github.com/Williwams"),
newP("16.1.8"),
f.P .. "Fixed 10.2.7 Bugs",
f.p .. "Fixed module collapsed content showing on tab switch",
Expand Down
33 changes: 18 additions & 15 deletions Data/SpecializationData/SpecializationData.lua
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,14 @@ CraftSim.SPECIALIZATION_DATA = CraftSim.SPECIALIZATION_DATA
---@field threshold? number
---@field idMapping? table<CraftSim.RecipeCategories, CraftSim.RecipeItemSubTypes>
---@field exceptionRecipeIDs? number[]
---@field affectedReagentIDs? number[]
---@field equalsSkill? number
---@field equalsResourcefulness? number
---@field equalsMulticraft? number
---@field equalsIngenuity? number
---@field equalsCraftingspeed? number
---@field equalsResourcefulnessExtraItemsFactor? number
---@field equalsIngenuityExtraConcentrationFactor? number
---@field equalsPhialExperimentationChanceFactor? number
---@field equalsPotionExperimentationChanceFactor? number
---@field skill? number
Expand All @@ -24,6 +26,8 @@ CraftSim.SPECIALIZATION_DATA = CraftSim.SPECIALIZATION_DATA
---@field ingenuity? number
---@field craftingspeed? number
---@field resourcefulnessExtraItemsFactor? number
---@field ingenuityExtraConcentrationFactor? number
---@field concentrationLessUsageFactor? number
---@field multicraftExtraItemsFactor? number
---@field craftingspeedBonusFactor? number

Expand All @@ -44,13 +48,13 @@ CraftSim.SPECIALIZATION_DATA.NODE_DATA = {
},
[CraftSim.CONST.EXPANSION_IDS.THE_WAR_WITHIN] = {
[Enum.Profession.Blacksmithing] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.BLACKSMITHING_DATA,
[Enum.Profession.Alchemy] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.ALCHEMY_DATA,
[Enum.Profession.Leatherworking] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.LEATHERWORKING_DATA,
[Enum.Profession.Jewelcrafting] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.JEWELCRAFTING_DATA,
[Enum.Profession.Enchanting] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.ENCHANTING_DATA,
[Enum.Profession.Tailoring] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.TAILORING_DATA,
[Enum.Profession.Inscription] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.INSCRIPTION_DATA,
[Enum.Profession.Engineering] = CraftSim.SPECIALIZATION_DATA.DRAGONFLIGHT.ENGINEERING_DATA
[Enum.Profession.Alchemy] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.ALCHEMY_DATA,
[Enum.Profession.Leatherworking] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.LEATHERWORKING_DATA,
[Enum.Profession.Jewelcrafting] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.JEWELCRAFTING_DATA,
[Enum.Profession.Enchanting] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.ENCHANTING_DATA,
[Enum.Profession.Tailoring] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.TAILORING_DATA,
[Enum.Profession.Inscription] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.INSCRIPTION_DATA,
[Enum.Profession.Engineering] = CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.ENGINEERING_DATA
},
}

Expand All @@ -68,13 +72,12 @@ CraftSim.SPECIALIZATION_DATA.BASE_NODES = {
},
[CraftSim.CONST.EXPANSION_IDS.THE_WAR_WITHIN] = {
[Enum.Profession.Blacksmithing] = { "EVER_BURNING_FORGE_1", "MEANS_OF_PRODUCTION_1", "WEAPON_SMITHING_1", "ARMOR_SMITHING_1" },
-- TODO
[Enum.Profession.Alchemy] = { "POTION_MASTERY_1", "PHIAL_MASTERY_1", "ALCHEMICAL_THEORY_1" },
[Enum.Profession.Leatherworking] = { "LEATHERWORKING_DISCIPLINE_1", "LEATHER_ARMOR_CRAFTING_1", "MAIL_ARMOR_CRAFTING_1", "PRIMORDIAL_LEATHERWORKING_1" },
[Enum.Profession.Jewelcrafting] = { "TOOLSET_MASTERY_1", "FACETING_1", "SETTING_1", "ENTERPRISING_1" },
[Enum.Profession.Enchanting] = { "ENCHANTMENT_1", "INSIGHT_OF_THE_BLUE_1", "RODS_RUNES_AND_RUSES_1" },
[Enum.Profession.Tailoring] = { "TAILORING_MASTERY_1", "TEXTILES_1", "DRACONIC_NEEDLEWORK_1", "GARMENTCRAFTING_1" },
[Enum.Profession.Inscription] = { "RUNE_MASTERY_1", "ARCHIVING_1", "RUNEBINDING_1" },
[Enum.Profession.Engineering] = { "OPTIMIZED_EFFICIENCY_1", "EXPLOSIVES_1", "FUNCTION_OVER_FORM_1", "MECHANICAL_MIND_1" },
[Enum.Profession.Alchemy] = { "ALCHEMICAL_MASTERY_1", "FANTASTIC_FLASKS_1", "POTENT_POTIONS_1", "THAUMATURGY_1" },
[Enum.Profession.Enchanting] = { "SUPPLEMENTARY_SHATTERING_1", "DESIGNATED_DISENCHANTER_1", "EVERLASTING_ENCHANTMENTS_1", "EPHEMERALS_ENRICHMENTS_AND_EQUIPMENT_1" },
[Enum.Profession.Engineering] = { "ENGINEERED_EQUIPMENT_1", "DEVICES_1", "INVENTING_1" },
[Enum.Profession.Inscription] = { "PURSUIT_OF_KNOWLEDGE_1", "PURSUIT_OF_PERFECTION_1", "CAREFUL_CARVINGS_1", "ARCHIVAL_ADDITIONS_1" },
[Enum.Profession.Leatherworking] = { "LEARNED_LEATHERWORKER_1", "LUXURIOUS_LEATHERS_1", "CONCRETE_CHITIN_1", "FLAWLESS_FORTRES_1" },
[Enum.Profession.Tailoring] = { "THREADS_OF_DEVOTION_1", "FROM_DAWN_UNTIL_DUSK_1", "QUALITY_FABRIC_1", "TEXTILE_TREASURES_1" },
[Enum.Profession.Jewelcrafting] = { "GEMCUTTING_1", "JEWELRY_CRAFTING_1", "SHAPING_1" },
},
}
85 changes: 85 additions & 0 deletions Data/SpecializationData/TheWarWithin/Alchemy.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---@class CraftSim
local CraftSim = select(2, ...)

---@type table<string, CraftSim.SPECIALIZATION_DATA.RULE_DATA>
CraftSim.SPECIALIZATION_DATA.THE_WAR_WITHIN.ALCHEMY_DATA = {
ALCHEMICAL_MASTERY_1 = {
childNodeIDs = { "MYCOBLOOM_LORE_1", "LUREDROP_LORE_1", "ORBINID_LORE_1", "ARATHORS_SPEAR_LORE_1", "BLESSING_BLOSSOM_LORE_1" },
nodeID = 99020,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
MYCOBLOOM_LORE_1 = {
nodeID = 99019,
affectedReagentIDs = {
210796, -- Mycobloom q1, q2, q3
210797,
210798
},
},
LUREDROP_LORE_1 = {
nodeID = 99018,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
ORBINID_LORE_1 = {
nodeID = 99017,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
ARATHORS_SPEAR_LORE_1 = {
nodeID = 99016,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
BLESSING_BLOSSOM_LORE_1 = {
nodeID = 99015,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},

FANTASTIC_FLASKS_1 = {
childNodeIDs = { "BULK_PRODUCTION_FLASKS_1", "PROFESSION_PHIALS_1" },
nodeID = 98953,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
BULK_PRODUCTION_FLASKS_1 = {
nodeID = 98952,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
PROFESSION_PHIALS_1 = {
nodeID = 98951,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},

POTENT_POTIONS_1 = {
childNodeIDs = { "BULK_PRODUCTION_POTIONS_1" },
nodeID = 99041,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
BULK_PRODUCTION_POTIONS_1 = {
nodeID = 99040,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},

THAUMATURGY_1 = {
childNodeIDs = { "MERCURIAL_MATERIALS_1", "VOLATILE_MATERIALS_1", "OMINOUS_MATERIALS_1", "GLEAMING_TRANSMUTAGEN_1", "TRANSMUTATION_1" },
nodeID = 99059,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
MERCURIAL_MATERIALS_1 = {
nodeID = 100208,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
VOLATILE_MATERIALS_1 = {
nodeID = 100207,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
OMINOUS_MATERIALS_1 = {
nodeID = 100206,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
GLEAMING_TRANSMUTAGEN_1 = {
nodeID = 100205,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
TRANSMUTATION_1 = {
nodeID = 99058,
idMapping = { [CraftSim.CONST.RECIPE_CATEGORIES.ALL] = {} },
},
}
Loading

0 comments on commit 9de5139

Please sign in to comment.