Page 1 of 1
Restart the game on event
Posted: Sat Aug 20, 2016 7:27 am
by Sauerkraut
This does not seem to be possible at the moment. At least I could not find any method to do so.
I would like to restart the game when the rocket is launched and change some map generation settings, like changing the available biomes and changing ressources. i thought of something like this:
Code: Select all
require "defines"
scrip.on_event(defines.events.on_rocket_launched, function(event)
-- maybe manipulate world generation
game.restart() --this does not exist
end)
Is there another way to completely reset all technology, wipe the discovered map, destroy all entities and let the player effectively restart?
Thanks in advance!
Re: Restart the game on event
Posted: Sat Aug 20, 2016 9:47 am
by Klonan
Sauerkraut wrote:
Is there another way to completely reset all technology, wipe the discovered map, destroy all entities and let the player effectively restart?
Yep, you could do
Code: Select all
function new_map(name)
game.create_surface(name,map_settings{})
for k, force in pairs (game.forces)
force.set_spawn_position({0,0}, game.surfaces[name])
for i, technology in pairs (force.technologies) do
technology.researched = false
end
force.reset_recipes()
end
for k, player in pairs (game.players) do
player.teleport({0,0}, game.surfaces[name]
end
game.delete_surface(game.surfaces["nauvis"])
end
Something like that, it willl delete the original map, and make a new one
I haven't tested this, but should be a good starting point
Re: Restart the game on event
Posted: Sat Aug 20, 2016 12:40 pm
by Sauerkraut
Thanks Klonan!
I actually came up with the same idea of creating a new surface, however, I can't figure out the way I have to pass map_settings argument the argument. map_settings is a nil value, so I figured you meant game.map_settings? However, that one does not work either. It tells me i'm attempting to call a field with a table value (?)
I did not know that delete_surface existed, I thought surfaces cannot be deleted? After some trying the game also told me "Given surface can not be deleted." So I assume it's not possible? What exactly would happen if i just let nauvis be, would it eat a lot of ressources? Atleast the savefile would be unnecessary big. I could maybe delete all entities on nauvis, that may save some ressources....
I changed the code a bit, here is what it looks now, if anyone is interested:
Code: Select all
function replace_map(name,old)
game.create_surface(name,game.map_settings{})
for k, force in pairs (game.forces) do
force.set_spawn_position({0,0}, game.surfaces[name])
for i, technology in pairs (force.technologies) do
technology.researched = false
end
force.reset_recipes()
end
for k, player in pairs (game.players) do
player.teleport({0,0}, game.surfaces[name])
end
game.delete_surface(game.surfaces[old])
end
Re: Restart the game on event
Posted: Sat Aug 20, 2016 12:47 pm
by Klonan
map_settings is an array of settings,
Which looks like this:
Code: Select all
surface.map_gen_settings =
{
terrain_segmentation="normal",
water="normal",
autoplace_controls=
{
coal=
{
frequency="normal",
size="normal",
richness="normal"
},
["copper-ore"]=
{
frequency="normal",
size="normal",
richness="normal"
},
["crude-oil"]=
{
frequency="normal",
size="normal",
richness="normal"
},
["enemy-base"]=
{
frequency="normal",
size="normal",
richness="normal"
},
["iron-ore"]=
{
frequency="normal",
size="normal",
richness="normal"
},
stone=
{
frequency="normal",
size="normal",
richness="normal"
}
},
seed=3457826546,
width=2000000,
height=2000000,
starting_area="normal",
peaceful_mode=false
}
But you can do like
Code: Select all
local new_map_settings = game.players[1].surface.map_gen_settings
game.create_surface("New_surface_name", new_map_settings)
Re: Restart the game on event
Posted: Sat Aug 20, 2016 1:12 pm
by Sauerkraut
Ah, okay, right. I was already wondering why the API said game.map_settings is a MapSettings but create_surface() requires Map
GenSettings. Okay, so those are two different things ;P
Great, now that that works I'll look into autoplace, biomes and map generations! Maybe I'll make another dumb post about that, who knows
