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