Vulcanus Lava Power


Power Gen. on Vulcanus now uses lava / water -> steam

Content
2 months ago
2.0
245
Power

i pipe connection

2 months ago
(updated 2 months ago)

The pipe connection logic could be optimized. Directly connecting regular pipes to heat pipes feels rather counterintuitive. A better approach might be to restrict connections to both ends of the heat pipe.
Take the top connection as an example:
Current setup: Empty space | Heat Pipe/Pipe | Empty space
Proposed setup: Regular Pipe | Heat Pipe | Pipe

2 months ago

I agree, I don't like that either.

Are you think of a code change or an art change? Either a picture or a pull request on git I'd love to see what you mean. I spent an hour trying to get the pipes working at all, I'm not fully happy with the ending result.

Maybe we update the graphics to just allow lava connection on the east / west and north / south is heat pipes?

2 months ago

local lava_heating_tower = table.deepcopy(data.raw["reactor"]["heating-tower"])

lava_heating_tower.name = "lava-heating-tower"
lava_heating_tower.minable = {mining_time = 0.5, result = "lava-heating-tower"}

lava_heating_tower.energy_source = {
type = "fluid",
burns_fluid = true,
scale_fluid_usage = true,
effectivity = 2.5,
fluid_box = {
volume = 1000,
production_type = "input-output",
filter = "lava",
pipe_connections = {
-- North ×2
{ flow_direction = "input-output", direction = defines.direction.north, position = {-1, -1} },
{ flow_direction = "input-output", direction = defines.direction.north, position = { 1, -1} },
-- East ×2
{ flow_direction = "input-output", direction = defines.direction.east, position = { 1, -1} },
{ flow_direction = "input-output", direction = defines.direction.east, position = { 1, 1} },
-- South ×2
{ flow_direction = "input-output", direction = defines.direction.south, position = {-1, 1} },
{ flow_direction = "input-output", direction = defines.direction.south, position = { 1, 1} },
-- West ×2
{ flow_direction = "input-output", direction = defines.direction.west, position = {-1, -1} },
{ flow_direction = "input-output", direction = defines.direction.west, position = {-1, 1} },
},
},
maximum_temperature = 1000,
specific_heat = settings.startup["vlp-power-production"].value .. "MJ",
max_transfer = settings.startup["vlp-power-production"].value .. "MW",
}

lava_heating_tower.heat_buffer = data.raw["reactor"]["heating-tower"].heat_buffer

lava_heating_tower.consumption = settings.startup["vlp-power-production"].value .. "MW"

lava_heating_tower.fluid_usage_per_tick = settings.startup["vlp-lava-consumption"] and
settings.startup["vlp-lava-consumption"].value or 1

lava_heating_tower.max_temperature = 1000

lava_heating_tower.heating_tower_tint = {r = 0.6, g = 0.2, b = 0.9, a = 1.0}

lava_heating_tower.fixed_direction = false

local lava_pipe_pictures = assembler3pipepictures()

lava_heating_tower.energy_source.fluid_box.pipe_covers = pipecoverspictures()
lava_heating_tower.energy_source.fluid_box.pipe_picture = lava_pipe_pictures
for _, conn in pairs(lava_heating_tower.energy_source.fluid_box.pipe_connections) do
conn.secondary_draw_order = -10
end
lava_heating_tower.energy_source.fluid_box.secondary_draw_order = -10

data:extend({lava_heating_tower})

-- Create the item
local lava_heating_tower_item = table.deepcopy(data.raw["item"]["heating-tower"])
lava_heating_tower_item.name = "lava-heating-tower"
lava_heating_tower_item.place_result = "lava-heating-tower"
lava_heating_tower_item.order = "b[steam-power]-d[lava-heating-tower]"

data:extend({lava_heating_tower_item})

-- Create the recipe (requires tungsten plates, pipes, and copper)
data:extend({
{
type = "recipe",
name = "lava-heating-tower",
enabled = false,
energy_required = 10,
ingredients = {
{type = "item", name = "tungsten-carbide", amount = 40},
{type = "item", name = "pipe", amount = 10},
{type = "item", name = "copper-plate", amount = 50}
},
results = {{type = "item", name = "lava-heating-tower", amount = 1}}
}
})

-- Add recipe unlock to tungsten-carbide technology
table.insert(data.raw.technology["tungsten-carbide"].effects, {
type = "unlock-recipe",
recipe = "lava-heating-tower"
})

-- Modify acid neutralization to produce cold steam (120°C)
if data.raw.recipe["acid-neutralisation"] then
local acid_recipe = data.raw.recipe["acid-neutralisation"]

-- Update the results to specify cold steam temperature
for _, result in pairs(acid_recipe.results) do
if result.name == "steam" or result[1] == "steam" then
result.temperature = 40
end
end
end

if data.raw.fluid["lava"] then
data.raw.fluid["lava"].fuel_value = settings.startup['vlp-lava-energy'].value .. "kJ"
--data.raw.fluid["lava"].fuel_value = "kJ" -- Energy per unit of lava
data.raw.fluid["lava"].fuel_category = "lava" -- Or create custom category
end

2 months ago

I’ve fixed your code.

2 months ago

Thanks! Those changes have been merged and released

New response