@ -1,8 +1,10 @@
-- create-unit.lua
-- Originally created by warmist, edited by Putnam for the dragon ball mod to be used in reactions, modified by Dirst for use in The Earth Strikes Back mod, incorporating fixes discovered by Boltgun then Mifiki wrote the bit where it switches to arena mode briefly to do some of the messy work, then Expwnent combined that with the old script to make it function for histfigs
-- version 0.5
-- version 0.5 1
-- This is a beta version. Use at your own risk.
-- Modifications from 0.5: civ -1 creates are NOT historical figures, mitigated screen-movement bug in createUnit()
--[[
TODO
children and babies : set child / baby job
@ -30,6 +32,10 @@ end
local utils = require ' utils '
function createUnit ( race_id , caste_id )
local view_x = df.global . window_x
local view_y = df.global . window_y
local view_z = df.global . window_z
local curViewscreen = dfhack.gui . getCurViewscreen ( )
local dwarfmodeScreen = df.viewscreen_dwarfmodest : new ( )
curViewscreen.child = dwarfmodeScreen
@ -64,6 +70,11 @@ function createUnit(race_id, caste_id)
df.global . ui.main . mode = oldMode
local id = df.global . unit_next_id - 1
df.global . window_x = view_x
df.global . window_y = view_y
df.global . window_z = view_z
return id
end
@ -261,6 +272,22 @@ function domesticate(uid, group_id)
end
end
function wild ( uid )
local u = df.unit . find ( uid )
local caste = df.creature_raw . find ( u.race ) . caste [ u.caste ]
-- x = df.global.world.world_data.active_site[0].pos.x
-- y = df.global.world.world_data.active_site[0].pos.y
-- region = df.global.map.map_blocks[df.global.map.x_count_block*x+y]
if not ( caste.flags . CAN_SPEAK and caste.flags . CAN_LEARN ) then
u.animal . population.region_x = 1
u.animal . population.region_y = 1
u.animal . population.unk_28 = - 1
u.animal . population.population_idx = 1
u.animal . population.depth = 0
end
end
function nameUnit ( id , entityRawName , civ_id )
--pick a random appropriate name
--choose three random words in the appropriate things
@ -437,7 +464,7 @@ end
local civ_id
if args.civId == ' \\ LOCAL ' then
civ_id = df.global . ui.civ_id
elseif args.civId and tonumber ( args.civId ) and tonumber ( args.civId ) ~= - 1 then
elseif args.civId and tonumber ( args.civId ) then
civ_id = tonumber ( args.civId )
end
@ -448,10 +475,17 @@ elseif args.groupId and tonumber(args.groupId) then
group_id = tonumber ( args.groupId )
end
local unitId = createUnitInCiv ( raceIndex , casteIndex , civ_id , group_id )
local unitId
if civ_id == - 1 then
unitId = createUnit ( raceIndex , casteIndex )
else
unitId = createUnitInCiv ( raceIndex , casteIndex , civ_id , group_id )
end
if args.domesticate then
domesticate ( unitId , group_id )
else
wild ( unitId )
end
if age or age == 0 then