Add transition to Nauvis
This commit is contained in:
		
							parent
							
								
									a83851341a
								
							
						
					
					
						commit
						dfea26a7cf
					
				
					 6 changed files with 75 additions and 59 deletions
				
			
		|  | @ -5,10 +5,7 @@ Dive into the world of Lignumis, a moon of Nauvis offering only the most basic t | ||||||
| 
 | 
 | ||||||
|  - Move wood and lumber to its own fuel category |  - Move wood and lumber to its own fuel category | ||||||
|  - Make seeds burnable again |  - Make seeds burnable again | ||||||
|  - Make rocket silo work (incl. transition to Nauvis) |  | ||||||
|  - ~~Add ammo turret~~ |  | ||||||
|  - Add recipe for moist stromatolite remnants for regular furnace |  - Add recipe for moist stromatolite remnants for regular furnace | ||||||
|  - ~~Make enemies work~~ |  | ||||||
|  - Make mod "Wooden logistics" optional |  - Make mod "Wooden logistics" optional | ||||||
|  - Balance pollution (noise) |  - Balance pollution (noise) | ||||||
|  - Tweak enemies + warfare (add damage research) |  - Tweak enemies + warfare (add damage research) | ||||||
|  | @ -19,13 +16,13 @@ Dive into the world of Lignumis, a moon of Nauvis offering only the most basic t | ||||||
|  - Add burner radar |  - Add burner radar | ||||||
|  - Balance resources |  - Balance resources | ||||||
|  - Force start with wooden ammo |  - Force start with wooden ammo | ||||||
|  - Add robots (simple robots inspired by https://mods.factorio.com/mod/copper-construction-robots; gold and copper variant) |  | ||||||
|  - Remove stromatolite (non-plant)? |  - Remove stromatolite (non-plant)? | ||||||
|  - Guarantee spawn of gold in starting area |  - Guarantee spawn of gold in starting area | ||||||
|  - Fix pipe graphics on desiccation furnace |  - Fix pipe graphics on desiccation furnace | ||||||
|  - Change color of gold soil |  - Change color of gold soil | ||||||
|  - Ban huge rocks with coal from Nauvis |  - Ban huge rocks with coal from Nauvis | ||||||
|  - Increase default moisture bias |  - Increase default moisture bias | ||||||
|  |  - Create proper experience for the transition to Nauvis with a custom UI with launch button  | ||||||
| 
 | 
 | ||||||
| ## Credits | ## Credits | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,5 @@ | ||||||
|  | require("script/to-nauvis") | ||||||
|  | 
 | ||||||
| local crash_site = require("crash-site") | local crash_site = require("crash-site") | ||||||
| local util = require("util") | local util = require("util") | ||||||
| local e = defines.events | local e = defines.events | ||||||
|  | @ -56,10 +58,6 @@ script.on_event(e.on_player_created, function(event) | ||||||
|         storage.crashed_ship_parts = remote.call("freeplay", "get_ship_parts") |         storage.crashed_ship_parts = remote.call("freeplay", "get_ship_parts") | ||||||
|         storage.starting_message = remote.call("freeplay", "get_custom_intro_message") |         storage.starting_message = remote.call("freeplay", "get_custom_intro_message") | ||||||
| 
 | 
 | ||||||
|         log(serpent.block(storage.crashed_ship_items)) |  | ||||||
|         log(serpent.block(storage.crashed_debris_items)) |  | ||||||
|         log(serpent.block(storage.crashed_ship_parts)) |  | ||||||
| 
 |  | ||||||
|         local ship_items = { ["wood-darts-magazine"] = 8 } |         local ship_items = { ["wood-darts-magazine"] = 8 } | ||||||
|         local debris_items = { ["lumber"] = 8 } |         local debris_items = { ["lumber"] = 8 } | ||||||
| 
 | 
 | ||||||
|  | @ -89,10 +87,7 @@ local get_starting_message = function() | ||||||
|     if storage.custom_intro_message then |     if storage.custom_intro_message then | ||||||
|         return storage.custom_intro_message |         return storage.custom_intro_message | ||||||
|     end |     end | ||||||
|     if script.active_mods["space-age"] then |  | ||||||
|     return { "msg-intro-space-age" } |     return { "msg-intro-space-age" } | ||||||
|     end |  | ||||||
|     return { "msg-intro" } |  | ||||||
| end | end | ||||||
| 
 | 
 | ||||||
| local function show_intro_message(player) | local function show_intro_message(player) | ||||||
|  |  | ||||||
|  | @ -46,9 +46,11 @@ gold-plate=Gold plate | ||||||
| gold-cable=Gold cable | gold-cable=Gold cable | ||||||
| moist-stromatolite-remnant=Moist stromatolite remnant | moist-stromatolite-remnant=Moist stromatolite remnant | ||||||
| steam-science-pack=Steam science pack | steam-science-pack=Steam science pack | ||||||
|  | destination-nauvis=Travel to Nauvis | ||||||
| 
 | 
 | ||||||
| [item-description] | [item-description] | ||||||
| wooden-wall=Use wooden walls to protect your base from the locals and to reduce noise levels. | wooden-wall=Use wooden walls to protect your base from the locals and to reduce noise levels. | ||||||
|  | destination-nauvis=Insert this item into a rocket to travel to Nauvis. Notice that you won't come back for a while. | ||||||
| 
 | 
 | ||||||
| [fluid-name] | [fluid-name] | ||||||
| wood-pulp=Wood pulp | wood-pulp=Wood pulp | ||||||
|  |  | ||||||
|  | @ -89,40 +89,6 @@ local rocket_part_recipe = { | ||||||
|     allow_productivity = true |     allow_productivity = true | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| local satellite_item = { |  | ||||||
|     type = "item", |  | ||||||
|     name = "satellite", |  | ||||||
|     icon = "__base__/graphics/icons/satellite.png", |  | ||||||
|     subgroup = "space-related", |  | ||||||
|     order = "d[rocket-parts]-e[satellite]", |  | ||||||
|     inventory_move_sound = item_sounds.mechanical_inventory_move, |  | ||||||
|     pick_sound = item_sounds.mechanical_inventory_pickup, |  | ||||||
|     drop_sound = item_sounds.mechanical_inventory_move, |  | ||||||
|     stack_size = 1, |  | ||||||
|     weight = 1 * tons, |  | ||||||
|     rocket_launch_products = {{type = "item", name = "destination-nauvis", amount = 1}}, |  | ||||||
|     send_to_orbit_mode = "automated" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| local satellite_recipe = { |  | ||||||
|     type = "recipe", |  | ||||||
|     name = "satellite", |  | ||||||
|     energy_required = 5, |  | ||||||
|     enabled = false, |  | ||||||
|     category = "crafting", |  | ||||||
|     ingredients = |  | ||||||
|     { |  | ||||||
|         { type = "item", name = "low-density-structure", amount = 100 }, |  | ||||||
|         { type = "item", name = "solar-panel",           amount = 100 }, |  | ||||||
|         { type = "item", name = "accumulator",           amount = 100 }, |  | ||||||
|         { type = "item", name = "radar",                 amount = 5 }, |  | ||||||
|         { type = "item", name = "processing-unit",       amount = 100 }, |  | ||||||
|         { type = "item", name = "rocket-fuel",           amount = 50 } |  | ||||||
|     }, |  | ||||||
|     results = { { type = "item", name = "satellite", amount = 1 } }, |  | ||||||
|     requester_paste_multiplier = 1 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| local nauvis_item = { | local nauvis_item = { | ||||||
|     type = "item", |     type = "item", | ||||||
|     name = "destination-nauvis", |     name = "destination-nauvis", | ||||||
|  | @ -133,7 +99,17 @@ local nauvis_item = { | ||||||
|     pick_sound = item_sounds.mechanical_inventory_pickup, |     pick_sound = item_sounds.mechanical_inventory_pickup, | ||||||
|     drop_sound = item_sounds.mechanical_inventory_move, |     drop_sound = item_sounds.mechanical_inventory_move, | ||||||
|     stack_size = 1, |     stack_size = 1, | ||||||
|     weight = 1 * tons |     weight = 1 * tons, | ||||||
|  |     send_to_orbit_mode = "automated", | ||||||
|  |     spoil_ticks = 60 * 60 * 10 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | local nauvis_recipe = { | ||||||
|  |     type = "recipe", | ||||||
|  |     name = "destination-nauvis", | ||||||
|  |     enabled = false, | ||||||
|  |     ingredients = {}, | ||||||
|  |     results = { { type = "item", name = "destination-nauvis", amount = 1 } } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| data:extend({ | data:extend({ | ||||||
|  | @ -142,7 +118,6 @@ data:extend({ | ||||||
|     silo_recipe, |     silo_recipe, | ||||||
|     rocket, |     rocket, | ||||||
|     rocket_part_recipe, |     rocket_part_recipe, | ||||||
|     satellite_item, |     nauvis_item, | ||||||
|     satellite_recipe, |     nauvis_recipe | ||||||
|     nauvis_item |  | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | @ -5,11 +5,22 @@ data:extend({ | ||||||
|         icons = util.technology_icon_constant_planet("__lignumis__/graphics/technology/nauvis.png"), |         icons = util.technology_icon_constant_planet("__lignumis__/graphics/technology/nauvis.png"), | ||||||
|         icon_size = 256, |         icon_size = 256, | ||||||
|         essential = true, |         essential = true, | ||||||
|         effects = { { |         effects = { | ||||||
|  |             { | ||||||
|                 type = "unlock-space-location", |                 type = "unlock-space-location", | ||||||
|                 space_location = "nauvis", |                 space_location = "nauvis", | ||||||
|                 use_icon_overlay_constant = true |                 use_icon_overlay_constant = true | ||||||
|         } }, |             }, | ||||||
|  |             { | ||||||
|  |                 type = "unlock-recipe", | ||||||
|  |                 recipe = "destination-nauvis" | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |                 type = "unlock-space-platforms", | ||||||
|  |                 modifier = true, | ||||||
|  |                 hidden = true | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|         prerequisites = { "provisional-rocketry" }, |         prerequisites = { "provisional-rocketry" }, | ||||||
|         unit = { |         unit = { | ||||||
|             count = 100, |             count = 100, | ||||||
|  | @ -121,10 +132,6 @@ data:extend({ | ||||||
|             { |             { | ||||||
|                 type = "unlock-recipe", |                 type = "unlock-recipe", | ||||||
|                 recipe = "provisional-rocket-silo" |                 recipe = "provisional-rocket-silo" | ||||||
|             }, |  | ||||||
|             { |  | ||||||
|                 type = "unlock-recipe", |  | ||||||
|                 recipe = "satellite" |  | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|         prerequisites = { "wood-liquefaction" }, |         prerequisites = { "wood-liquefaction" }, | ||||||
|  |  | ||||||
							
								
								
									
										40
									
								
								lignumis/script/to-nauvis.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								lignumis/script/to-nauvis.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | ||||||
|  | local crash_site = require("crash-site") | ||||||
|  | local util = require("util") | ||||||
|  | local e = defines.events | ||||||
|  | 
 | ||||||
|  | local function chart_starting_area(surface, player) | ||||||
|  |     local r = 200 | ||||||
|  |     local force = player.force | ||||||
|  |     local origin = force.get_spawn_position(surface) | ||||||
|  |     force.chart(surface, { { origin.x - r, origin.y - r }, { origin.x + r, origin.y + r } }) | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | local function travel_to_nauvis() | ||||||
|  |     local nauvis = game.planets["nauvis"].create_surface() | ||||||
|  |     nauvis.request_to_generate_chunks({ 0, 0 }, 3) | ||||||
|  |     nauvis.force_generate_chunk_requests() | ||||||
|  | 
 | ||||||
|  |     for _, player in pairs(game.players) do | ||||||
|  |         if player.surface.name == "lignumis" then | ||||||
|  |             player.teleport(nauvis.find_non_colliding_position("character", { 0, 0 }, 0, 1) --[[@as MapPosition]], | ||||||
|  |                 "nauvis") | ||||||
|  |             chart_starting_area(nauvis, player) | ||||||
|  |             player.print("Oh no, not again. But... Welcome to Nauvis!") | ||||||
|  |         end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     local ship_items = remote.call("freeplay", "get_ship_items") | ||||||
|  |     local debris_items = remote.call("freeplay", "get_debris_items") | ||||||
|  |     local crashed_ship_parts = remote.call("freeplay", "get_ship_parts") | ||||||
|  | 
 | ||||||
|  |     nauvis.daytime = 0.7 | ||||||
|  |     crash_site.create_crash_site(nauvis, { -5, -6 }, ship_items, debris_items, util.copy(crashed_ship_parts)) | ||||||
|  | end | ||||||
|  | 
 | ||||||
|  | script.on_event(e.on_rocket_launch_ordered, function(event) | ||||||
|  |     local rocket_silo = event.rocket_silo | ||||||
|  |     if rocket_silo.name == "provisional-rocket-silo" then | ||||||
|  |         --rocket_silo.destroy() | ||||||
|  |         travel_to_nauvis() | ||||||
|  |     end | ||||||
|  | end) | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Simon Brodtmann
						Simon Brodtmann