diff --git a/scripts/autolabor-artisans.lua b/scripts/autolabor-artisans.lua new file mode 100644 index 000000000..9998c03ac --- /dev/null +++ b/scripts/autolabor-artisans.lua @@ -0,0 +1,69 @@ +-- Executes an autolabor command for each labor where skill level influences output quality. + +local artisan_labors = { + "CARPENTER", + "DETAIL", + "MASON", + "ARCHITECT", + "ANIMALTRAIN", + "LEATHER", + "BREWER", + "WEAVER", + "CLOTHESMAKER", + "COOK", + "FORGE_WEAPON", + "FORGE_ARMOR", + "FORGE_FURNITURE", + "METAL_CRAFT", + "CUT_GEM", + "ENCRUST_GEM", + "WOOD_CRAFT", + "STONE_CRAFT", + "BONE_CARVE", + "GLASSMAKER", + "SIEGECRAFT", + "BOWYER", + "MECHANIC", + "DYER", + "POTTERY", + "WAX_WORKING", +} + +local args = {...} + +function make_cmd(labor) + local cmd = string.format("autolabor %s", labor) + for i, arg in ipairs(args) do + cmd = cmd .. " " .. arg + end + return cmd +end + +function run() + if #args == 0 or args[1] == "help" then + print('Applies an autolabor command to all labors with quality-based output.') + print('') + print('Examples:') + print(' autolabor-artisans 0 2') + print(' autolabor-artisans disable') + return false + end + + dfhack.run_command("autolabor enable") + + -- Test with one to make sure the arguments are valid. + local cmd = make_cmd(artisan_labors[1]) + local output, status = dfhack.run_command_silent(cmd) + if status ~= CR_OK then + qerror("Invalid arguments.", status) + return false + end + + for i, labor in ipairs(artisan_labors) do + dfhack.run_command(make_cmd(labor)) + end + + return true +end + +run()