-- Adds emotions to creatures. local utils=require('utils') local function addEmotionToUnit(emotions,thought,emotion,severity,subthought) if not (type(emotion)=='number') then emotion=df.emotion_type[emotion] end if not (type(thought)=='number') then thought=df.unit_thought_type[thought] end emotions:insert('#',{new=df.unit_personality.T_emotions, type=emotion, unk2=1, unk3=1, thought=thought, subthought=subthought, severity=severity, flags=0, unk7=0, year=df.global.cur_year, year_tick=df.global.cur_year_tick }) end validArgs = validArgs or utils.invert({ 'unit', 'thought', 'emotion', 'severity', 'gui' }) function tablify(iterableObject) t={} for k,v in ipairs(iterableObject) do t[k] = v~=nil and v or 'nil' end return t end local args = utils.processArgs({...}, validArgs) local unit = args.unit and df.unit.find(args.unit) or dfhack.gui.getSelectedUnit(true) if not unit then qerror('A unit must be specified or selected.') end if args.gui then local script=require('gui.script') script.start(function() local tok,thought=script.showListPrompt('emotions','Which thought?',COLOR_WHITE,tablify(df.unit_thought_type),10,true) if tok then local eok,emotion=script.showListPrompt('emotions','Which emotion?',COLOR_WHITE,tablify(df.emotion_type),10,true) if eok then local sok,severity=script.showInputPrompt('emotions','At what severity?',COLOR_WHITE,'0') if sok then addEmotionToUnit(unit.status.current_soul.personality.emotions,thought,emotion,severity,0) end end end end) else local thought = args.thought or 180 local emotion = args.emotion or -1 local severity = args.severity or 0 local subthought = args.subthought or 0 addEmotionToUnit(unit.status.current_soul.personality.emotions,thought,emotion,severity,subthought) end