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