mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2024-12-30 23:17:53 +02:00
123 lines
4.4 KiB
Lua
123 lines
4.4 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'
|
|
|
|
global.map_info = {}
|
|
global.map_info.main_caption = 'Refactor-io'
|
|
global.map_info.sub_caption = ''
|
|
global.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)
|