Keyser Söze, я упростил макрос (по крайней мере для себя):
/run local n=0; for i=1,9 do if GetContainerItemLink(0,i)~=_ then n=n+1 end end
DoTradeSkill(n==0 and 115 or n==1 and 156 or n==2 and 200 or n==3 and 254 or n==4 and 305 or n==5 and 355);
(где 115, 200, 305, ... - индексы предметов)
Я получаю индексы предметов в профе при помощи макроса: /script DEFAULT_CHAT_FRAME:AddMessage(GetTradeSkillSelectionIndex())
и использую их в DoTradeSkill. Тут, конечно, все индексы предметов нужно считывать и вписывать, но зато делается сразу весь сет (с учетом плаща, наручей и сапог)