diff --git a/scripts/exportlegends.lua b/scripts/exportlegends.lua
index ac5686cb6..721d793f3 100644
--- a/scripts/exportlegends.lua
+++ b/scripts/exportlegends.lua
@@ -397,14 +397,16 @@ function export_more_legends_xml()
--io.write ("\t\t".."<"..k.."_item_mat_index"..">"..tostring(event.props.item.mat_index)..""..k.."_item_mat_index"..">".."\n")
io.write ("\t\t".."<"..k.."_pile_type"..">"..tostring(event.props.pile_type)..""..k.."_pile_type"..">".."\n")
elseif event:getType() == df.history_event_type.ASSUME_IDENTITY and k == "identity" then
- if (df.global.world.identities.all[v].histfig_id == -1) then
- local thisIdentity = df.global.world.identities.all[v]
- io.write ("\t\t"..""..thisIdentity.name.first_name.."".."\n")
- io.write ("\t\t"..""..(df.global.world.raws.creatures.all[thisIdentity.race].creature_id):lower().."".."\n")
- io.write ("\t\t"..""..(df.global.world.raws.creatures.all[thisIdentity.race].caste[thisIdentity.caste].caste_id):lower().."".."\n")
- else
- io.write ("\t\t"..""..df.global.world.identities.all[v].histfig_id.."".."\n")
- end
+ if (table.contains(df.global.world.identities.all,v)) then
+ if (df.global.world.identities.all[v].histfig_id == -1) then
+ local thisIdentity = df.global.world.identities.all[v]
+ io.write ("\t\t"..""..thisIdentity.name.first_name.."".."\n")
+ io.write ("\t\t"..""..(df.global.world.raws.creatures.all[thisIdentity.race].creature_id):lower().."".."\n")
+ io.write ("\t\t"..""..(df.global.world.raws.creatures.all[thisIdentity.race].caste[thisIdentity.caste].caste_id):lower().."".."\n")
+ else
+ io.write ("\t\t"..""..df.global.world.identities.all[v].histfig_id.."".."\n")
+ end
+ end
elseif event:getType() == df.history_event_type.MASTERPIECE_CREATED_ARCH_CONSTRUCT and k == "building_type" then
io.write ("\t\t"..""..df.building_type[v]:lower().."".."\n")
elseif event:getType() == df.history_event_type.MASTERPIECE_CREATED_ARCH_CONSTRUCT and k == "building_subtype" then
@@ -523,10 +525,13 @@ function export_legends_info()
export_more_legends_xml()
end
--- presses 'd' for detailed maps
+--- presses 'd' for detailed maps
function wait_for_legends_vs()
local vs = dfhack.gui.getCurViewscreen()
if i <= #MAPS then
+ if df.viewscreen_legendsst:is_instance(vs.parent) then
+ vs = vs.parent
+ end
if df.viewscreen_legendsst:is_instance(vs) then
gui.simulateInput(vs, 'LEGENDS_EXPORT_DETAILED_MAP')
dfhack.timeout(10,'frames',wait_for_export_maps_vs)
@@ -553,6 +558,9 @@ end
-- export site maps
function export_site_maps()
local vs = dfhack.gui.getCurViewscreen()
+ if ((dfhack.gui.getCurFocus() ~= "legends" ) and (not table.contains(vs, "main_cursor"))) then -- Using open-legends
+ vs = vs.parent
+ end
print(' Exporting: All possible site maps')
vs.main_cursor = 1
gui.simulateInput(vs, 'SELECT')
@@ -565,7 +573,7 @@ end
-- main()
if dfhack.gui.getCurFocus() == "legends" or dfhack.gui.getCurFocus() == "dfhack/lua/legends" then
- -- either native legends mode, or using the open-legends.lua script
+ -- either native legends mode, or using the open-legends.lua script
if args[1] == "all" then
export_legends_info()
export_site_maps()