Mods introducing new content into the game.
Map generation and terrain modification.
Heya, love the Naufulglebunusilo mod. Was poking around, I think I found the issue with several of the ores not spawning on the planet, looks like it may have a been a frequency/spacing not being explicitly defined. I went overboard and defined them all for consistency in data.lua
"data.raw["planet"].naufulglebunusilo.map_gen_settings.property_expression_names =
{
elevation = "vulcanus_elevation",
temperature = "vulcanus_temperature",
moisture = "vulcanus_moisture",
aux = "vulcanus_aux",
cliffiness = "cliffiness_basic",
cliff_elevation = "cliff_elevation_from_elevation",
-- Add ore expressions
["entity:tungsten-ore:probability"] = "vulcanus_tungsten_ore_probability",
["entity:tungsten-ore:richness"] = "vulcanus_tungsten_ore_richness",
["entity:coal:probability"] = "vulcanus_coal_probability",
["entity:coal:richness"] = "vulcanus_coal_richness",
["entity:calcite:probability"] = "vulcanus_calcite_probability",
["entity:calcite:richness"] = "vulcanus_calcite_richness",
["entity:sulfuric-acid-geyser:probability"] = "vulcanus_sulfuric_acid_geyser_probability",
["entity:sulfuric-acid-geyser:richness"] = "vulcanus_sulfuric_acid_geyser_richness",
-- Add Fulgora Scrap
["entity:scrap:probability"] = "(control:scrap:size > 0)\z
* (1 - fulgora_starting_mask)\z
* (min((fulgora_structure_cells < min(0.1 * frequency, 0.05 + 0.05 * frequency))\z
* (1 + fulgora_structure_subnoise) * abs_mult_height_over * fulgora_artificial_mask\z
+ (fulgora_spots_prebanding < (1.2 + 0.4 * linear_size)) * fulgora_vaults_and_starting_vault * 10,\z
0.5) * (1 - fulgora_road_paving_2c))",
["entity:scrap:richness"] = "(1 + fulgora_structure_subnoise) * 1000 * (7 / (6 + frequency) + 100 * fulgora_vaults_and_starting_vault) * richness",
-- Add Aquilo Ores
["entity:lithium-brine:probability"] = "aquilo_lithium_brine_probability",
["entity:lithium-brine:richness"] = "aquilo_lithium_brine_richness",
["entity:fluorine-vent:probability"] = "aquilo_fluorine_vent_probability",
["entity:fluorine-vent:richness"] = "aquilo_fluorine_vent_richness",
-- Add Nauvis Ores
["entity:iron-ore:probability"] = "iron_ore_probability",
["entity:iron-ore:richness"] = "iron_ore_richness_expression",
["entity:copper-ore:probability"] = "copper_ore_probability",
["entity:copper-ore:richness"] = "copper_ore_richness_expression",
["entity:stone:probability"] = "stone_probability",
["entity:stone:richness"] = "stone_richness_expression",
["entity:uranium-ore:probability"] = "uranium_ore_probability",
["entity:uranium-ore:richness"] = "uranium_ore_richness_expression",
["entity:crude-oil:probability"] = "crude_oil_probability",
["entity:crude-oil:richness"] = "crude_oil_richness_expression"
}
"
as well as making another helper file for the defines themselves in /prototype/planet-map-gen-expressions.lua
"-- To add a new ore:
-- 1. Add any needed constants (like spacing) to the Constants section
-- 2. Add probability and richness expressions following the existing patterns based on each planet's ores
data:extend{
-- Constants
{
type = "noise-expression",
name = "vulcanus_ore_spacing",
expression = 128
},
-- Resource noise helpers
{
type = "noise-expression",
name = "vulcanus_resource_wobble_x",
expression = "vulcanus_wobble_x + 0.25 * vulcanus_wobble_large_x"
},
{
type = "noise-expression",
name = "vulcanus_resource_wobble_y",
expression = "vulcanus_wobble_y + 0.25 * vulcanus_wobble_large_y"
},
-- Vulcanus Ore richness and probabilities
{
type = "noise-expression",
name = "vulcanus_tungsten_ore_probability",
expression = "(control:tungsten_ore:size > 0) * (1000 * ((1 + vulcanus_tungsten_ore_region) * random_penalty_between(0.9, 1, 1) - 1))"
},
{
type = "noise-expression",
name = "vulcanus_tungsten_ore_richness",
expression = "vulcanus_tungsten_ore_region * random_penalty_between(0.9, 1, 1) * 10000"
},
{
type = "noise-expression",
name = "vulcanus_coal_probability",
expression = "(control:vulcanus_coal:size > 0) * (1000 * ((1 + vulcanus_coal_region) * random_penalty_between(0.9, 1, 1) - 1))"
},
{
type = "noise-expression",
name = "vulcanus_coal_richness",
expression = "vulcanus_coal_region * random_penalty_between(0.9, 1, 1) * 18000"
},
{
type = "noise-expression",
name = "vulcanus_calcite_probability",
expression = "(control:calcite:size > 0) * (1000 * ((1 + vulcanus_calcite_region) * random_penalty_between(0.9, 1, 1) - 1))"
},
{
type = "noise-expression",
name = "vulcanus_calcite_richness",
expression = "vulcanus_calcite_region * random_penalty_between(0.9, 1, 1) * 24000"
},
{
type = "noise-expression",
name = "vulcanus_sulfuric_acid_geyser_probability",
expression = "(control:sulfuric_acid_geyser:size > 0) * (0.025 * ((vulcanus_sulfuric_acid_region_patchy > 0) + 2 * vulcanus_sulfuric_acid_region_patchy))"
},
{
type = "noise-expression",
name = "vulcanus_sulfuric_acid_geyser_richness",
expression = "(vulcanus_sulfuric_acid_region > 0) * random_penalty_between(0.5, 1, 1) * 80000 * 40"
},
-- Aquilo Resource Constants
{
type = "noise-expression",
name = "aquilo_spot_size",
expression = 30
},
{
type = "noise-expression",
name = "aquilo_angle",
expression = "map_seed_normalized * 3600"
},
-- Aquilo Starting Resource Spots
{
type = "noise-expression",
name = "aquilo_starting_crude_oil",
expression = "starting_spot_at_angle{angle = aquilo_angle, distance = 40, radius = aquilo_spot_size * 0.8, x_distortion = 0, y_distortion = 0}"
},
{
type = "noise-expression",
name = "aquilo_starting_lithium_brine",
expression = "starting_spot_at_angle{angle = aquilo_angle + 120, distance = 80, radius = aquilo_spot_size * 0.6, x_distortion = 0, y_distortion = 0}"
},
{
type = "noise-expression",
name = "aquilo_starting_fluorine_vent",
expression = "starting_spot_at_angle{angle = aquilo_angle + 240, distance = 160, radius = aquilo_spot_size * 0.6, x_distortion = 0, y_distortion = 0}"
},
-- Aquilo Resource Probabilities and Richness
{
type = "noise-expression",
name = "aquilo_crude_oil_probability",
expression = "(control:aquilo_crude_oil:size > 0) * (0.015 * aquilo_starting_crude_oil)"
},
{
type = "noise-expression",
name = "aquilo_crude_oil_richness",
expression = "aquilo_starting_crude_oil * 1440000 * control:aquilo_crude_oil:richness"
},
{
type = "noise-expression",
name = "aquilo_lithium_brine_probability",
expression = "(control:lithium_brine:size > 0) * (0.012 * aquilo_starting_lithium_brine)"
},
{
type = "noise-expression",
name = "aquilo_lithium_brine_richness",
expression = "aquilo_starting_lithium_brine * 720000 * control:lithium_brine:richness"
},
{
type = "noise-expression",
name = "aquilo_fluorine_vent_probability",
expression = "(control:fluorine_vent:size > 0) * (0.008 * aquilo_starting_fluorine_vent)"
},
{
type = "noise-expression",
name = "aquilo_fluorine_vent_richness",
expression = "aquilo_starting_fluorine_vent * 520000 * control:fluorine_vent:richness"
},
-- Nauvis vanilla ores using correct control names
{
type = "noise-expression",
name = "nauvis_iron_ore_probability",
expression = "(control:iron-ore:size > 0) * iron_ore_probability"
},
{
type = "noise-expression",
name = "nauvis_iron_ore_richness",
expression = "iron_ore_richness_expression * control:iron-ore:richness"
},
{
type = "noise-expression",
name = "nauvis_copper_ore_probability",
expression = "(control:copper-ore:size > 0) * copper_ore_probability"
},
{
type = "noise-expression",
name = "nauvis_copper_ore_richness",
expression = "copper_ore_richness_expression * control:copper-ore:richness"
},
{
type = "noise-expression",
name = "nauvis_stone_probability",
expression = "(control:stone:size > 0) * stone_probability"
},
{
type = "noise-expression",
name = "nauvis_stone_richness",
expression = "stone_richness_expression * control:stone:richness"
},
{
type = "noise-expression",
name = "nauvis_uranium_ore_probability",
expression = "(control:uranium-ore:size > 0) * uranium_ore_probability"
},
{
type = "noise-expression",
name = "nauvis_uranium_ore_richness",
expression = "uranium_ore_richness_expression * control:uranium-ore:richness"
}
}"
I think it's relatively safe to merge, if you get a github going we could coordinate changes too.
Also would love to take a stab at mapgen to make the oil oceans and ice planet not to be over-represented, but the above inelegant fix instantly works to make the rest of the ores generate.
I have made "https://github.com/lemonlambda/naufulglebunsilo" if you want to just create a PR instead :)
I too am not finding Calcite, Tungsten, or Sulfuric Biome. Still trying to get it to work. As a sidenote, it appears any substantial changes seem to require first-visit generation of the planet. - Chunk Deleters will not alter the makeup once made from my testing.
[EDIT]
I got things to work, however it was..... really bad looking until I commented out these lines:
----elevation = "vulcanus_elevation",
----temperature = "vulcanus_temperature",
----moisture = "vulcanus_moisture",
----aux = "vulcanus_aux",
----cliffiness = "cliffiness_basic",
----cliff_elevation = "cliff_elevation_from_elevation",
Alot less chaos without those, as the lava and water and cliffs.... all made some deformed spaghetti mess.
In the end, what needs to be done to play normally with this mod?
@vaihen This is the quick and dirty that I fiddled with. In the mod I disabled Fulgora Islands as it was not ideal for me, keep Gleba Water on otherwise there won't be Pentapods. Turn Lightning off, it kills Biters/Pentas on its own making it feel cheaty. This gives a nice icy everything-world, now add the below instructions previously written above. - The commented out fields I use simply remove the Volcanus-style cliffs and lava everywhere.... It looked and felt jank AF with it. Do yourself a favor and save right before you fly here, you can fiddle with settings and reload as needed. Once you get there you're locked in though. Enjoy.
Add this to the bottom of your data.lua in the mod:
data.raw["planet"].naufulglebunusilo.map_gen_settings.property_expression_names =
{
--elevation = "vulcanus_elevation",
--temperature = "vulcanus_temperature",
--moisture = "vulcanus_moisture",
--aux = "vulcanus_aux",
--cliffiness = "cliffiness_basic",
--cliff_elevation = "cliff_elevation_from_elevation",
-- Add ore expressions
["entity:tungsten-ore:probability"] = "vulcanus_tungsten_ore_probability",
["entity:tungsten-ore:richness"] = "vulcanus_tungsten_ore_richness",
["entity:coal:probability"] = "vulcanus_coal_probability",
["entity:coal:richness"] = "vulcanus_coal_richness",
["entity:calcite:probability"] = "vulcanus_calcite_probability",
["entity:calcite:richness"] = "vulcanus_calcite_richness",
["entity:sulfuric-acid-geyser:probability"] = "vulcanus_sulfuric_acid_geyser_probability",
["entity:sulfuric-acid-geyser:richness"] = "vulcanus_sulfuric_acid_geyser_richness",
-- Add Fulgora Scrap
["entity:scrap:probability"] = "(control:scrap:size > 0)\z
* (1 - fulgora_starting_mask)\z
* (min((fulgora_structure_cells < min(0.1 * frequency, 0.05 + 0.05 * frequency))\z
* (1 + fulgora_structure_subnoise) * abs_mult_height_over * fulgora_artificial_mask\z
+ (fulgora_spots_prebanding < (1.2 + 0.4 * linear_size)) * fulgora_vaults_and_starting_vault * 10,\z
0.5) * (1 - fulgora_road_paving_2c))",
["entity:scrap:richness"] = "(1 + fulgora_structure_subnoise) * 1000 * (7 / (6 + frequency) + 100 * fulgora_vaults_and_starting_vault) * richness",
-- Add Aquilo Ores
["entity:lithium-brine:probability"] = "aquilo_lithium_brine_probability",
["entity:lithium-brine:richness"] = "aquilo_lithium_brine_richness",
["entity:fluorine-vent:probability"] = "aquilo_fluorine_vent_probability",
["entity:fluorine-vent:richness"] = "aquilo_fluorine_vent_richness",
-- Add Nauvis Ores
["entity:iron-ore:probability"] = "iron_ore_probability",
["entity:iron-ore:richness"] = "iron_ore_richness_expression",
["entity:copper-ore:probability"] = "copper_ore_probability",
["entity:copper-ore:richness"] = "copper_ore_richness_expression",
["entity:stone:probability"] = "stone_probability",
["entity:stone:richness"] = "stone_richness_expression",
["entity:uranium-ore:probability"] = "uranium_ore_probability",
["entity:uranium-ore:richness"] = "uranium_ore_richness_expression",
["entity:crude-oil:probability"] = "crude_oil_probability",
["entity:crude-oil:richness"] = "crude_oil_richness_expression"
}
Then create this location & file: /prototype/planet-map-gen-expressions.lua
Then add to this file:
data:extend{
-- Constants
{
type = "noise-expression",
name = "vulcanus_ore_spacing",
expression = 128
},
-- Resource noise helpers
{
type = "noise-expression",
name = "vulcanus_resource_wobble_x",
expression = "vulcanus_wobble_x + 0.25 * vulcanus_wobble_large_x"
},
{
type = "noise-expression",
name = "vulcanus_resource_wobble_y",
expression = "vulcanus_wobble_y + 0.25 * vulcanus_wobble_large_y"
},
-- Vulcanus Ore richness and probabilities
{
type = "noise-expression",
name = "vulcanus_tungsten_ore_probability",
expression = "(control:tungsten_ore:size > 0) * (1000 * ((1 + vulcanus_tungsten_ore_region) * random_penalty_between(0.9, 1, 1) - 1))"
},
{
type = "noise-expression",
name = "vulcanus_tungsten_ore_richness",
expression = "vulcanus_tungsten_ore_region * random_penalty_between(0.9, 1, 1) * 10000"
},
{
type = "noise-expression",
name = "vulcanus_coal_probability",
expression = "(control:vulcanus_coal:size > 0) * (1000 * ((1 + vulcanus_coal_region) * random_penalty_between(0.9, 1, 1) - 1))"
},
{
type = "noise-expression",
name = "vulcanus_coal_richness",
expression = "vulcanus_coal_region * random_penalty_between(0.9, 1, 1) * 18000"
},
{
type = "noise-expression",
name = "vulcanus_calcite_probability",
expression = "(control:calcite:size > 0) * (1000 * ((1 + vulcanus_calcite_region) * random_penalty_between(0.9, 1, 1) - 1))"
},
{
type = "noise-expression",
name = "vulcanus_calcite_richness",
expression = "vulcanus_calcite_region * random_penalty_between(0.9, 1, 1) * 24000"
},
{
type = "noise-expression",
name = "vulcanus_sulfuric_acid_geyser_probability",
expression = "(control:sulfuric_acid_geyser:size > 0) * (0.025 * ((vulcanus_sulfuric_acid_region_patchy > 0) + 2 * vulcanus_sulfuric_acid_region_patchy))"
},
{
type = "noise-expression",
name = "vulcanus_sulfuric_acid_geyser_richness",
expression = "(vulcanus_sulfuric_acid_region > 0) * random_penalty_between(0.5, 1, 1) * 80000 * 40"
},
-- Aquilo Resource Constants
{
type = "noise-expression",
name = "aquilo_spot_size",
expression = 30
},
{
type = "noise-expression",
name = "aquilo_angle",
expression = "map_seed_normalized * 3600"
},
-- Aquilo Starting Resource Spots
{
type = "noise-expression",
name = "aquilo_starting_crude_oil",
expression = "starting_spot_at_angle{angle = aquilo_angle, distance = 40, radius = aquilo_spot_size * 0.8, x_distortion = 0, y_distortion = 0}"
},
{
type = "noise-expression",
name = "aquilo_starting_lithium_brine",
expression = "starting_spot_at_angle{angle = aquilo_angle + 120, distance = 80, radius = aquilo_spot_size * 0.6, x_distortion = 0, y_distortion = 0}"
},
{
type = "noise-expression",
name = "aquilo_starting_fluorine_vent",
expression = "starting_spot_at_angle{angle = aquilo_angle + 240, distance = 160, radius = aquilo_spot_size * 0.6, x_distortion = 0, y_distortion = 0}"
},
-- Aquilo Resource Probabilities and Richness
{
type = "noise-expression",
name = "aquilo_crude_oil_probability",
expression = "(control:aquilo_crude_oil:size > 0) * (0.015 * aquilo_starting_crude_oil)"
},
{
type = "noise-expression",
name = "aquilo_crude_oil_richness",
expression = "aquilo_starting_crude_oil * 1440000 * control:aquilo_crude_oil:richness"
},
{
type = "noise-expression",
name = "aquilo_lithium_brine_probability",
expression = "(control:lithium_brine:size > 0) * (0.012 * aquilo_starting_lithium_brine)"
},
{
type = "noise-expression",
name = "aquilo_lithium_brine_richness",
expression = "aquilo_starting_lithium_brine * 720000 * control:lithium_brine:richness"
},
{
type = "noise-expression",
name = "aquilo_fluorine_vent_probability",
expression = "(control:fluorine_vent:size > 0) * (0.008 * aquilo_starting_fluorine_vent)"
},
{
type = "noise-expression",
name = "aquilo_fluorine_vent_richness",
expression = "aquilo_starting_fluorine_vent * 520000 * control:fluorine_vent:richness"
},
-- Nauvis vanilla ores using correct control names
{
type = "noise-expression",
name = "nauvis_iron_ore_probability",
expression = "(control:iron-ore:size > 0) * iron_ore_probability"
},
{
type = "noise-expression",
name = "nauvis_iron_ore_richness",
expression = "iron_ore_richness_expression * control:iron-ore:richness"
},
{
type = "noise-expression",
name = "nauvis_copper_ore_probability",
expression = "(control:copper-ore:size > 0) * copper_ore_probability"
},
{
type = "noise-expression",
name = "nauvis_copper_ore_richness",
expression = "copper_ore_richness_expression * control:copper-ore:richness"
},
{
type = "noise-expression",
name = "nauvis_stone_probability",
expression = "(control:stone:size > 0) * stone_probability"
},
{
type = "noise-expression",
name = "nauvis_stone_richness",
expression = "stone_richness_expression * control:stone:richness"
},
{
type = "noise-expression",
name = "nauvis_uranium_ore_probability",
expression = "(control:uranium-ore:size > 0) * uranium_ore_probability"
},
{
type = "noise-expression",
name = "nauvis_uranium_ore_richness",
expression = "uranium_ore_richness_expression * control:uranium-ore:richness"
}
}
Okay, this is a bit complicated. I'll try to check)
I have implemented these fixes