diff --git a/library/lua/utils.lua b/library/lua/utils.lua index 19fe4a38a..a677af3bf 100644 --- a/library/lua/utils.lua +++ b/library/lua/utils.lua @@ -610,4 +610,16 @@ function processArgs(args, validArgs) return result end +function fillTable(table1,table2) + for k,v in pairs(table2) do + table1[k] = v + end +end + +function unfillTable(table1,table2) + for k,v in pairs(table2) do + table1[k] = nil + end +end + return _ENV diff --git a/scripts/modtools/item-trigger.lua b/scripts/modtools/item-trigger.lua index 27bb165bc..c1efaf855 100644 --- a/scripts/modtools/item-trigger.lua +++ b/scripts/modtools/item-trigger.lua @@ -1,4 +1,4 @@ ---attackTrigger.lua +--attack-trigger.lua --author expwnent --based on itemsyndrome by Putnam --triggers scripts when a unit attacks another with a weapon type, a weapon of a particular material @@ -7,7 +7,7 @@ local eventful = require 'plugins.eventful' local utils = require 'utils' eventful.enableEvent(eventful.eventType.UNIT_ATTACK,1) -- this event type is cheap, so checking every tick is fine --eventful.enableEvent(eventful.eventType.INVENTORY_CHANGE,1000) --this is expensive, but you'll still want to set it lower -eventful.enableEvent(eventful.eventType.INVENTORY_CHANGE,1) +eventful.enableEvent(eventful.eventType.INVENTORY_CHANGE,1) --this is temporary itemTriggers = itemTriggers or {} materialTriggers = materialTriggers or {} @@ -49,18 +49,6 @@ function processTrigger(command) dfhack.run_command(table.unpack(command2)) end -function fillTable(table1,table2) - for k,v in pairs(table2) do - table1[k] = v - end -end - -function unfillTable(table1,table2) - for k,v in pairs(table2) do - table1[k] = nil - end -end - function handler(table) local itemMat = dfhack.matinfo.decode(table.item) local itemMatStr = itemMat:getToken() @@ -70,17 +58,17 @@ function handler(table) for _,command in ipairs(itemTriggers[itemType] or {}) do if command[table.mode] then - fillTable(command,table) + utils.fillTable(command,table) processTrigger(command) - unfillTable(command,table) + utils.unfillTable(command,table) end end for _,command in ipairs(materialTriggers[itemMatStr] or {}) do if command[table.mode] then - fillTable(command,table) + utils.fillTable(command,table) processTrigger(command) - unfillTable(command,table) + utils.unfillTable(command,table) end end @@ -89,9 +77,9 @@ function handler(table) local contaminantStr = contaminantMat:getToken() table.contaminantMat = contaminantMat for _,command in ipairs(contaminantTriggers[contaminantStr] or {}) do - fillTable(command,table) + utils.fillTable(command,table) processTrigger(command) - unfillTable(command,table) + utils.unfillTable(command,table) end table.contaminantMat = nil end