1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2024-12-30 23:17:53 +02:00
ComfyFactorio/maps/refactor-io.lua
Gerkiz e91b6a352f 2.0 changes
Change global -> storage
Rework how rendering works
Game prototypes are now stored inside 'prototypes.#'
Renamed entity names
2024-10-22 21:47:11 +02:00

123 lines
4.5 KiB
Lua

--luacheck: ignore
-- Refactor-io -- made by mewmew and p.p
require 'modules.satellite_score'
require 'modules.spawners_contain_biters'
require 'modules.no_blueprint_library'
require 'modules.map_info'
storage.map_info = {}
storage.map_info.main_caption = 'Refactor-io'
storage.map_info.sub_caption = ''
storage.map_info.text =
[[
Hello visitor.
You cannot mine things.
You cannot deconstruct things ... except for with your railgun.
You cannot destroy things ... except the biters, who have been known to hoard railgun darts in their nests.
Have fun <3
]]
local math_random = math.random
-- noobs spawn with things
local function on_player_joined_game(event)
local player = game.players[event.player_index]
local surface = game.surfaces['refactor-io']
if player.online_time == 0 then
local non_colliding_position = surface.find_non_colliding_position('character', { 0, 0 }, 96, 1)
player.teleport(non_colliding_position, surface)
player.insert { name = 'iron-plate', count = 32 }
player.insert { name = 'iron-gear-wheel', count = 16 }
player.insert { name = 'wood', count = 100 }
player.insert { name = 'stone', count = 50 }
player.insert { name = 'pistol', count = 1 }
player.insert { name = 'firearm-magazine', count = 16 }
end
end
-- players always spawn with railgun
local function on_player_respawned(event)
local player = game.players[event.player_index]
player.insert { name = 'railgun', count = 1 }
player.insert { name = 'wood', count = 25 }
end
-- decon planner doesn't work
local function on_marked_for_deconstruction(event)
event.entity.cancel_deconstruction(game.players[event.player_index].force.name)
end
local function on_entity_damaged(event)
if not event.entity.valid then
return
end
if event.entity.force.index == 2 then
return
end
if event.entity.name == 'character' then
return
end
if event.cause then
if event.cause.force.index == 2 then
return
end
if event.cause.name == 'character' then
if event.damage_type.name == 'physical' then
if event.original_damage_amount == 100 then
event.entity.die('player')
return
end
end
end
end
event.entity.health = event.entity.health + event.final_damage_amount
end
local function on_entity_died(event)
if not event.entity.valid then
return
end
if event.entity.type == 'unit-spawner' or event.entity.type == 'turret' then
event.entity.surface.spill_item_stack({ event.entity.position.x, event.entity.position.y + 2 }, { name = 'railgun-dart', count = math.random(0, 3) }, false)
end
end
local function on_init()
game.forces.player.technologies['steel-axe'].researched = true
game.forces.player.manual_mining_speed_modifier = -1000000
local map_gen_settings = {}
map_gen_settings.seed = math.random(1, 999999999)
map_gen_settings.water = 1.25
map_gen_settings.starting_area = 1.5
map_gen_settings.terrain_segmentation = 3.5
map_gen_settings.cliff_settings = { cliff_elevation_interval = 6, cliff_elevation_0 = 6 }
map_gen_settings.autoplace_controls = {
['coal'] = { frequency = 3, size = 0.75, richness = 0.75 },
['stone'] = { frequency = 3, size = 0.75, richness = 0.75 },
['copper-ore'] = { frequency = 3.5, size = 0.95, richness = 0.85 },
['iron-ore'] = { frequency = 3.5, size = 0.95, richness = 0.85 },
['uranium-ore'] = { frequency = 3.5, size = 0.95, richness = 0.85 },
['crude-oil'] = { frequency = 3, size = 0.85, richness = 1 },
['trees'] = { frequency = 2.5, size = 0.85, richness = 1 },
['enemy-base'] = { frequency = 8, size = 1.5, richness = 1 }
}
local surface = game.create_surface('refactor-io', map_gen_settings)
surface.request_to_generate_chunks({ 0, 0 }, 5)
surface.force_generate_chunk_requests()
game.forces.player.set_spawn_position(surface.find_non_colliding_position('character', { 0, 0 }, 96, 1), surface)
end
local event = require 'utils.event'
event.on_init(on_init)
event.add(defines.events.on_entity_damaged, on_entity_damaged)
event.add(defines.events.on_entity_died, on_entity_died)
event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction)
event.add(defines.events.on_player_joined_game, on_player_joined_game)
event.add(defines.events.on_player_respawned, on_player_respawned)