Skip to content

Instantly share code, notes, and snippets.

@warmist
Created May 23, 2013 14:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save warmist/5636653 to your computer and use it in GitHub Desktop.
Save warmist/5636653 to your computer and use it in GitHub Desktop.
--replaces jobs with selected race workers
local trg_race=338
local workers={}
local bad_jobs={}
for k,v in pairs(df.global.world.units.active) do --find possible workers
if v.civ_id==df.global.ui.civ_id and v.race==trg_race and v.job.current_job==nil and not v.flags1.dead then
table.insert(workers,v)
end
end
local last_id,jobs=dfhack.job.listNewlyCreated(0)
for k,v in pairs(jobs) do --filter available jobs
local worker=dfhack.job.getWorker(v)
if not worker or worker.race~=trg_race then --also replaces already working
table.insert(bad_jobs,v)
end
end
function replaceWorker(job,worker)
local old_worker=dfhack.job.getWorker(job)
if old_worker then
old_worker.job.current_job=nil
end
worker.job.current_job=job
local ref=dfhack.job.getSpecificRef(job, df.general_ref_type.UNIT_WORKER)
if ref then
ref.unit_id=worker.id
else
job.general_refs:insert("#",{new=df.general_ref_unit_workerst,unit_id=worker.id})
end
end
local i=1
for k,v in pairs(workers) do
if bad_jobs[i] then
replaceWorker(bad_jobs[i],v)
i=i+1
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment