1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2024-12-12 10:04:40 +02:00

Change line endings for safety_ore.lua

This commit is contained in:
James Gillham 2024-02-24 16:48:31 +00:00
parent cc2e19efc0
commit 5f813c5918

View File

@ -1,159 +1,159 @@
--- Safety Ores, by R. Nukem, inspired by Zengief
--- all local resources
local RS = require 'map_gen.shared.redmew_surface'
local MGSP = require 'resources.map_gen_settings'
local ScenarioInfo = require 'features.gui.info'
local config = global.config
local RE = require 'map_gen.shared.entity_placement_restriction'
local Token = require 'utils.token'
local Event = require 'utils.event'
--- local math functions
local floor = math.floor
--- Scenario Info
ScenarioInfo.set_map_name('Safety Ores')
ScenarioInfo.set_map_description('Welcome to Safety Ores.\nOre patches are the only stable ground on this world. All factory buildings must be placed on ores or they will collapse.')
ScenarioInfo.set_map_extra_info(
'Our engineers have only been able to build the following outside the stability of our ore patches:\n -rails \n -rail signals\n -power poles\n -offshore pumps\n -pumpjacks\n -pipes\n-vehicles\n-robots')
ScenarioInfo.set_new_info(
[[
2024-02-08 - R. Nukem
- Initial Map Creation
]]
)
--- Market Config
config.currency = nil
config.market.enabled = false
config.player_rewards.enabled = false
--- Ore Settings. Since we can only build on ore patches high size is recommended.
--- With high size, lower richness seems intuitive. Frequency is the big ???
local ore_size = 6
local ore_richness = 0.166
local ore_freq = 0.166
--- Create map_gen table for ores
local ore_settings = {
autoplace_controls = {
coal = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
['copper-ore'] = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
['crude-oil'] = {
frequency = 0.25,
richness = 2,
size = 0.25
},
['iron-ore'] = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
stone = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
['uranium-ore'] = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
}
}
}
--- change enemy autoplace controls
local enemy_settings = {
autoplace_controls = {
['enemy-base'] = {
frequency = 0.25,
richness = 1,
size = 1
}
}
}
--- Set map_gen settings
RS.set_map_gen_settings(
{
MGSP.default,
ore_settings,
enemy_settings
}
)
--- Set Item Restrictions
--- Items allowed everywhere
RE.add_allowed({
'small-electric-pole',
'medium-electric-pole',
'big-electric-pole',
'rail',
'straight-rail',
'curved-rail',
'pumpjack',
'pipe',
'pipe-to-ground',
'rail-signal',
'rail-chain-signal',
'offshore-pump',
'train-stop',
'pump',
'car',
'tank',
'spidertron',
'defender',
'destroyer',
'distractor',
'construction-robot',
'logistic-robot',
'locomotive',
'cargo-wagon',
'fluid-wagon',
'artillery-wagon'
})
--- The logic for checking that there are resources under the entity's position
RE.set_keep_alive_callback(
Token.register(
function(entity)
local box = entity.bounding_box
if entity.surface.count_entities_filtered {area = box, type = 'resource', limit = 1} > 0 then
return true
end
end
)
)
--- Warning for players when their entities are destroyed
local function on_destroy(event)
local p = event.player
if p and p.valid then
p.surface.create_entity{name="flying-text", position = p.position, text = 'You can only build that on top of ores, the ground is too soft'}
end
end
Event.add(RE.events.on_restricted_entity_destroyed, on_destroy)
--- Spawn stone around pumpjacks so oil can be defended
local function on_built_pumpjack(event)
local size = 7 -- size in all directions from center. total size = 2x+1
local density = 1 -- Every time a pumpjack is placed this much stone is added
local entity = event.created_entity
if not entity or not entity.valid then
return
end
--- calculate center of bounding box
local box = entity.bounding_box
local center_x = floor((box.left_top.x + box.right_bottom.x)/2)
local center_y = floor((box.left_top.y + box.right_bottom.y)/2)
--- If a pumpjack is built, create a 2x+1 square of stone centered on the pumpjack
if entity.name == 'pumpjack' then
for x = center_x - size, center_x + size do
for y = center_y - size, center_y + size do
if entity.surface.get_tile(x, y).collides_with("ground-tile") then
entity.surface.create_entity({name="stone", amount=density, position={x, y}})
end
end
end
end
end
Event.add(defines.events.on_robot_built_entity, on_built_pumpjack)
Event.add(defines.events.on_built_entity, on_built_pumpjack)
--- To Do:
--- Safety Ores, by R. Nukem, inspired by Zengief
--- all local resources
local RS = require 'map_gen.shared.redmew_surface'
local MGSP = require 'resources.map_gen_settings'
local ScenarioInfo = require 'features.gui.info'
local config = global.config
local RE = require 'map_gen.shared.entity_placement_restriction'
local Token = require 'utils.token'
local Event = require 'utils.event'
--- local math functions
local floor = math.floor
--- Scenario Info
ScenarioInfo.set_map_name('Safety Ores')
ScenarioInfo.set_map_description('Welcome to Safety Ores.\nOre patches are the only stable ground on this world. All factory buildings must be placed on ores or they will collapse.')
ScenarioInfo.set_map_extra_info(
'Our engineers have only been able to build the following outside the stability of our ore patches:\n -rails \n -rail signals\n -power poles\n -offshore pumps\n -pumpjacks\n -pipes\n-vehicles\n-robots')
ScenarioInfo.set_new_info(
[[
2024-02-08 - R. Nukem
- Initial Map Creation
]]
)
--- Market Config
config.currency = nil
config.market.enabled = false
config.player_rewards.enabled = false
--- Ore Settings. Since we can only build on ore patches high size is recommended.
--- With high size, lower richness seems intuitive. Frequency is the big ???
local ore_size = 6
local ore_richness = 0.166
local ore_freq = 0.166
--- Create map_gen table for ores
local ore_settings = {
autoplace_controls = {
coal = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
['copper-ore'] = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
['crude-oil'] = {
frequency = 0.25,
richness = 2,
size = 0.25
},
['iron-ore'] = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
stone = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
},
['uranium-ore'] = {
frequency = ore_freq,
richness = ore_richness,
size = ore_size
}
}
}
--- change enemy autoplace controls
local enemy_settings = {
autoplace_controls = {
['enemy-base'] = {
frequency = 0.25,
richness = 1,
size = 1
}
}
}
--- Set map_gen settings
RS.set_map_gen_settings(
{
MGSP.default,
ore_settings,
enemy_settings
}
)
--- Set Item Restrictions
--- Items allowed everywhere
RE.add_allowed({
'small-electric-pole',
'medium-electric-pole',
'big-electric-pole',
'rail',
'straight-rail',
'curved-rail',
'pumpjack',
'pipe',
'pipe-to-ground',
'rail-signal',
'rail-chain-signal',
'offshore-pump',
'train-stop',
'pump',
'car',
'tank',
'spidertron',
'defender',
'destroyer',
'distractor',
'construction-robot',
'logistic-robot',
'locomotive',
'cargo-wagon',
'fluid-wagon',
'artillery-wagon'
})
--- The logic for checking that there are resources under the entity's position
RE.set_keep_alive_callback(
Token.register(
function(entity)
local box = entity.bounding_box
if entity.surface.count_entities_filtered {area = box, type = 'resource', limit = 1} > 0 then
return true
end
end
)
)
--- Warning for players when their entities are destroyed
local function on_destroy(event)
local p = event.player
if p and p.valid then
p.surface.create_entity{name="flying-text", position = p.position, text = 'You can only build that on top of ores, the ground is too soft'}
end
end
Event.add(RE.events.on_restricted_entity_destroyed, on_destroy)
--- Spawn stone around pumpjacks so oil can be defended
local function on_built_pumpjack(event)
local size = 7 -- size in all directions from center. total size = 2x+1
local density = 1 -- Every time a pumpjack is placed this much stone is added
local entity = event.created_entity
if not entity or not entity.valid then
return
end
--- calculate center of bounding box
local box = entity.bounding_box
local center_x = floor((box.left_top.x + box.right_bottom.x)/2)
local center_y = floor((box.left_top.y + box.right_bottom.y)/2)
--- If a pumpjack is built, create a 2x+1 square of stone centered on the pumpjack
if entity.name == 'pumpjack' then
for x = center_x - size, center_x + size do
for y = center_y - size, center_y + size do
if entity.surface.get_tile(x, y).collides_with("ground-tile") then
entity.surface.create_entity({name="stone", amount=density, position={x, y}})
end
end
end
end
end
Event.add(defines.events.on_robot_built_entity, on_built_pumpjack)
Event.add(defines.events.on_built_entity, on_built_pumpjack)
--- To Do: