Page 1 of 1

[0.17.41] Robots approach but never enter modded roboport

Posted: Sat May 18, 2019 10:34 am
by AngeloidBeta
I have a modded roboport entity with a void energy source; it is intended to provide logistic network connection and robot/repair pack storage, but to be unable to charge robots. No matter how I adjust the entity attributes, robots looking for a home while not in need of charging will approach the entity and hover at it forever, without ever entering it. Robots that do need charging correctly avoid it altogether. While I could see this being simply a matter of a roboport with no charging stations being unsupported, there is nothing to suggest this in the roboport documentation, so filing it as a bug. This is the latest prototype definition I've tried (some of the attributes are a little odd because I've extracted this from the output of utility functions that also build several other prototypes):

EDIT: Adding charging stations and switching to an electric power source did nothing to help, so I'm at a loss for what's wrong.

EDIT 2: It turns out that a combination of the request_to_open_door_timeout and the lack of even one charging station is responsible. Once the timeout is set at or above 1.0 and at least one charging station is available, the roboport works normally. Unfortunately this isn't my desired configuration; it makes a no-charging roboport effectively impossible to create.

Code: Select all

    type = 'roboport',
    name = 'logistic-base-station',
    icon = '__MyMod__/graphics/icons/logistic-base-station.png',
    icon_size = 32,
    flags = {"placeable-player", "player-creation"},
    minable = {mining_time = 0.1, result = 'logistic-base-station'},
    max_health = 500,
    corpse = 'big-remnants',
    dying_explosion = 'big-explosion',
    allowed_effects = {"consumption", "speed", "productivity", "pollution"},
    resistances = {{type = "fire", percent = 70}},
    working_sound = data.raw['roboport']['roboport'].working_sound,
    vehicle_impact_sound = data.raw['roboport']['roboport'].vehicle_impact_sound,
    scale_entity_info_icon = true,
    energy_source = {type = "void", emissions_per_minute = 100},
    logistics_radius = 50,
    construction_radius = 110,
    logistic_connection_distance = 51,
    base = { layers = { -- 3 layers of graphics } },
    base_animation = {layers = { -- 3 layers of graphics } },
    open_door_trigger_effect = {{type = "play-sound", sound = {filename = "__base__/sound/roboport-door.ogg", volume = 1.0}}},
    close_door_trigger_effect = {{type = "play-sound", sound = {filename = "__base__/sound/roboport-door.ogg", volume = 0.75}}},
    robot_slots_count = 10,
    material_slots_count = 10,
    request_to_open_door_timeout = 1.0,
    spawn_and_station_height = 1.5,
    energy_usage = "1kW", -- have also tried setting this to very small values
    charging_energy = "1kW", -- have also tried setting this to very small values
    recharge_minimum = "1TJ", -- have also tried setting this to 0 and less huge values
    circuit_wire_max_distance = 0,
    corpse = "medium-remnants",
    dying_explosion = "medium-explosion",
    base_patch = { -- graphics },
    door_animation_up = data.raw['roboport']['roboport'].door_animation_up,
    door_animation_down = data.raw['roboport']['roboport'].door_animation_down,
    recharging_animation = { -- graphics },
    charge_approach_distance = 0.1,
    draw_logistic_radius_visualization = true,
    draw_construction_radius_visualization = true,
    collision_box = data.raw['roboport']['roboport'].collision_box,
    selection_box = data.raw['roboport']['roboport'].selection_box,
    circuit_wire_connection_point = data.raw['roboport']['roboport'].circuit_wire_connection_point,
    circuit_connector_sprites = data.raw['roboport']['roboport'].circuit_connector_sprites,
    default_available_logistic_output_signal = data.raw['roboport']['roboport'].default_available_logistic_output_signal,
    default_total_logistic_output_signal = data.raw['roboport']['roboport'].default_total_logistic_output_signal,
    default_available_construction_output_signal = data.raw['roboport']['roboport'].default_available_construction_output_signal,
    default_total_construction_output_signal = data.raw['roboport']['roboport'].default_total_construction_output_signal,

Re: [0.17.41] Robots approach but never enter modded roboport

Posted: Sat May 18, 2019 10:29 pm
by Rseding91
I'm inclined to say that a if a roboport has inventory slots it must have charging ports. Roboports where built with this assumption and it makes sense that things break if it's not kept true.

Re: [0.17.41] Robots approach but never enter modded roboport

Posted: Sat May 18, 2019 10:35 pm
by AngeloidBeta
Hm, yeah, I can see how that works after tinkering some more. In that case would it make sense to make failure to provide charging ports a hard error at startup if the roboport has inventory slots? It took me a long while to come to grips with this not being possible and understand why it was having game-breaking results; an immediate "you just can't do that" would have saved me a lot of time and confusion. I realize the game can't check for every possible invalid combination of prototype attributes, but this one seems like something it's not unreasonable for someone playing with logistics mods to try.

Re: [0.17.41] Robots approach but never enter modded roboport

Posted: Sat May 18, 2019 10:56 pm
by Rseding91
The request_to_open_door_timeout of 0 I've fixed for the next version of 0.17.