Download
(3 Kb)
Download
Updated: 06/04/23 09:00 PM
Compatibility:
Necrom (9.0.0)
Updated:06/04/23 09:00 PM
Created:04/11/20 06:45 PM
Monthly downloads:1,416
Total downloads:56,492
Favorites:112
MD5:
Lazy Alchemy Learner  Popular! (More than 5000 hits)
Version: 1.0.4
by: Dolgubon [More]
This add-on will queue all (base game/cheap) alchemy traits up so you can learn them easily. Simply type /learnalchemytraits into chat, visit an alchemy station, and let it do its work!
Will skip traits that you already know!


Requires LibLazyCrafting to work
Version 1.0.4:

API Bump
Fixed a bug when queueing stuff. Probably. Hopefully.

Version 1.0.3:

Added messages when stuff is queued, plus a message if nothing is queued.

Version 1.0.2:

API Bump
Fixed a bug where it wouldn't use different solvents. Now should properly choose multiple solvents where needed. Also, will prioritize higher level solvents (mainly so as to use alkahest first)
Optional Files (0)


Archived Files (3)
File Name
Version
Size
Uploader
Date
1.0.3
3kB
Dolgubon
06/13/21 07:24 PM
1.0.2
2kB
Dolgubon
05/30/21 05:23 PM
1
2kB
Dolgubon
04/11/20 06:45 PM


Post A Reply Comment Options
Unread 11/21/23, 12:17 AM  
Hancor

Forum posts: 0
File comments: 3
Uploads: 0
Could you make an option for the addon to use all the reagents?
Report comment to moderator  
Reply With Quote
Unread 07/25/23, 06:23 AM  
JLE

Forum posts: 0
File comments: 42
Uploads: 0
Is there a way to make it learn traits for the expensive / DLC ingredients too? The various dragon parts, vile coagulant, clam gall, crimson nirnroot, powdered mother-of-pearl?

Also, it always seems to stop with 1 base-game potion not made, and 2 base-game items with 1 or more traits not learned. Mixing those 2 together learns the last trait for both of them.
Last edited by JLE : 07/25/23 at 06:25 AM.
Report comment to moderator  
Reply With Quote
Unread 06/04/23, 09:01 PM  
Dolgubon
 
Dolgubon's Avatar
AddOn Author - Click to view AddOns

Forum posts: 408
File comments: 889
Uploads: 21
Should be fixed in the new version


Originally Posted by M-ree
I got a friend play ESO and got her install this add-on, but when running it, get the following error:


Code:
bad argument #2 to 'string.format' (integer expected, got nil)
stack traceback:
[C]: in function 'string.format'
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:142: in function 'getItemLinkFromItemId'
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:148: in function 'getSolvent'
|caaaaaa<Locals> proficiency = 2, start = 0, i = 0 </Locals>|r
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:171: in function 'alchemyQueuer'
|caaaaaa<Locals> combos = [table:1]{}, LLC = [table:2]{addonName = "LazyAlchemyLearner", autocraft = T, version = 3.082}, remainingSolvent = 0, solvent = 75357, position = 1, queued = 0, i = 4, known = F, solventProficiency = 2 </Locals>|r
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:189: in function 'queueLearningAlchemy'
|caaaaaa<Locals> includeExpensive = "" </Locals>|r
/EsoUI/Ingame/SlashCommands/SlashCommands_Shared.lua:205: in function 'DoCommand'
|caaaaaa<Locals> text = "/learnalchemytraits ", command = "/learnalchemytraits", arguments = "", fn = user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:188 </Locals>|r
/EsoUI/Ingame/ChatSystem/SharedChatSystem.lua:1690: in function 'SharedChatSystem:SubmitTextEntry'
|caaaaaa<Locals> self = [table:3]{suppressAutoCompleteClear = F, maxContainerWidth = 550, ignoreTextEntryChangedEvent = F, suppressSave = F, isMinimizingOrMaximizing = F, currentChannel = 0, minContainerHeight = 170, isAgentChatActive = F, shouldMinimizeAfterEntry = F, minContainerWidth = 300, isMinimized = F, maxContainerHeight = 380, numUnreadMails = 2, loaded = T, allowMultipleContainers = F, currentNumNotifications = 4}, text = "/learnalchemytraits ", valid = F, prefix = 47 </Locals>|r
/EsoUI/Ingame/ChatSystem/SharedChatSystem.lua:2407: in function 'ZO_ChatTextEntry_Execute'
|caaaaaa<Locals> control = ud </Locals>|r
ZO_ChatWindowTextEntryEditBox_Enter:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud </Locals>|r
(tail call): ?
(tail call): ?
I have installed it on my storage account, and get the same, too.
Report comment to moderator  
Reply With Quote
Unread 04/26/23, 08:59 AM  
M-ree

