1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-02-03 13:12:11 +02:00
This commit is contained in:
MewMew 2019-05-10 12:57:30 +02:00
parent 05908fedb7
commit 04c56edba7
3 changed files with 120 additions and 0 deletions

66
maps/mixed_railworld.lua Normal file
View File

@ -0,0 +1,66 @@
local event = require 'utils.event'
require "modules.spawners_contain_acid"
require "modules.dynamic_landfill"
require "modules.satellite_score"
require "modules.dangerous_nights"
require "on_tick_schedule"
require "modules.splice_double"
require "modules.mineable_wreckage_yields_scrap"
local function init_surface()
if game.surfaces["mixed_railworld"] then return game.surfaces["mixed_railworld"] end
local map_gen_settings = {}
map_gen_settings.water = "0.3"
map_gen_settings.starting_area = "2"
map_gen_settings.cliff_settings = {cliff_elevation_interval = 40, cliff_elevation_0 = 40}
map_gen_settings.autoplace_controls = {
["coal"] = {frequency = "7", size = "0.5", richness = "0.5"},
["stone"] = {frequency = "0.3", size = "2.0", richness = "0.5"},
["iron-ore"] = {frequency = "0.3", size = "2.0", richness = "0.5"},
["copper-ore"] = {frequency = "0.3", size = "2.0", richness = "0.5"},
["uranium-ore"] = {frequency = "0.5", size = "1", richness = "0.5"},
["crude-oil"] = {frequency = "0.5", size = "1", richness = "1"},
["trees"] = {frequency = "0.5", size = "0.75", richness = "0.75"},
["enemy-base"] = {frequency = "1", size = "1", richness = "1"}
}
game.map_settings.enemy_expansion.enabled = false
game.difficulty_settings.technology_price_multiplier = 2
local surface = game.create_surface("mixed_railworld", map_gen_settings)
surface.request_to_generate_chunks({x = 0, y = 0}, 1)
surface.force_generate_chunk_requests()
game.forces["player"].set_spawn_position({0,0},game.surfaces["mixed_railworld"])
return surface
end
local function on_player_joined_game(event)
local surface = init_surface()
local player = game.players[event.player_index]
local surface = game.surfaces["mixed_railworld"]
if player.online_time == 0 then
player.teleport(surface.find_non_colliding_position("character", {0,0}, 2, 1), "mixed_railworld")
player.insert({name = 'car', count = 1})
player.insert({name = 'small-lamp', count = 1})
end
end
local function on_chunk_generated(event)
for _, coal in pairs(event.surface.find_entities_filtered({area = event.area, name = {"coal"}})) do
local pos = coal.position
if math.random(1,2) ~= 1 then
event.surface.create_entity({name = "mineable-wreckage", position = coal.position, force = "neutral"})
end
coal.destroy()
end
end
event.add(defines.events.on_chunk_generated, on_chunk_generated)
event.add(defines.events.on_player_joined_game, on_player_joined_game)
require "modules.ores_are_mixed"

View File

@ -0,0 +1,23 @@
local event = require 'utils.event'
local simplex_noise = require 'utils.simplex_noise'.d2
local ore_raffle = {
"iron-ore", "iron-ore", "iron-ore", "copper-ore", "copper-ore", "coal", "stone"
}
local function on_chunk_generated(event)
local surface = event.surface
local ores = surface.find_entities_filtered({area = event.area, name = {"iron-ore", "copper-ore", "coal", "stone"}})
if #ores == 0 then return end
local seed = game.surfaces[1].map_gen_settings.seed
for _, ore in pairs(ores) do
local pos = ore.position
local noise = simplex_noise(pos.x * 0.005, pos.y * 0.005, seed) + simplex_noise(pos.x * 0.01, pos.y * 0.01, seed) * 0.3 + simplex_noise(pos.x * 0.05, pos.y * 0.05, seed) * 0.2
local i = (math.floor(noise * 100) % 7) + 1
surface.create_entity({name = ore_raffle[i], position = ore.position, amount = ore.amount})
ore.destroy()
end
end
event.add(defines.events.on_chunk_generated, on_chunk_generated)

View File

@ -0,0 +1,31 @@
local event = require 'utils.event'
local math_random = math.random
local radius = 16
local targets = {}
for x = radius * -1, radius, 1 do
for y = radius * -1, radius, 1 do
if math.sqrt(x^2 + y^2) <= radius then
targets[#targets + 1] = {x = x, y = y}
end
end
end
local function on_entity_died(event)
if not event.entity.valid then return end
if event.entity.type ~= "unit-spawner" then return end
for _ = 1, math.random(64, 128) do
local i = math.random(1, #targets)
event.entity.surface.create_entity({
name = "acid-stream-worm-medium",
position = event.entity.position,
force = event.entity.force.name,
source = event.entity.position,
target = {x = event.entity.position.x + targets[i].x, y = event.entity.position.y + targets[i].y},
max_range = radius,
speed = 0.001
})
end
end
event.add(defines.events.on_entity_died, on_entity_died)