From 87b36d88d1786e60fda3a478ab6b331adaef8822 Mon Sep 17 00:00:00 2001 From: Simon Brodtmann Date: Mon, 20 Jan 2025 23:14:42 +0100 Subject: [PATCH] Fix errors with initialization --- lignumis/control.lua | 80 +++++++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/lignumis/control.lua b/lignumis/control.lua index 71f7284..ff5b58c 100644 --- a/lignumis/control.lua +++ b/lignumis/control.lua @@ -22,7 +22,10 @@ end script.on_init(function() if game.tick > 0 then - storage.init = true + storage.init = {} + for _, player in pairs(game.players) do + storage.init[player.index] = true + end game.print { "", { "lignumis.start-new-game" } } return end @@ -59,43 +62,50 @@ script.on_event(e.on_player_created, function(event) nauvis.clear() end - local player = game.get_player(event.player_index) --[[@as LuaPlayer]] - local surface = storage.surface - - if player then - player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1), "lignumis") - - if player.character then - player.character.destructible = false - local main_inventory = player.character.get_main_inventory() - main_inventory.insert({ name = "burner-mining-drill", count = 1 }) - main_inventory.insert({ name = "burner-agricultural-tower", count = 2 }) - 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") - - local ship_items = { ["wood-darts-magazine"] = 2 } - local debris_items = { ["lumber"] = 8 } - - 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 + if storage.init and type(storage.init) == "boolean" then + storage.init = { + [event.player_index] = true + } + else + storage.init = {} end - if not storage.init then - storage.init = true + local player = game.get_player(event.player_index) --[[@as LuaPlayer]] + local surface = storage.surface or game.planets["lignumis"].surface + + if not storage.init[event.player_index] then + storage.init[event.player_index] = true chart_starting_area() + + if player then + if player.character then + player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1), "lignumis") + player.character.destructible = false + local main_inventory = player.character.get_main_inventory() + main_inventory.insert({ name = "burner-mining-drill", count = 1 }) + main_inventory.insert({ name = "burner-agricultural-tower", count = 2 }) + 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") + + local ship_items = { ["wood-darts-magazine"] = 2 } + local debris_items = { ["lumber"] = 8 } + + 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 end end)