commit
38c4edf858
@ -0,0 +1,67 @@
|
||||
-- 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
|
Loading…
Reference in New Issue