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:
parent
cc2e19efc0
commit
5f813c5918
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user