diff --git a/changelog.txt b/changelog.txt index 71e2a281f..b0ca7040d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -17,6 +17,7 @@ Template for new versions: ## New Features ## Fixes +- ``embark-anyone``: validate viewscreen before using, avoids a crash ## Misc Improvements diff --git a/embark-anyone.lua b/embark-anyone.lua index 10772e46e..8239cd332 100644 --- a/embark-anyone.lua +++ b/embark-anyone.lua @@ -1,27 +1,28 @@ local dialogs = require('gui.dialogs') local utils = require('utils') -function addCivToEmbarkList(info) - local viewscreen = dfhack.gui.getDFViewscreen(true) +function embarkAnyone() - viewscreen.start_civ:insert ('#', info.civ) - viewscreen.start_civ_nem_num:insert ('#', info.nemeses) - viewscreen.start_civ_entpop_num:insert ('#', info.pops) - viewscreen.start_civ_site_num:insert ('#', info.sites) -end + function addCivToEmbarkList(info) + local viewscreen = dfhack.gui.getDFViewscreen(true) + + viewscreen.start_civ:insert ('#', info.civ) + viewscreen.start_civ_nem_num:insert ('#', info.nemeses) + viewscreen.start_civ_entpop_num:insert ('#', info.pops) + viewscreen.start_civ_site_num:insert ('#', info.sites) + end -function embarkAnyone() local viewscreen = dfhack.gui.getDFViewscreen(true) + if viewscreen._type ~= df.viewscreen_choose_start_sitest then + qerror("This script can only be used on the embark screen!") + end + local choices, existing_civs = {}, {} for _,existing_civ in ipairs(viewscreen.start_civ) do existing_civs[existing_civ.id] = true end - if viewscreen._type ~= df.viewscreen_choose_start_sitest then - qerror("This script can only be used on the embark screen!") - end - for i, civ in ipairs (df.global.world.entities.all) do -- Test if entity is a civ if civ.type ~= df.historical_entity_type.Civilization then goto continue end