Fixed a problem with syndromeUtil, renamed to syndrome-util, and made add-syndrome use proper conventions.

develop
expwnent 2014-07-03 15:18:00 -04:00
parent 85c81cc69f
commit e28a42b848
2 changed files with 87 additions and 78 deletions

@ -1,13 +1,13 @@
--syndrome.lua
--lua/syndrome-util.lua
--author expwnent
--some utilities for adding syndromes to units
local _ENV = mkmodule("syndromeUtil")
local _ENV = mkmodule("syndrome-util")
local utils = require("utils")
function findUnitSyndrome(unit,syn_id)
for index,syndrome in ipairs(unit.syndromes.active) do
if syndrome.type == syn_id then
if syndrome['type'] == syn_id then
return syndrome
end
end
@ -107,7 +107,7 @@ function isValidTarget(unit,syndrome)
local unitRaws = df.creature_raw.find(unit.race)
local casteRaws = unitRaws.caste[unit.caste]
local unitRaceName = unitRaws.creature_id
local casteName = casteRaws.caste_id
local unitCasteName = casteRaws.caste_id
local unitClasses = casteRaws.creature_class
for _,unitClass in ipairs(unitClasses) do
for _,syndromeClass in ipairs(syndrome.syn_affected_class) do
@ -119,7 +119,7 @@ function isValidTarget(unit,syndrome)
for caste,creature in ipairs(syndrome.syn_affected_creature) do
local affectedCreature = creature.value
local affectedCaste = syndrome.syn_affectedCaste[caste].value
if affectedCreature == unitRaceName and (affectedCaste == casteName or affectedCaste == "ALL") then
if affectedCreature == unitRaceName and (affectedCaste == unitCasteName or affectedCaste == "ALL") then
affected = true
end
end
@ -130,10 +130,10 @@ function isValidTarget(unit,syndrome)
end
end
end
for caste,creature in ipairs(syndrome,syn_immune_creature) do
for caste,creature in ipairs(syndrome.syn_immune_creature) do
local immuneCreature = creature.value
local immuneCaste = syndrome.syn_immune_caste[caste].value
if immuneCreature == unitRaceName and (immuneCaste == casteName or immuneCaste == "ALL") then
if immuneCreature == unitRaceName and (immuneCaste == unitCasteName or immuneCaste == "ALL") then
affected = false
end
end

@ -1,85 +1,94 @@
--modtools/add-syndrome.lua
--author expwnent
--add syndromes to a target, or remove them
local syndromeUtil = require 'syndromeUtil'
local syndromeUtil = require 'syndrome-util'
local utils = require 'utils'
mode = mode or utils.invert({
'add',
validArgs = validArgs or utils.invert({
'help',
'syndrome',
'resetPolicy',
'erase',
'eraseAll'
'eraseOldest',
'eraseAll',
'target',
'skipImmunities'
})
local args = {...}
local i = 1
local syndrome
local resetPolicy = syndromeUtil.ResetPolicy.NewInstance
local currentMode = mode.add
local target
local skipImmunities = false
while i <= #args do
if args[i] == '-help' then
local args = utils.processArgs({...}, validArgs)
if args.help then
print('add-syndrome usage:')
print(' -help')
print(' print this help message')
print(' -syndrome [name]')
print(' select a syndrome by name')
print(' -resetPolicy DoNothing')
print(' -resetPolicy {default = NewInstance}')
print(' DoNothing')
print(' if the target already has an instance of the syndrome, do nothing')
print(' -resetPolicy ResetDuration')
print(' ResetDuration')
print(' if the target already has an instance of the syndrome, reset the duration to maximum')
print(' -resetPolicy AddDuration')
print(' AddDuration')
print(' if the target already has an instance of the syndrome, add the maximum duration to the time remaining')
print(' -resetPolicy NewInstance')
print(' NewInstance')
print(' if the target already has an instance of the syndrome, add a new instance of the syndrome')
print(' -erase')
print(' instead of adding a syndrome, erase one')
print(' -eraseAll')
print(' instead of adding a syndrome, erase every instance of it')
print(' -target [id]')
print(' set the target unit for infection')
print(' set the target unit for infection or uninfection')
print(' -skipImmunities')
print(' don\'t check syn_class immune/affected stuff.')
print(' don\'t check syn_class immune/affected stuff when adding the syndrome')
return
elseif args[i] == '-syndrome' then
local syn_name = args[i+1]
end
if args.resetPolicy then
args.resetPolicy = syndromeUtil.ResetPolicy[args.resetPolicy]
if not args.resetPolicy then
error ('Invalid reset policy.')
end
end
if not args.syndrome then
error 'Specify a syndrome name.'
end
local syndrome
for _,syn in ipairs(df.global.world.raws.syndromes.all) do
if syn.syn_name == syn_name then
if syn.syn_name == args.syndrome then
syndrome = syn
break
end
end
i = i+2
elseif args[i] == '-resetPolicy' then
resetPolicy = syndromeUtil.ResetPolicy[args[i+1]]
if not resetPolicy then
qerror('Invalid arguments to add-syndrome.')
if not syndrome then
error ('Invalid syndrome: ' .. args.syndrome)
end
args.syndrome = syndrome
if not args.target then
error 'Specify a target.'
end
i = i+2
elseif args[i] == '-erase' then
currentMode = mode.erase
i = i+1
elseif args[i] == '-eraseAll' then
currentMode = mode.eraseAll
i = i+1
elseif args[i] == '-add' then
currentMode = mode.add
i = i+1
elseif args[i] == '-target' then
target = df.unit.find(tonumber(args[i+1]))
if not target then
qerror('Invalid unit id argument to add-syndrome.')
local targ = df.unit.find(tonumber(args.target))
if not targ then
error ('Could not find target: ' .. args.target)
end
i = i+2
elseif args[i] == '-skipImmunities' then
skipImmunities = true
i = i+1
else
qerror('Invalid arguments to add-syndrome.')
args.target = targ
if args.erase then
syndromeUtil.eraseSyndrome(args.target,args.syndrome.id,args.eraseOldest)
return
end
if args.eraseAll then
syndromeUtil.eraseSyndromes(args.target,args.syndrome.id)
return
end
if skipImmunities then
syndromeUtil.infectWithSyndrome(target,syndrome,resetPolicy)
syndromeUtil.infectWithSyndrome(args.target,args.syndrome,args.resetPolicy)
else
syndromeUtil.infectWithSyndromeIfValidTarget(target,syndrome,resetPolicy)
syndromeUtil.infectWithSyndromeIfValidTarget(args.target,args.syndrome,args.resetPolicy)
end