Forum posts: 2
File comments: 510
Uploads: 0
I got a friend play ESO and got her install this add-on, but when running it, get the following error:


Code:
bad argument #2 to 'string.format' (integer expected, got nil)
stack traceback:
[C]: in function 'string.format'
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:142: in function 'getItemLinkFromItemId'
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:148: in function 'getSolvent'
|caaaaaa<Locals> proficiency = 2, start = 0, i = 0 </Locals>|r
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:171: in function 'alchemyQueuer'
|caaaaaa<Locals> combos = [table:1]{}, LLC = [table:2]{addonName = "LazyAlchemyLearner", autocraft = T, version = 3.082}, remainingSolvent = 0, solvent = 75357, position = 1, queued = 0, i = 4, known = F, solventProficiency = 2 </Locals>|r
user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:189: in function 'queueLearningAlchemy'
|caaaaaa<Locals> includeExpensive = "" </Locals>|r
/EsoUI/Ingame/SlashCommands/SlashCommands_Shared.lua:205: in function 'DoCommand'
|caaaaaa<Locals> text = "/learnalchemytraits ", command = "/learnalchemytraits", arguments = "", fn = user:/AddOns/LazyAlchemyLearner/LazyAlchemyLearner.lua:188 </Locals>|r
/EsoUI/Ingame/ChatSystem/SharedChatSystem.lua:1690: in function 'SharedChatSystem:SubmitTextEntry'
|caaaaaa<Locals> self = [table:3]{suppressAutoCompleteClear = F, maxContainerWidth = 550, ignoreTextEntryChangedEvent = F, suppressSave = F, isMinimizingOrMaximizing = F, currentChannel = 0, minContainerHeight = 170, isAgentChatActive = F, shouldMinimizeAfterEntry = F, minContainerWidth = 300, isMinimized = F, maxContainerHeight = 380, numUnreadMails = 2, loaded = T, allowMultipleContainers = F, currentNumNotifications = 4}, text = "/learnalchemytraits ", valid = F, prefix = 47 </Locals>|r
/EsoUI/Ingame/ChatSystem/SharedChatSystem.lua:2407: in function 'ZO_ChatTextEntry_Execute'
|caaaaaa<Locals> control = ud </Locals>|r
ZO_ChatWindowTextEntryEditBox_Enter:3: in function '(main chunk)'
|caaaaaa<Locals> self = ud </Locals>|r
(tail call): ?
(tail call): ?
I have installed it on my storage account, and get the same, too.
Report comment to moderator  
Reply With Quote
Unread 05/03/22, 08:17 PM  
NeuroticPixels
Addon Addict
 
NeuroticPixels's Avatar
Premium Member

Forum posts: 211
File comments: 868
Uploads: 0
Re: Instructions Missing

Originally Posted by FlopsyPrince
The addon info page here should show how to execute the addon command. I could not find that information there.
Unless it's been updated since you posted that.... the description page says:
type /learnalchemytraits into chat, visit an alchemy station
Report comment to moderator  
Reply With Quote
Unread 03/29/22, 08:36 PM  
FlopsyPrince

Forum posts: 4
File comments: 105
Uploads: 0
Instructions Missing

The addon info page here should show how to execute the addon command. I could not find that information there.
Report comment to moderator  
Reply With Quote
Unread 02/05/22, 11:40 PM  
Lerozain
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 12
Uploads: 1
Ran into a strange issue on one of my characters.

The last combo I needed to complete Mudcrab Chitin and Toxicologist was Chitin + Imp Stool.

However, when I requeued, it made the same 3 potions it just made prior. I had to manually craft a Chitin + Imp Stool in order to unlock the achievement.

https://i.imgur.com/vQO2Snp.jpg
Report comment to moderator  
Reply With Quote
Unread 10/18/21, 09:27 PM  
EgotisticalElf

Forum posts: 0
File comments: 22
Uploads: 0
There are several references to comboInfos inside alchemyQueuer that should actually be "combos". if you use the expensive, it ends up double crafting the wrong traits.

