diff --git a/scripts/modtools/reaction-trigger.lua b/scripts/modtools/reaction-trigger.lua index 4c3819417..e878aef06 100644 --- a/scripts/modtools/reaction-trigger.lua +++ b/scripts/modtools/reaction-trigger.lua @@ -1,4 +1,4 @@ --- reaction-trigger.lua +-- scripts/modtools/reaction-trigger.lua -- author expwnent -- replaces autoSyndrome: trigger commands when custom reactions are completed @@ -8,6 +8,11 @@ local utils = require 'utils' reactionHooks = reactionHooks or {} +eventful.enableEvent(eventful.eventType.UNLOAD,1) +eventful.onUnload.reactionTrigger = function() + reactionHooks = {} +end + local function getWorkerAndBuilding(job) local workerId = -1 local buildingId = -1 @@ -141,16 +146,58 @@ eventful.onJobCompleted.reactionTrigger = function(job) doAction(action) end end -eventful.enableEvent(eventful.eventType.JOB_COMPLETED,0) +eventful.enableEvent(eventful.eventType.JOB_COMPLETED,0) --0 is necessary to catch cancelled jobs and not trigger them validArgs = utils.invert({ 'help', 'clear', 'reactionName', 'syndrome', - 'command' + 'command', + 'allowNonworkerTargets', + 'allowMultipleTargets' }) local args = utils.processArgs({...}, validArgs) + +if args.help then + print([[scripts/modtools/reaction-trigger.lua +arguments: + -help + print this help message + -clear + unregister all reaction hooks + -reactionName name + specify the name of the reaction + -syndrome name + specify the name of the syndrome to be applied to the targets + -allowNonworkerTargets + allow other units in the same building to be targetted by either the script or the syndrome + -allowMultipleTargets + allow multiple targets to the script or syndrome + if absent: + if running a script, only one target will be used + if applying a syndrome, then only one target will be infected + -resetPolicy policy + set the reset policy in the case that the syndrome is already present + policy + NewInstance (default) + DoNothing + ResetDuration + AddDuration + -command [ commandStrs ] + specify the command to be run on the target(s) + special args + \\WORKER_ID + \\TARGET_ID + \\BUILDING_ID + \\LOCATION + \\REACTION_NAME + \\anything -> anything + anything -> anything +]]) + return +end + if args.clear then reactionHooks = {} end