adamo-chemical/facilities.lua
2020-09-29 02:57:47 -04:00

431 lines
9.2 KiB
Lua

local vesselpipecovers = function()
return {
east = {
filename =
"__adamo-chemical__/graphics/"
.."connections/pipe-cover-east-medium.png",
priority = "extra-high",
width = 128,
height = 128,
scale = 0.5
},
west = {
filename =
"__adamo-chemical__/graphics/"
.."connections/pipe-cover-west-medium.png",
priority = "extra-high",
width = 128,
height = 128,
scale = 0.5
},
north = {
filename =
"__adamo-chemical__/graphics/"
.."connections/pipe-cover-north-medium.png",
priority = "extra-high",
width = 128,
height = 128,
scale = 0.5,
},
south = {
filename =
"__adamo-chemical__/graphics/"
.."connections/pipe-cover-south-medium.png",
priority = "extra-high",
width = 128,
height = 128,
scale = 0.5,
},
}
end
local vessel_layers = function()
return {{
filename =
"__adamo-chemical__/graphics/entity/"
.."process-vessel.png",
width = 160,
height = 220,
frame_count = 1,
shift = util.by_pixel(0, -23)
},{
filename =
"__adamo-chemical__/graphics/entity/"
.."process-vessel-shadow.png",
width = 274,
height = 220,
frame_count = 1,
draw_as_shadow = true,
shift = util.by_pixel(58, -26)
}}
end
local vessel_escaping_pressure_layer = function ()
return {
north_position = util.by_pixel(16, 11),
west_position = util.by_pixel(16, 11),
south_position = util.by_pixel(16, 11),
east_position = util.by_pixel(16, 11),
constant_speed = true,
animation = {
filename =
"__adamo-chemical__/graphics/entity/"
.."process-vessel-anim.png",
frame_count = 40,
line_length = 10,
width = 128,
height = 96,
animation_speed = 0.8
}
}
end
local blast_furnace_layers = function(size,speed)
local size = number_or_one(size)
local speed = number_or_one(speed)
return {{
filename =
"__adamo-chemical__/graphics/entity/"
.."hr-blast-furnace.png",
priority = "extra-high",
width = 200,
height = 221,
scale = 0.5*size,
shift = util.by_pixel(
size*0,
size*0
),
},{
filename =
"__base__/graphics/entity/stone-furnace/"
.."hr-stone-furnace-shadow.png",
priority = "extra-high",
line_length = 8,
width = 164,
height = 74,
scale = 0.5*size,
frame_count = 1,
shift = util.by_pixel(
size*42,
size*16
),
draw_as_shadow = true,
},{
filename =
"__base__/graphics/entity/boiler/"
.."hr-boiler-N-shadow.png",
priority = "extra-high",
width = 274,
height = 164,
scale = 0.3*size,
shift = util.by_pixel(
size*26,
size*6
),
draw_as_shadow = true
}}
end
local blast_furnace_fire = function(size,speed)
local size = number_or_one(size)
local speed = number_or_one(speed)
local depth_scale = 0.85
return {
filename =
"__base__/graphics/entity/"
.."stone-furnace/hr-stone-furnace-fire.png",
priority = "extra-high",
animation_speed = speed,
scale = 0.5*depth_scale*size,
line_length = 8,
width = 41,
height = 100,
frame_count = 48,
axially_symmetrical = false,
direction_count = 1,
shift = util.by_pixel(
0/size,
-10/size
),
}
end
local furnace_recipe = {
type = "recipe",
name = "adamo-blast-furnace",
energy_required = 2,
enabled = false,
ingredients = {
{"stone-furnace", 1},
{"pipe", 2},
{"pump", 1},
},
results = {
{"adamo-blast-furnace", 1}
}
}
local furnace_item = {
type = "item",
name = "adamo-blast-furnace",
icon =
"__adamo-chemical__/graphics/icons/"
.."blast-furnace.png",
icon_size = 32,
flags = {},
subgroup = "adamo-chemical-production-machine",
order = "c[adamo-blast-furnace]",
place_result = "adamo-blast-furnace",
stack_size = 25
}
local furnace_entity = {
type = "assembling-machine",
name = "adamo-blast-furnace",
gui_title_key = "adamo-blast-furnace",
has_backer_name = true,
icon =
"__adamo-chemical__/graphics/icons/"
.."blast-furnace.png",
icon_size = 32,
flags = {"placeable-neutral", "player-creation"},
minable = {
hardness = 0.2,
mining_time = 1,
result = "adamo-blast-furnace"
},
module_specification = {
module_slots = 1
},
allowed_effects = {
"consumption",
"speed",
"productivity",
"pollution"
},
max_health = 250,
corpse = "medium-remnants",
vehicle_impact_sound = {
filename = "__base__/sound/car-metal-impact.ogg",
volume = 0.65
},
resistances = {
{ type = "fire", percent = 100 },
{ type = "explosion", percent = 30 },
{ type = "impact", percent = 50 }
},
selection_box = {{-1,-1}, {1,1}},
collision_box = {{-0.99, -0.99}, {0.99, 0.99}},
crafting_speed = 1,
crafting_categories = {"adamo-chemical-firing"},
energy_usage = "150kW",
energy_source = {
type = "burner",
fuel_category = "chemical",
fuel_inventory_size = 1,
emissions_per_minute = 6,
smoke = {{
name = "smoke",
position = {-0.725,-1.275},
frequency = 10,
starting_vertical_speed = 0.12,
deviation = {0.025,0.05}
}}
},
animation = {
layers = blast_furnace_layers()
},
working_visualisations = {{
animation = blast_furnace_fire()
}},
working_sound = {
sound = {
filename = "__base__/sound/furnace.ogg",
volume = 1.6
},
max_sounds_per_type = 3
}
}
data:extend({
furnace_recipe,
furnace_item,
furnace_entity
})
add_recipe_to_tech(
"advanced-material-processing-2",
"adamo-blast-furnace"
)
local process_vessel_recipe = {
type = "recipe",
name = "adamo-chemical-process-vessel",
energy_required = 5,
enabled = false,
ingredients = {
{"concrete", 50},
{"pump",10},
{"electronic-circuit",20},
{"advanced-circuit",20},
{"pipe", 20},
{"steel-plate", 50}
},
results = {{"adamo-chemical-process-vessel", 1}},
}
local process_vessel_item = {
type = "item",
name = "adamo-chemical-process-vessel",
icon = "__adamo-chemical__/graphics/icons/process-vessel.png",
icon_size = 32,
flags = {},
subgroup = "adamo-chemical-production-machine",
order = "g[adamo-chemical-process-vessel]",
place_result = "adamo-chemical-process-vessel",
stack_size = 10
}
local process_vessel_entity = {
type = "assembling-machine",
name = "adamo-chemical-process-vessel",
gui_title_key = "adamo-chemical-process-vessel",
has_backer_name = true,
scale_entity_info_icon = true,
icon = "__adamo-chemical__/graphics/icons/process-vessel.png",
icon_size = 32,
flags = {"placeable-neutral", "player-creation"},
minable = {
mining_time = 3,
result = "adamo-chemical-process-vessel"
},
fast_replaceable_group = "assembling-machine",
max_health = 750,
corpse = "medium-remnants",
dying_explosion = "big-explosion",
collision_box = {{-2.4, -2.4}, {2.4, 2.4}},
selection_box = {{-2.5, -2.5}, {2.5, 2.5}},
module_specification = {
module_slots = 5
},
allowed_effects = {
"consumption",
"speed",
"productivity",
"pollution"
},
crafting_categories = {
"adamo-chemical-hydrolysis",
"adamo-chemical-displacement",
"adamo-chemical-heating",
"adamo-chemical-deposition",
"adamo-chemical-decomposition",
"adamo-chemical-recovery",
"adamo-chemical-activation",
"adamo-chemical-disassociation"
},
result_inventory_size = 0,
crafting_speed = 3,
energy_source = {
type = "electric",
usage_priority = "secondary-input",
emissions_per_minute = 0.06,
},
energy_usage = "750kW",
ingredient_count = 4,
animation = {
layers = vessel_layers()
},
working_visualisations = {
vessel_escaping_pressure_layer()
},
fluid_boxes = {{
production_type = "input",
base_level = -1,
height = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {-1.0,3.0}},
}
},{
production_type = "input",
base_level = -1,
height = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {1.0,-3.0}},
}
},{
production_type = "input",
base_level = -1,
height = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {3.0, 1.0}},
}
},{
production_type = "input",
base_level = -1,
height = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {-3.0,-1.0}},
}
},{
production_type = "output",
base_level = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {-3.0, 2.0}},
}
},{
production_type = "output",
base_level = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {3.0, -2.0}},
}
},{
production_type = "output",
base_level = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {2.0, 3.0}},
}
},{
production_type = "output",
base_level = 1,
pipe_covers = vesselpipecovers(),
pipe_connections = {
{position = {-2.0, -3.0}},
}
}
},
vehicle_impact_sound = {
filename = "__base__/sound/car-metal-impact.ogg",
volume = 0.65
},
working_sound = {
sound = {
filename =
"__adamo-chemical__/sounds/process-vessel.ogg",
volume = 0.6
},
idle_sound = {
filename =
"__adamo-chemical__/sounds/process-vessel.ogg",
volume = 0.1
},
apparent_volume = 2.5
}
}
data:extend({
process_vessel_recipe,
process_vessel_item,
process_vessel_entity
})
if data.raw.technology["advanced-material-processing-3"] then
add_recipe_to_tech(
"advanced-material-processing-3",
"adamo-chemical-process-vessel"
)
else
add_recipe_to_tech(
"logistics-3",
"adamo-chemical-process-vessel"
)
end