more fixes, improvements

develop
Warmist 2014-12-08 22:19:22 +02:00
parent f84a5dbce1
commit f47565465e
1 changed files with 34 additions and 14 deletions

@ -1,8 +1,13 @@
-- allows to do jobs in adv. mode.
--[==[
version: 0.002
version: 0.003
changelog:
*0.003
- fixed farms (i think...)
- added faster time pasing (yay for random deaths from local wildlife)
- still hasn't fixed gather plants. but you can visit local market, buy a few local fruits/vegetables eat them and use seeds
- other stuff
*0.002
- kind-of fixed the item problem... now they get teleported (if teleport_items=true which should be default for adventurer)
- gather plants still not working... Other jobs seem to work.
@ -659,6 +664,15 @@ function putItemsInBuilding(building,job_item_refs)
v.is_fetching=0
end
end
function putItemsInHauling(unit,job_item_refs)
for k,v in ipairs(job_item_refs) do
--local pos=dfhack.items.getPosition(v)
if not dfhack.items.moveToInventory(v.item,unit,0,0) then
print("Could not put item:",k,v.item)
end
v.is_fetching=0
end
end
function AssignJobItems(args)
if settings.df_assign then --use df default logic and hope that it would work
@ -688,7 +702,7 @@ function AssignJobItems(args)
job.items[#job.items-1]:delete()
job.items:erase(#job.items-1)
end]]
printall(its)
local item_counts={}
for job_id, trg_job_item in ipairs(job.job_items) do
item_counts[job_id]=trg_job_item.quantity
@ -709,7 +723,7 @@ function AssignJobItems(args)
--cur_item.flags.in_job=true
job.items:insert("#",{new=true,item=cur_item,role=df.job_item_ref.T_role.Reagent,job_item_idx=job_id})
item_counts[job_id]=item_counts[job_id]-cur_item:getTotalDimension()
print(string.format("item added, job_item_id=%d, item %s, quantity left=%d",job_id,tostring(cur_item),item_counts[job_id]))
--print(string.format("item added, job_item_id=%d, item %s, quantity left=%d",job_id,tostring(cur_item),item_counts[job_id]))
used_item_id[cur_item.id]=true
end
end
@ -719,23 +733,30 @@ function AssignJobItems(args)
if not settings.build_by_items then
for job_id, trg_job_item in ipairs(job.job_items) do
if item_counts[job_id]>0 then
print("Not enough items for this job")
return false, "Not enough items for this job"
end
end
end
if settings.teleport_items then
local haul_fix=false
if job.job_type==df.job_type.PlantSeeds then
haul_fix=true
end
if settings.teleport_items and not haul_fix then
putItemsInBuilding(args.building,job.items)
end
local uncollected = getItemsUncollected(job)
if #uncollected == 0 then
job.flags.working=true
if haul_fix then
putItemsInHauling(args.unit,job.items)
end
else
job.flags.fetching=true
uncollected[1].is_fetching=1
end
--todo set working for workshops if items are present, else set fetching (and at least one item to is_fetching=1)
--job.flags.working=true
return true
--]=]
end
@ -1177,8 +1198,7 @@ function usetool:farmPlot(building)
if not job then
print(msg)
else
--print(AssignJobItems(args)) --WHY U NO WORK?
print(AssignJobItems(args)) --WHY U NO WORK?
end
end
MODES={
@ -1311,7 +1331,7 @@ function usetool:fieldInput(keys)
self:sendInputToParent("LEAVESCREEN")
end
if ok then
self:sendInputToParent("A_WAIT")
self:sendInputToParent("A_SHORT_WAIT")
else
dfhack.gui.showAnnouncement(msg,5,1)
end
@ -1347,8 +1367,8 @@ function usetool:onInput(keys)
--ContinueJob(adv)
self:sendInputToParent("A_SHORT_WAIT")
elseif keys[keybinds.continue.key] then
ContinueJob(adv)
self:sendInputToParent("A_SHORT_WAIT")
--ContinueJob(adv)
--self:sendInputToParent("A_SHORT_WAIT")
self.long_wait=true
else
if self.mode~=nil then
@ -1373,10 +1393,10 @@ end
function usetool:onIdle()
local adv=df.global.world.units.active[0]
local job_ptr=adv.job.current_job
local job=findAction(adv,df.unit_action_type.Job)
local job_action=findAction(adv,df.unit_action_type.Job)
if job_ptr and self.long_wait and not job then
if adv.job.current_job.completion_timer==0 or adv.job.current_job.completion_timer==-1 then
if job_ptr and self.long_wait and not job_action then
if adv.job.current_job.completion_timer==-1 then
self.long_wait=false
end
ContinueJob(adv)