Page 1 of 1
Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Fri Nov 03, 2023 2:13 am
by Glsl2
Hello everyone, I am trying to experiment with an idea I had for a mod. In the mod, I want a beacon-like device to give a slowdown effect (negative speed) to machines around it. Another specification I have is that the machine must have no module slots.
After looking through the documentation I cannot figure out how to do this or if this can even be done. Any advice on this matter would be greatly appreciated.
Re: Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Fri Nov 03, 2023 3:43 am
by sparr
I'm not sure about negative effects, but a common way to achieve the other sort of behavior you're describing is to have a visible dummy entity, and then an invisible entity that does the real work, which would be a beacon with a module in it, all handled transparently by the mod so the player only ever interacts with the dummy entity.
Re: Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Fri Nov 03, 2023 10:06 am
by Glsl2
I see. But how do I attach a invisible entity to the visible entity? Is it done in the control.lua file?
Re: Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Fri Nov 03, 2023 2:06 pm
by BrainGamer_
Glsl2 wrote: ↑Fri Nov 03, 2023 10:06 am
I see. But how do I attach a invisible entity to the visible entity? Is it done in the control.lua file?
Yes you would need to use runtime scripting for this behaviour
Re: Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Fri Nov 03, 2023 6:27 pm
by Glsl2
Can you advise me on how to do this. I have limited experience with the control.lua file.
So after a bit of trial and error I have figured out how to create an invisible entity at the location of the visible entity. How do I use the visible entity to configure the invisible entity?
Re: Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Fri Nov 03, 2023 6:50 pm
by sparr
You would need to register event handlers for when the visible entity gets built, and create the invisible entity. And when the visible entity is destroyed/mined, remove the invisible entity.
Configuring the invisible entity could happen when they player opens the GUI for the visible entity, just create your own GUI next to it.
https://mods.factorio.com/mod/combinator-text is a mod of mine that adds a GUI alongside the vanilla combinator GUI, and there are many other examples in other mods.
Re: Allow beacons-like machine to give an effect without any modules in it to surrounding machines
Posted: Sat Nov 04, 2023 2:04 am
by Glsl2
Erm. While trying to place a machine that creates the invisible entity I got a crash. It's not very descriptive, it says something is wrong with the fluid box, "requestedCount <= prototypes.size() was not true." I have attached the log file below. I assume something is wrong with my fluid box prototype declaration, but I can't figure it out.
Code: Select all
name = "heat-distributer-visible",
type = "assembling-machine",
icon = "filepath"/heat_distribution_plate.png",
icon_size = 64,
gui_title_key = "heat-distributer-visible",
fixed_recipe = "use-steam-to-heat",
energy_usage = "300W",
crafting_categories = {"crafting"},
crafting_speed = 1,
tile_width = 2,
tile_height = 2,
collision_box = {{-1.2, -1.2}, {1.2, 1.2}},
selection_box = {{-1.5, -1.5}, {1.5, 1.5}},
energy_source = {
type = "fluid",
scale_fluid_usage = false,
fluid_usage_per_tick = 3,
fluid_box = {
base_area = 1,
height = 2,
base_level = -1,
pipe_covers = pipecoverspictures(),
burns_fluid = false,
pipe_connections =
{
{type = "input", position = {1.5, 0.5}, filter = "super-heated-steam"},
{type = "input", position = {-1.5, 0.5}, filter = "super-heated-steam"}
},
production_type = "input"
}
},
minable = {mining_time = 0.5, result = "heat-distributer-visible"}
Edit: I have fixed the crash by changing the type to generator and changed energy_source to electric and added fluid_box