@@ -31,21 +31,21 @@ INTERESTING_FLAGS = {
3131 seized = ' Goods seized' ,
3232 offended = ' Offended'
3333}
34- caravans = df .global .ui .caravans
34+ local caravans = df .global .ui .caravans
3535
36- function caravans_from_ids (ids )
36+ local function caravans_from_ids (ids )
3737 if not ids or # ids == 0 then
38- return pairs ( caravans )
38+ return caravans
3939 end
40- local i = 0
41- return function ()
42- i = i + 1
43- local id = tonumber (ids [ i ] )
40+
41+ local c = {} -- as:df.caravan_state[]
42+ for _ , id in ipairs ( ids ) do
43+ local id = tonumber (id )
4444 if id then
45- return id , caravans [id ]
45+ c [ id ] = caravans [id ]
4646 end
47- return nil
4847 end
48+ return c
4949end
5050
5151function bring_back (car )
@@ -54,9 +54,7 @@ function bring_back(car)
5454 end
5555end
5656
57- commands = {}
58-
59- function commands .list ()
57+ local function list ()
6058 for id , car in pairs (caravans ) do
6159 print (dfhack .df2console ((' %d: %s caravan from %s' ):format (
6260 id ,
@@ -73,32 +71,42 @@ function commands.list()
7371 end
7472end
7573
76- function commands . extend (days , ...)
74+ local function extend (days , ...)
7775 days = tonumber (days or 7 ) or qerror (' invalid number of days: ' .. days )
78- for id , car in caravans_from_ids {... } do
76+ for id , car in pairs ( caravans_from_ids {... }) do
7977 car .time_remaining = car .time_remaining + (days * 120 )
8078 bring_back (car )
8179 end
8280end
8381
84- function commands . happy (...)
85- for id , car in caravans_from_ids {... } do
82+ local function happy (...)
83+ for id , car in pairs ( caravans_from_ids {... }) do
8684 -- all flags default to false
8785 car .flags .whole = 0
8886 bring_back (car )
8987 end
9088end
9189
92- function commands . leave (...)
93- for id , car in caravans_from_ids {... } do
90+ local function leave (...)
91+ for id , car in pairs ( caravans_from_ids {... }) do
9492 car .trade_state = df .caravan_state .T_trade_state .Leaving
9593 end
9694end
9795
9896function main (...)
99- args = {... }
100- command = table.remove (args , 1 )
101- commands [command ](table.unpack (args ))
97+ local args = {... }
98+ local command = table.remove (args , 1 )
99+ if command == " list" then
100+ list (table.unpack (args ))
101+ elseif command == " extend" then
102+ extend (table.unpack (args ))
103+ elseif command == " happy" then
104+ happy (table.unpack (args ))
105+ elseif command == " leave" then
106+ leave (table.unpack (args ))
107+ else
108+ qerror (" No such command: " .. command )
109+ end
102110end
103111
104112if not dfhack_flags .module then
0 commit comments