From d128ab8f6e977cf2b2372e42f4db753f70475f1d Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Sat, 11 Jan 2025 16:01:50 +0100 Subject: [PATCH] Fix crash when opening the editor --- lignumis/control.lua | 45 +++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/lignumis/control.lua b/lignumis/control.lua index e44a5b7..6d302f9 100644 --- a/lignumis/control.lua +++ b/lignumis/control.lua @@ -41,41 +41,44 @@ script.on_init(function() end) script.on_event(e.on_player_created, function(event) - local player = game.get_player(event.player_index) --[[@as LuaPlayer]] - - local surface = storage.surface - player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1) --[[@as MapPosition]], "lignumis") - if not storage.nauvis_visited then local nauvis = game.get_surface("nauvis") --[[@as LuaSurface]] nauvis.clear() end + local player = game.get_player(event.player_index) --[[@as LuaPlayer]] + local surface = storage.surface + if not storage.init then storage.init = true surface.daytime = 0.7 - if player.character then - player.character.destructible = false - end - if remote.interfaces.freeplay then - storage.crashed_ship_items = remote.call("freeplay", "get_ship_items") - storage.crashed_debris_items = remote.call("freeplay", "get_debris_items") - storage.crashed_ship_parts = remote.call("freeplay", "get_ship_parts") - storage.starting_message = remote.call("freeplay", "get_custom_intro_message") + if player then + player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1) --[[@as MapPosition]], "lignumis") - local ship_items = { ["wood-darts-magazine"] = 8 } - local debris_items = { ["lumber"] = 8 } + if player.character then + player.character.destructible = false + end - crash_site.create_crash_site(surface, { -5, -6 }, ship_items, debris_items, table.deepcopy(storage.crashed_ship_parts)) - util.remove_safe(player, storage.crashed_ship_items) - util.remove_safe(player, storage.crashed_debris_items) + if remote.interfaces.freeplay then + storage.crashed_ship_items = remote.call("freeplay", "get_ship_items") + storage.crashed_debris_items = remote.call("freeplay", "get_debris_items") + storage.crashed_ship_parts = remote.call("freeplay", "get_ship_parts") + storage.starting_message = remote.call("freeplay", "get_custom_intro_message") - player.get_main_inventory().sort_and_merge() + local ship_items = { ["wood-darts-magazine"] = 8 } + local debris_items = { ["lumber"] = 8 } - storage.crash_site_cutscene_active = true - crash_site.create_cutscene(player, { -5, -4 }) + crash_site.create_crash_site(surface, { -5, -6 }, ship_items, debris_items, table.deepcopy(storage.crashed_ship_parts)) + util.remove_safe(player, storage.crashed_ship_items) + util.remove_safe(player, storage.crashed_debris_items) + + player.get_main_inventory().sort_and_merge() + + storage.crash_site_cutscene_active = true + crash_site.create_cutscene(player, { -5, -4 }) + end end chart_starting_area()