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).."".."\n") io.write ("\t\t".."<"..k.."_pile_type"..">"..tostring(event.props.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()