Code:
local function alchemyQueuer(combos)
	local LLC = LazyAlchemyLearner.LLC
	local remainingSolvent = 0
	local solvent
	local position= math.min(GetNonCombatBonus(NON_COMBAT_BONUS_ALCHEMY_LEVEL) + 1, #poison) + 1
	local queued = 0
	for i = 1, #combos do
		local known = true
		for j = 1, 4 do
			known = known and GetItemLinkReagentTraitInfo(getItemLinkFromItemId(combos[i][1]), j) and 
			GetItemLinkReagentTraitInfo(getItemLinkFromItemId(combos[i][2]), j)
		end
		if remainingSolvent == 0 then
			local solventProficiency = GetNonCombatBonus(NON_COMBAT_BONUS_ALCHEMY_LEVEL)
			if solventProficiency == 0 then
				solventProficiency = 1
			end
			remainingSolvent, solvent, position = getSolvent(solventProficiency, position-1)

		else
		
			if not known then -- 75358
				remainingSolvent = remainingSolvent - 1
				queued = queued + 1
				d("Lazy Alchemy Learner: Queued " .. getItemLinkFromItemId(solvent) .. " with " .. getItemLinkFromItemId(combos[i][1]) .. " and " .. getItemLinkFromItemId(combos[i][2]) .. ".")
				LLC:CraftAlchemyItemId(solvent, combos[i][1],combos[i][2],nil, 1, true,'1')
			end
		end
	end
	return queued
	
end
Thanks
Report comment to moderator  
Reply With Quote
Unread 06/27/21, 04:15 PM  
Bjond

Forum posts: 0
File comments: 9
Uploads: 0
Like the addon -- very handy for alts. Tiny suggestion: mention in the description that you don't run the matrix blindly; ie. that it doesn't relearn already known traits. I checked source to be sure, but suspect most might not be up for doing that.
Report comment to moderator  
Reply With Quote
Unread 06/02/21, 06:28 PM  
Dolgubon
 
Dolgubon's Avatar
AddOn Author - Click to view AddOns

Forum posts: 408
File comments: 889
Uploads: 21
Originally Posted by Redmsa
Originally Posted by Ratinira
Like the idea of the addon, very helpful, but.. all my toons have maxed alchemy and I have 7k of Alcahest, but addon is demanding and using Night Oil which is not wery common at the market (and addon is using 50 of it per character). Is there a way I can force it it use Alcahest?
Try this (you need to replace strings manually):

local poison =
{
75365,
75365,
}
The issue should be fixed in the next version, so this fix won't be necessary.


Originally Posted by EgotisticalElf
I fixed the issues I was having and added a bit of UI feedback.

Thanks! Unfortunately I only noticed this after I fixed the issue myself, but the UI feedback is a good idea and will be added in.
Report comment to moderator  
Reply With Quote
Unread 06/01/21, 04:52 AM  
Redmsa

Forum posts: 0
File comments: 21
Uploads: 0
BTW, my edited list based on current price (its not ideal, but works for me), includes all alchemical reagents:

Code:
31 Cheap+:
{30148,77585},
{30148,30165},
{30164,30160},
{30164,30159},
{30164,30157},
{30161,77581},
{77581,30149},
{77581,77587},
{30152,30165},
{30152,77589},
{77589,77587},
{30158,30153},
{77591,77583},
{77583,30158},
{77590,77587},
{77590,77584},
{30160,30154},
{30148,30154},
{30151,30149},
{30149,30162},
{30159,30155},
{30153,30159},
{30153,77584},
{30156,77587},
{30159,30162},
{30159,30154},
{77585,77584},
{77585,77587},
{30151,30154},
{30157,30162},
{30157,30153},


30 Expens.+:
{139019,77583},
{139019,77589},
{139020,77591},
{139020,77584},
{139020,77587},
{150731,77584},
{150731,150789},
{150731,150669},
{150671,150789},
{150671,77581},
{150671,150670},
{150671,30153},
{150789,77587},
{150789,77584},
{150670,77590},
{150670,150669},
{150669,30154},
{150669,150672},
{150672,30166},
{150672,77587},
{30166,30151},
{30166,30162},
{30161,30157},
{30156,30163},
{30156,30165},
{30158,30152},
{30158,30161},
{30155,30163},
{30163,30157},
{30165,77585},
WIP:
Code:
***
Powdered Mother of Pearl,Beetle Scuttle 
Powdered Mother of Pearl,Scrib Jelly
Clam Gall,Mudcrab Chitin
Clam Gall,Spider Egg
Clam Gall,Fleshfly Larva
Dragon's Blood,Spider Egg
Dragon's Blood,Dragon's Bile
Dragon's Blood,Chaurus Egg
{139019,77583},
{139019,77589},
{139020,77591},
{139020,77584},
{139020,77587},
{150731,77584},
{150731,150789},
{150731,150669},
Dragon Rheum, Dragon's Bile = Heroism
Dragon Rheum, Torchbug Thorax = Enervation
Dragon Rheum, Vile Coagulant = Restore Magicka
Dragon Rheum, Namira's Rot
Dragon's Bile, Fleshfly Larva
Dragon's Bile, Spider Egg
{150671,150789},
{150671,77581},
{150671,150670},
{150671,30153},
{150789,77587},
{150789,77584},
Vile Coagulant, Nightshade = Protection, Ravage Health 
Vile Coagulant, Crimson Nirnroot = Timidity
Chaurus Egg, White Cap = Ravage Magicka, Detection
Chaurus Egg, Crimson Nirnroot = Timidity
Crimson Nirnroot, Water Hyacinth = Spell Critical, Restore Health
Crimson Nirnroot, Fleshfly Larva
Water Hyacinth, Emetic Russula = Entrapment
Water Hyacinth, Dragonthorn
{150670,77590},
{150670,150669},
{150669,30154},
{150669,150672},
{150672,30166},
{150672,77587},
{30166,30151},
{30166,30162},

***
Corn Flower, Torchbug Thorax = Detection
Torchbug Thorax, Stinkhorn = Fracture
Torchbug Thorax, Fleshfly Larva = Vitality
Violet Coprinus, Nirnroot = Ravage Health
Violet Coprinus, Scrib Jelly = Ravage Magicka
Scrib Jelly, Fleshfly Larva = Vulnerability
Lady's Smock, Namiras Rot = Spell Critical
{30161,77581},
{77581,30149},
{77581,77587},
{30152,30165},
{30152,77589},
{77589,77587},
{30158,30153},

Mudcrab Chitin, Beetle Scuttle = Increase Armor + Protection
Beetle Scuttle, Lady's Smock = Breach
Nightshade, Fleshfly Larva = Gradual Ravage Health
Nightshade, Spider Egg = Defile
Bugloss, White Cap = Cowardice + Increase Spell Resist
Blue Entoloma, White Cap = Ravage Magicka + Cowardice
{77591,77583},
{77583,30158},
{77590,77587},
{77590,77584},
{30160,30154},
{30148,30154},

Emetic Russula, Stinkhorn = +2
Stinkhorn, Dragonthorn = +2
Wormwood, Luminous Russula
Namiras Rot, Wormwood
Namiras Rot, Spider Egg
Imp Stool, Fleshfly Larva
Wormwood, Dragonthorn
Wormwood, White Cap
{30151,30149},
{30149,30162},
{30159,30155},
{30153,30159},
{30153,77584},
{30156,77587},
{30159,30162},
{30159,30154},

Butterfly Wing, Spider Egg
Butterfly Wing, Fleshfly Larva
Emetic Russula, White Cap
Blessed Thistle, Dragonthorn
Blessed Thistle, Namiras Rot
{77585,77584},
{77585,77587},
{30151,30154},
{30157,30162},
{30157,30153},
Report comment to moderator  
Reply With Quote
Unread 06/01/21, 04:45 AM  
Redmsa

Forum posts: 0
File comments: 21
Uploads: 0
Originally Posted by Ratinira
Like the idea of the addon, very helpful, but.. all my toons have maxed alchemy and I have 7k of Alcahest, but addon is demanding and using Night Oil which is not wery common at the market (and addon is using 50 of it per character). Is there a way I can force it it use Alcahest?
Try this (you need to replace strings manually):

local poison =
{
75365,
75365,
}
Report comment to moderator  
Reply With Quote
Unread 05/28/21, 05:26 AM  
Ratinira

Forum posts: 0
File comments: 31
Uploads: 0
Like the idea of the addon, very helpful, but.. all my toons have maxed alchemy and I have 7k of Alcahest, but addon is demanding and using Night Oil which is not wery common at the market (and addon is using 50 of it per character). Is there a way I can force it it use Alcahest?
Last edited by Ratinira : 05/28/21 at 05:39 AM.
Report comment to moderator  
Reply With Quote
Unread 05/18/21, 05:55 AM  
EgotisticalElf

Forum posts: 0
File comments: 22
Uploads: 0
I fixed the issues I was having and added a bit of UI feedback.

Code:
LazyAlchemyLearner = {}

LazyAlchemyLearner.name = "LazyAlchemyLearner"
local comboInfo = 
{
{77583,77591},
{77583,77585},
{77583,30152},
{30157,30153},
{30148,30154},
{30148,77585},
{30148,30165},
{30160,30154},
{30164,30160},
{30164,30159},
{30164,30157},
{30161,30154},
{30161,30157},
{30162,30149},
{30162,30157},
{30162,30166},
{30151,30166},
{30151,30152},
{30151,30155},
{77587,77581},
{77587,77589},
{77587,30156},
{77587,77590},
{30156,30163},
{30156,30165},
{30158,30152},
{30158,30161},
{30158,30166},
{30155,30163},
{30155,77584},
{30163,30157},
{77591,77590},
{77591,30154},
{30153,30159},
{30153,30166},
{77590,30165},
{30165,77585},
{77589,77584},
{77589,30157},
{77589,30154},
{30159,77584},
{77584,77591},
{30149,30151},
{77581,30159},
{77581,30165},
{77581,30149},
{30166,30155},
{30159,30166},
{77585,77584},
{30153,30165},
{77584,30165},
}

local solvent = 
{

}
local poison =
{
75357,
75358,
75359,
75360,
75361,
75362,
75363,
75364,
75365,
}

local function getItemLinkFromItemId(itemId)
	return string.format("|H1:item:%d:%d:50:0:0:0:0:0:0:0:0:0:0:0:0:%d:%d:0:0:%d:0|h|h", itemId, 0, ITEMSTYLE_NONE, 0, 10000) 
end

local function getSolvent(proficiency)
	for i = proficiency + 1, 0, -1 do
		local bag, bank, craft = GetItemLinkStacks(getItemLinkFromItemId(poison[i]))

		if bag + bank + craft > 0 then
			return bag + bank + craft, poison[i]
		end
	end
	return nil, nil
end

-- |H1:item:75362:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0|h|h
local function queueLearningAlchemy()
	-- LibLazyCrafting
	local LLC = LibLazyCrafting:AddRequestingAddon(LazyAlchemyLearner.name,true, function()end)
	local remainingSolvent = 0
	local solvent
	local queued = 0
	
	local solventProficiency = GetNonCombatBonus(NON_COMBAT_BONUS_ALCHEMY_LEVEL)
	if solventProficiency == 0 then
		solventProficiency = 1
	end
	
	remainingSolvent, solvent = getSolvent(solventProficiency)
	
	for i = 1, #comboInfo do
		local known = true
		for j = 1, 4 do
			known = known and GetItemLinkReagentTraitInfo(getItemLinkFromItemId(comboInfo[i][1]), j) and 
			GetItemLinkReagentTraitInfo(getItemLinkFromItemId(comboInfo[i][2]), j)
		end

		if remainingSolvent == 0 then
			remainingSolvent, solvent = getSolvent(solventProficiency)
		end
		if not known then
			queued = queued + 1
			d("Lazy Alchemy Learner: Queued " .. getItemLinkFromItemId(solvent) .. " with " .. getItemLinkFromItemId(comboInfo[i][1]) .. " and " .. getItemLinkFromItemId(comboInfo[i][2]) .. ".")
			
			remainingSolvent = remainingSolvent - 1
			LLC:CraftAlchemyItemId(solvent, comboInfo[i][1], comboInfo[i][2], nil, 1, true,'1')
		end
	end

	if queued == 0 then
		d("Lazy Alchemy Learner: Nothing queued? Perhaps you know everything? This addon does not learn the expensive / non achievement item traits")
	end
end

function LazyAlchemyLearner.Initialize()
	-- queueLearningAlchemy()
end

function LazyAlchemyLearner.OnAddOnLoaded(event, addonName)
	if addonName == LazyAlchemyLearner.name then
	LazyAlchemyLearner.Initialize()
	end
end

EVENT_MANAGER:RegisterForEvent(LazyAlchemyLearner.name, EVENT_ADD_ON_LOADED, LazyAlchemyLearner.OnAddOnLoaded)

SLASH_COMMANDS["/learnalchemytraits"] = queueLearningAlchemy
Report comment to moderator  
Reply With Quote
Unread 05/17/21, 06:10 PM  
EgotisticalElf

Forum posts: 0
File comments: 22
Uploads: 0
Originally Posted by MetaHorus
It seem the addon tries to use the poison one level below your craft? I can make up to lvl 30 poisons (Gall) but when I try to use the addon it tells me ne I don't have enought Slime (lvl 20).
Mine worked on the first 4 alts, but the 5th wants CP100 poison. He has level 50 and all the skill perks.
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.