skill-change.lua
parent
008c398dd5
commit
87469c3313
@ -0,0 +1,80 @@
|
||||
--scripts/modtools/skill-change.lua
|
||||
--author expwnent
|
||||
--based on skillChange.lua by Putnam
|
||||
|
||||
local utils = require 'utils'
|
||||
|
||||
validArgs = validArgs or utils.invert({
|
||||
'help',
|
||||
'skill',
|
||||
'mode',
|
||||
'value',
|
||||
'granularity',
|
||||
'unit'
|
||||
})
|
||||
|
||||
mode = mode or utils.invert({
|
||||
'add',
|
||||
'set',
|
||||
})
|
||||
|
||||
granularity = granularity or utils.invert({
|
||||
'experience',
|
||||
'level',
|
||||
})
|
||||
|
||||
local args = utils.processArgs({...}, validArgs)
|
||||
|
||||
if not args.unit or not tonumber(args.unit) or not df.unit.find(tonumber(args.unit)) then
|
||||
error 'Invalid unit.'
|
||||
end
|
||||
args.unit = df.unit.find(tonumber(args.unit))
|
||||
|
||||
args.skill = df.job_skill[args.skill]
|
||||
args.mode = mode[args.mode or 'set']
|
||||
args.granularity = granularity[args.granularity or 'level']
|
||||
args.value = tonumber(args.value)
|
||||
|
||||
if not args.skill then
|
||||
error('invalid skill')
|
||||
end
|
||||
if not args.value then
|
||||
error('invalid value')
|
||||
end
|
||||
|
||||
local skill
|
||||
for _,skill_c in ipairs(args.unit.status.current_soul.skills) do
|
||||
if skill_c.id == args.skill then
|
||||
skill = skill_c
|
||||
end
|
||||
end
|
||||
|
||||
if not skill then
|
||||
skill = df.unit_skill:new()
|
||||
skill.id = args.skill
|
||||
args.unit.status.current_soul.skills:insert('#', skill)
|
||||
end
|
||||
|
||||
print('old: ' .. skill.rating .. ': ' .. skill.experience)
|
||||
if args.granularity == granularity.experience then
|
||||
if args.mode == mode.set then
|
||||
skill.experience = args.value
|
||||
elseif args.mode == mode.add then
|
||||
skill.experience = skill.experience + args.value
|
||||
else
|
||||
error 'bad mode'
|
||||
end
|
||||
elseif args.granularity == granularity.level then
|
||||
if args.mode == mode.set then
|
||||
skill.rating = df.skill_rating[args.value]
|
||||
elseif args.mode == mode.add then
|
||||
skill.rating = df.skill_rating[args.value + df.skill_rating[skill.rating]]
|
||||
else
|
||||
error 'bad mode'
|
||||
end
|
||||
else
|
||||
error 'bad granularity'
|
||||
end
|
||||
|
||||
print('new: ' .. skill.rating .. ': ' .. skill.experience)
|
||||
|
Loading…
Reference in New Issue