Prototype/Roboport: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(0.16)
m (→‎Mandatory properties: Factorio uses watts in the roboport prototype, so describing charging_energy with power seems more appropriate)
 
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
== Basics ==
{{Prototype parent|Prototype/EntityWithOwner}}
A [[roboport]]. Based on [[Prototype/EntityWithHealth]].
A [[roboport]].
 
{{Prototype TOC|roboport}}


== Mandatory properties ==
== Mandatory properties ==
This prototype inherits all the properties from [[Prototype/EntityWithHealth]].
This prototype inherits all the properties from [[Prototype/EntityWithOwner]].
 
=== energy_source ===
'''Type''': [[Types/EnergySource]]
 
The roboport's electric energy source. Must be an electric energy source.


=== energy_usage ===
{{Prototype property|energy_source|[[Types/EnergySource|EnergySource]]}}
'''Type''': [[Types/Energy]]
The roboport's energy source. Must be an electric or void energy source.


{{Prototype property|energy_usage|[[Types/Energy|Energy]]}}
The amount of energy the roboport uses when idle.
The amount of energy the roboport uses when idle.


=== recharge_minimum ===
{{Prototype property|recharge_minimum|[[Types/Energy|Energy]]}}
'''Type''': [[Types/Energy]]
Minimum charge that the roboport has to have after a blackout (0 charge/buffered energy) to begin working again. Additionally, freshly placed roboports will have their energy buffer filled with <code>0.25 × recharge_minimum</code> energy.


=== robot_slots_count ===
Must be larger than or equal to <code>energy_usage</code> otherwise during low power the roboport will toggle on and off every tick.
'''Type''': [[Types/ItemStackIndex]]


{{Prototype property|robot_slots_count|[[Types/ItemStackIndex|ItemStackIndex]]}}
The number of robot slots in the roboport.
The number of robot slots in the roboport.


=== material_slots_count ===
{{Prototype property|material_slots_count|[[Types/ItemStackIndex|ItemStackIndex]]}}
'''Type''': [[Types/ItemStackIndex]]
 
The number of repair pack slots in the roboport.
The number of repair pack slots in the roboport.


=== base ===
{{Prototype property|base|[[Types/Sprite|Sprite]]}}
'''Type''': [[Types/Sprite]]
 
=== base_patch ===
'''Type''': [[Types/Sprite]]


=== base_animation ===
{{Prototype property|base_patch|[[Types/Sprite|Sprite]]}}
'''Type''': [[Types/Animation]]


{{Prototype property|base_animation|[[Types/Animation|Animation]]}}
The animation played when the roboport is idle.
The animation played when the roboport is idle.


=== door_animation_up ===
{{Prototype property|door_animation_up|[[Types/Animation|Animation]]}}
'''Type''': [[Types/Animation]]
 
=== door_animation_down ===
'''Type''': [[Types/Animation]]


=== request_to_open_door_timeout ===
{{Prototype property|door_animation_down|[[Types/Animation|Animation]]}}
'''Type''': [[Types/uint]]


=== recharging_animation ===
{{Prototype property|request_to_open_door_timeout|[[Types/uint32|uint32]]}}
'''Type''': [[Types/Animation]]


{{Prototype property|recharging_animation|[[Types/Animation|Animation]]}}
The animation played at each charging point when a robot is charging there.
The animation played at each charging point when a robot is charging there.


=== spawn_and_station_height ===
{{Prototype property|spawn_and_station_height|[[Types/float|float]]}}
'''Type''': [[Types/float]]
 
Presumably states the height of the charging stations and thus an additive offset for the charging_offsets.
Presumably states the height of the charging stations and thus an additive offset for the charging_offsets.


=== charge_approach_distance ===
{{Prototype property|charge_approach_distance|[[Types/float|float]]}}
'''Type''': [[Types/float]]
The distance (in tiles) from the roboport at which robots will wait to charge.
 
Notably, if the robot is already in range, then it will simply wait at its current position.
Presumably, the distance from the roboport at which robots will wait to charge.
 
=== logistics_radius ===
'''Type''': [[Types/float]]


=== construction_radius ===
{{Prototype property|logistics_radius|[[Types/float|float]]}}
'''Type''': [[Types/float]]
Can't be negative.


=== charging_energy ===
{{Prototype property|construction_radius|[[Types/float|float]]}}
'''Type''': [[Types/Energy]]
Can't be negative.


The amount of energy that is given to a robot per tick.
{{Prototype property|charging_energy|[[Types/Energy|Energy]]}}
The maximum power provided to each charging station.


== Optional properties ==
== Optional properties ==


=== open_door_trigger_effect ===
{{Prototype property|open_door_trigger_effect|[[Types/TriggerEffect|TriggerEffect]]|optional=true}}
'''Type''': [[Types/TriggerEffect]]
 
=== close_door_trigger_effect ===
'''Type''': [[Types/TriggerEffect]]


=== default_available_logistic_output_signal ===
{{Prototype property|close_door_trigger_effect|[[Types/TriggerEffect|TriggerEffect]]|optional=true}}
'''Type''': [[Types/SignalIDConnector]]


=== default_total_logistic_output_signal ===
{{Prototype property|default_available_logistic_output_signal|[[Types/SignalIDConnector|SignalIDConnector]]|optional=true}}
'''Type''': [[Types/SignalIDConnector]]


=== default_available_construction_output_signal ===
{{Prototype property|default_total_logistic_output_signal|[[Types/SignalIDConnector|SignalIDConnector]]|optional=true}}
'''Type''': [[Types/SignalIDConnector]]


=== default_total_construction_output_signal ===
{{Prototype property|default_available_construction_output_signal|[[Types/SignalIDConnector|SignalIDConnector]]|optional=true}}
'''Type''': [[Types/SignalIDConnector]]


=== circuit_wire_connection_point ===
{{Prototype property|default_total_construction_output_signal|[[Types/SignalIDConnector|SignalIDConnector]]|optional=true}}
'''Type''': [[Types/WireConnectionPoint]]


=== circuit_wire_max_distance ===
{{Prototype property|circuit_wire_connection_point|[[Types/WireConnectionPoint|WireConnectionPoint]]|optional=true}}
'''Type''': [[Types/double]]


'''Default''': 0
{{Prototype property|circuit_wire_max_distance|[[Types/double|double]]|0|optional=true}}
The maximum circuit wire distance for this entity.


=== circuit_connector_sprites ===
{{Prototype property|draw_copper_wires|[[Types/bool|bool]]|true|optional=true}}
'''Type''': [[Types/CircuitConnectorSprites]]


=== draw_logistic_radius_visualization ===
{{Prototype property|draw_circuit_wires|[[Types/bool|bool]]|true|optional=true}}
'''Type''': [[Types/bool]]


'''Default''': true
{{Prototype property|circuit_connector_sprites|[[Types/CircuitConnectorSprites|CircuitConnectorSprites]]|optional=true}}


=== draw_construction_radius_visualization ===
{{Prototype property|spawn_and_station_shadow_height_offset|[[Types/float|float]]|0|optional=true}}
'''Type''': [[Types/bool]]


'''Default''': true
{{Prototype property|draw_logistic_radius_visualization|[[Types/bool|bool]]|true|optional=true}}


=== recharging_light ===
{{Prototype property|draw_construction_radius_visualization|[[Types/bool|bool]]|true|optional=true}}
'''Type''': [[Types/LightDefinition]]


{{Prototype property|recharging_light|[[Types/LightDefinition|LightDefinition]]|optional=true}}
The light emitted when charging a robot.
The light emitted when charging a robot.


=== charging_station_count ===
{{Prototype property|charging_station_count|[[Types/uint32|uint32]]|0|optional=true}}
'''Type''': [[Types/uint]]
How many charging points this roboport has. If this is 0, the length of the charging_offsets table is used to calculate the charging station count.
 
'''Default''': 0
 
=== charging_distance ===
'''Type''': [[Types/float]]
 
'''Default''': 0.0
 
=== charging_station_shift ===
'''Type''': [[Types/vector]]
 
=== charging_threshold_distance ===
'''Type''': [[Types/float]]
 
'''Default''': 1.0


=== robot_vertical_acceleration ===
{{Prototype property|charging_distance|[[Types/float|float]]|0.0|optional=true}}
'''Type''': [[Types/float]]


'''Default''': 0.01
{{Prototype property|charging_station_shift|[[Types/vector|vector]]|optional=true}}


=== stationing_offset ===
{{Prototype property|charging_threshold_distance|[[Types/float|float]]|1.0|optional=true}}
'''Type''': [[Types/vector]]
Unused.


The offset from the centre of the roboport at which robots will enter and exit.
{{Prototype property|robot_vertical_acceleration|[[Types/float|float]]|0.01|optional=true}}


=== robot_limit ===
{{Prototype property|stationing_offset|[[Types/vector|vector]]|optional=true}}
'''Type''': [[Types/ItemCountType]]
The offset from the center of the roboport at which robots will enter and exit.


'''Default''': max uint
{{Prototype property|robot_limit|[[Types/ItemCountType|ItemCountType]]|max uint|optional=true}}
Unused.


=== allow_dispatching_robots ===
{{Prototype property|robots_shrink_when_entering_and_exiting|[[Types/bool|bool]]|false|optional=true}}
'''Type''': [[Types/bool]]


'''Default''': true
{{Prototype property|charging_offsets|[[Types/table|table]] of [[Types/vector|vector]]|optional=true}}
The offsets from the center of the roboport at which robots will charge. Only used if charging_station_count is equal to 0.


=== charging_offsets ===
{{Prototype property|logistics_connection_distance|[[Types/float|float]]|optional=true}}
'''Type''': [[Types/table]] of [[Types/vector]]
Must be >= <code>logistics_radius</code>.


The offsets from the centre of the roboport at which robots will charge.
== Example ==
<syntaxhighlight lang="lua">{
  type = "roboport",
  name = "roboport",
  icon = "__base__/graphics/icons/roboport.png",
  icon_size = 64, icon_mipmaps = 4,
  flags = {"placeable-player", "player-creation"},
  minable = {mining_time = 0.1, result = "roboport"},
  max_health = 500,
  corpse = "roboport-remnants",
  dying_explosion = "roboport-explosion",
  collision_box = {{-1.7, -1.7}, {1.7, 1.7}},
  selection_box = {{-2, -2}, {2, 2}},
  resistances =
  {
    {
      type = "fire",
      percent = 60
    },
    {
      type = "impact",
      percent = 30
    }
  },
  energy_source =
  {
    type = "electric",
    usage_priority = "secondary-input",
    input_flow_limit = "5MW",
    buffer_capacity = "100MJ"
  },
  recharge_minimum = "40MJ",
  energy_usage = "50kW",
  charging_energy = "1000kW",
  logistics_radius = 25,
  construction_radius = 55,
  charge_approach_distance = 5,
  robot_slots_count = 7,
  material_slots_count = 7,
  stationing_offset = {0, 0},
  charging_offsets =
  {
    {-1.5, -0.5}, {1.5, -0.5}, {1.5, 1.5}, {-1.5, 1.5}
  },
  working_sound =
  {
      sound = { filename = "__base__/sound/roboport-working.ogg", volume = 0.4 },
      max_sounds_per_type = 3,
      audible_distance_modifier = 0.75
  },
  recharging_light = {intensity = 0.2, size = 3, color = {r = 0.5, g = 0.5, b = 1.0}},
  request_to_open_door_timeout = 15,
  spawn_and_station_height = -0.1,
  draw_logistic_radius_visualization = true,
  draw_construction_radius_visualization = true,
  default_available_logistic_output_signal = {type = "virtual", name = "signal-X"},
  default_total_logistic_output_signal = {type = "virtual", name = "signal-Y"},
  default_available_construction_output_signal = {type = "virtual", name = "signal-Z"},
  default_total_construction_output_signal = {type = "virtual", name = "signal-T"},
  base =
  {
      layers =
      {
        {
          filename = "__base__/graphics/entity/roboport/roboport-base.png",
          width = 143,
          height = 135,
          shift = {0.5, 0.25},
          hr_version =
          {
            filename = "__base__/graphics/entity/roboport/hr-roboport-base.png",
            width = 228,
            height = 277,
            shift = util.by_pixel(2, 7.75),
            scale = 0.5
          }
        },
        {
          filename = "__base__/graphics/entity/roboport/roboport-shadow.png",
          width = 147,
          height = 101,
          draw_as_shadow = true,
          shift = util.by_pixel(28.5, 19.25),
          hr_version =
          {
            filename = "__base__/graphics/entity/roboport/hr-roboport-shadow.png",
            width = 294,
            height = 201,
            draw_as_shadow = true,
            force_hr_shadow = true,
            shift = util.by_pixel(28.5, 19.25),
            scale = 0.5
          }
        }
      }
  },
  base_patch =
  {
      filename = "__base__/graphics/entity/roboport/roboport-base-patch.png",
      priority = "medium",
      width = 69,
      height = 50,
      frame_count = 1,
      shift = {0.03125, 0.203125},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-base-patch.png",
        priority = "medium",
        width = 138,
        height = 100,
        frame_count = 1,
        shift = util.by_pixel(1.5, 5),
        scale = 0.5
      }
  },
  base_animation =
  {
      filename = "__base__/graphics/entity/roboport/roboport-base-animation.png",
      priority = "medium",
      width = 42,
      height = 31,
      frame_count = 8,
      animation_speed = 0.5,
      shift = {-0.5315, -1.9375},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-base-animation.png",
        priority = "medium",
        width = 83,
        height = 59,
        frame_count = 8,
        animation_speed = 0.5,
        shift = util.by_pixel(-17.75, -61.25),
        scale = 0.5
      }
  },
  door_animation_up =
  {
      filename = "__base__/graphics/entity/roboport/roboport-door-up.png",
      priority = "medium",
      width = 52,
      height = 20,
      frame_count = 16,
      shift = {0.015625, -0.890625},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-door-up.png",
        priority = "medium",
        width = 97,
        height = 38,
        frame_count = 16,
        shift = util.by_pixel(-0.25, -29.5),
        scale = 0.5
      }
  },
  door_animation_down =
  {
      filename = "__base__/graphics/entity/roboport/roboport-door-down.png",
      priority = "medium",
      width = 52,
      height = 22,
      frame_count = 16,
      shift = {0.015625, -0.234375},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-door-down.png",
        priority = "medium",
        width = 97,
        height = 41,
        frame_count = 16,
        shift = util.by_pixel(-0.25,-9.75),
        scale = 0.5
      }
  },
  recharging_animation =
  {
      filename = "__base__/graphics/entity/roboport/roboport-recharging.png",
      draw_as_glow = true,
      priority = "high",
      width = 37,
      height = 35,
      frame_count = 16,
      scale = 1.5,
      animation_speed = 0.5,
  },
  water_reflection =
  {
      pictures =
      {
        filename = "__base__/graphics/entity/roboport/roboport-reflection.png",
        priority = "extra-high",
        width = 28,
        height = 28,
        shift = util.by_pixel(0, 75),
        variation_count = 1,
        scale = 5
      },
      rotate = false,
      orientation_to_variation = false
  }
}</syntaxhighlight>

Latest revision as of 18:39, 3 September 2022

Prototype definitions » PrototypeBase » Prototype/Entity » Prototype/EntityWithHealth » Prototype/EntityWithOwner » Prototype/Roboport


A roboport.


Prototype/Roboport — roboport
base::Sprite
base_animation::Animation
base_patch::Sprite
charge_approach_distance::float
charging_energy::Energy
construction_radius::float
door_animation_down::Animation
door_animation_up::Animation
energy_source::EnergySource
energy_usage::Energy
logistics_radius::float
material_slots_count::ItemStackIndex
recharge_minimum::Energy
recharging_animation::Animation
request_to_open_door_timeout::uint32
robot_slots_count::ItemStackIndex
spawn_and_station_height::float
charging_distance::float (optional)
charging_offsets::table of vector (optional)
charging_station_count::uint32 (optional)
charging_station_shift::vector (optional)
charging_threshold_distance::float (optional)
circuit_connector_sprites::CircuitConnectorSprites (optional)
circuit_wire_connection_point::WireConnectionPoint (optional)
circuit_wire_max_distance::double (optional)
close_door_trigger_effect::TriggerEffect (optional)
default_available_construction_output_signal::SignalIDConnector (optional)
default_available_logistic_output_signal::SignalIDConnector (optional)
default_total_construction_output_signal::SignalIDConnector (optional)
default_total_logistic_output_signal::SignalIDConnector (optional)
draw_circuit_wires::bool (optional)
draw_construction_radius_visualization::bool (optional)
draw_copper_wires::bool (optional)
draw_logistic_radius_visualization::bool (optional)
logistics_connection_distance::float (optional)
open_door_trigger_effect::TriggerEffect (optional)
recharging_light::LightDefinition (optional)
robot_limit::ItemCountType (optional)
robot_vertical_acceleration::float (optional)
robots_shrink_when_entering_and_exiting::bool (optional)
spawn_and_station_shadow_height_offset::float (optional)
stationing_offset::vector (optional)
Inherited from Prototype/EntityWithOwner
allow_run_time_change_of_is_military_target::bool (optional)
is_military_target::bool (optional)
Inherited from Prototype/EntityWithHealth
alert_when_damaged::bool (optional)
attack_reaction::AttackReaction (optional)
corpse::string or table of strings (optional)
create_ghost_on_death::bool (optional)
damaged_trigger_effect::TriggerEffect (optional)
dying_explosion::ExplosionDefinition or table of ExplosionDefinition (optional)
dying_trigger_effect::TriggerEffect (optional)
healing_per_tick::float (optional)
hide_resistances::bool (optional)
integration_patch::Sprite4Way (optional)
integration_patch_render_layer::RenderLayer (optional)
loot::Loot (optional)
max_health::float (optional)
random_corpse_variation::bool (optional)
repair_sound::Sound (optional)
repair_speed_modifier::float (optional)
resistances::Resistances (optional)
Inherited from Prototype/Entity
icons, icon, icon_size (IconSpecification)::IconSpecification
additional_pastable_entities::table of string (optional)
alert_icon_scale::float (optional)
alert_icon_shift::vector (optional)
allow_copy_paste::bool (optional)
autoplace::AutoplaceSpecification (optional)
build_base_evolution_requirement::double (optional)
build_grid_size::uint8 (optional)
build_sound::Sound (optional)
close_sound::Sound (optional)
collision_box::BoundingBox (optional)
collision_mask::CollisionMask (optional)
created_effect::Trigger (optional)
created_smoke::CreateTrivialSmokeEffectItem (optional)
drawing_box::BoundingBox (optional)
emissions_per_second::double (optional)
enemy_map_color::Color (optional)
fast_replaceable_group::string (optional)
flags::EntityPrototypeFlags (optional)
friendly_map_color::Color (optional)
hit_visualization_box::BoundingBox (optional)
map_color::Color (optional)
map_generator_bounding_box::BoundingBox (optional)
minable::MinableProperties (optional)
mined_sound::Sound (optional)
mining_sound::Sound (optional)
next_upgrade::string (optional)
open_sound::Sound (optional)
placeable_by::ItemToPlace or table of ItemToPlace (optional)
protected_from_tile_building::bool (optional)
radius_visualisation_specification::RadiusVisualisationSpecification (optional)
remains_when_mined::string or table of string (optional)
remove_decoratives::string (optional)
rotated_sound::Sound (optional)
selectable_in_game::bool (optional)
selection_box::BoundingBox (optional)
selection_priority::uint8 (optional)
shooting_cursor_size::double (optional)
sticker_box::BoundingBox (optional)
subgroup::string (optional)
tile_height::uint32 (optional)
tile_width::uint32 (optional)
trigger_target_mask::TriggerTargetMask (optional)
vehicle_impact_sound::Sound (optional)
water_reflection::WaterReflectionDefinition (optional)
working_sound::WorkingSound (optional)
Inherited from PrototypeBase
name::string
type::string
localised_description::LocalisedString (optional)
localised_name::LocalisedString (optional)
order::Order (optional)

Mandatory properties

This prototype inherits all the properties from Prototype/EntityWithOwner.

energy_source

Type: EnergySource
The roboport's energy source. Must be an electric or void energy source.

energy_usage

Type: Energy
The amount of energy the roboport uses when idle.

recharge_minimum

Type: Energy
Minimum charge that the roboport has to have after a blackout (0 charge/buffered energy) to begin working again. Additionally, freshly placed roboports will have their energy buffer filled with 0.25 × recharge_minimum energy.

Must be larger than or equal to energy_usage otherwise during low power the roboport will toggle on and off every tick.

robot_slots_count

Type: ItemStackIndex
The number of robot slots in the roboport.

material_slots_count

Type: ItemStackIndex
The number of repair pack slots in the roboport.

base

Type: Sprite

base_patch

Type: Sprite

base_animation

Type: Animation
The animation played when the roboport is idle.

door_animation_up

Type: Animation

door_animation_down

Type: Animation

request_to_open_door_timeout

Type: uint32

recharging_animation

Type: Animation
The animation played at each charging point when a robot is charging there.

spawn_and_station_height

Type: float
Presumably states the height of the charging stations and thus an additive offset for the charging_offsets.

charge_approach_distance

Type: float
The distance (in tiles) from the roboport at which robots will wait to charge. Notably, if the robot is already in range, then it will simply wait at its current position.

logistics_radius

Type: float
Can't be negative.

construction_radius

Type: float
Can't be negative.

charging_energy

Type: Energy
The maximum power provided to each charging station.

Optional properties

open_door_trigger_effect

Type: TriggerEffect

close_door_trigger_effect

Type: TriggerEffect

default_available_logistic_output_signal

Type: SignalIDConnector

default_total_logistic_output_signal

Type: SignalIDConnector

default_available_construction_output_signal

Type: SignalIDConnector

default_total_construction_output_signal

Type: SignalIDConnector

circuit_wire_connection_point

Type: WireConnectionPoint

circuit_wire_max_distance

Type: double
Default: 0
The maximum circuit wire distance for this entity.

draw_copper_wires

Type: bool
Default: true

draw_circuit_wires

Type: bool
Default: true

circuit_connector_sprites

Type: CircuitConnectorSprites

spawn_and_station_shadow_height_offset

Type: float
Default: 0

draw_logistic_radius_visualization

Type: bool
Default: true

draw_construction_radius_visualization

Type: bool
Default: true

recharging_light

Type: LightDefinition
The light emitted when charging a robot.

charging_station_count

Type: uint32
Default: 0
How many charging points this roboport has. If this is 0, the length of the charging_offsets table is used to calculate the charging station count.

charging_distance

Type: float
Default: 0.0

charging_station_shift

Type: vector

charging_threshold_distance

Type: float
Default: 1.0
Unused.

robot_vertical_acceleration

Type: float
Default: 0.01

stationing_offset

Type: vector
The offset from the center of the roboport at which robots will enter and exit.

robot_limit

Type: ItemCountType
Default: max uint
Unused.

robots_shrink_when_entering_and_exiting

Type: bool
Default: false

charging_offsets

Type: table of vector
The offsets from the center of the roboport at which robots will charge. Only used if charging_station_count is equal to 0.

logistics_connection_distance

Type: float
Must be >= logistics_radius.

Example

{
  type = "roboport",
  name = "roboport",
  icon = "__base__/graphics/icons/roboport.png",
  icon_size = 64, icon_mipmaps = 4,
  flags = {"placeable-player", "player-creation"},
  minable = {mining_time = 0.1, result = "roboport"},
  max_health = 500,
  corpse = "roboport-remnants",
  dying_explosion = "roboport-explosion",
  collision_box = {{-1.7, -1.7}, {1.7, 1.7}},
  selection_box = {{-2, -2}, {2, 2}},
  resistances =
  {
    {
      type = "fire",
      percent = 60
    },
    {
      type = "impact",
      percent = 30
    }
  },
  energy_source =
  {
    type = "electric",
    usage_priority = "secondary-input",
    input_flow_limit = "5MW",
    buffer_capacity = "100MJ"
  },
  recharge_minimum = "40MJ",
  energy_usage = "50kW",
  charging_energy = "1000kW",
  logistics_radius = 25,
  construction_radius = 55,
  charge_approach_distance = 5,
  robot_slots_count = 7,
  material_slots_count = 7,
  stationing_offset = {0, 0},
  charging_offsets =
  {
    {-1.5, -0.5}, {1.5, -0.5}, {1.5, 1.5}, {-1.5, 1.5}
  },
  working_sound =
  {
      sound = { filename = "__base__/sound/roboport-working.ogg", volume = 0.4 },
      max_sounds_per_type = 3,
      audible_distance_modifier = 0.75
  },
  recharging_light = {intensity = 0.2, size = 3, color = {r = 0.5, g = 0.5, b = 1.0}},
  request_to_open_door_timeout = 15,
  spawn_and_station_height = -0.1,
  draw_logistic_radius_visualization = true,
  draw_construction_radius_visualization = true,
  default_available_logistic_output_signal = {type = "virtual", name = "signal-X"},
  default_total_logistic_output_signal = {type = "virtual", name = "signal-Y"},
  default_available_construction_output_signal = {type = "virtual", name = "signal-Z"},
  default_total_construction_output_signal = {type = "virtual", name = "signal-T"},
  base =
  {
      layers =
      {
        {
          filename = "__base__/graphics/entity/roboport/roboport-base.png",
          width = 143,
          height = 135,
          shift = {0.5, 0.25},
          hr_version =
          {
            filename = "__base__/graphics/entity/roboport/hr-roboport-base.png",
            width = 228,
            height = 277,
            shift = util.by_pixel(2, 7.75),
            scale = 0.5
          }
        },
        {
          filename = "__base__/graphics/entity/roboport/roboport-shadow.png",
          width = 147,
          height = 101,
          draw_as_shadow = true,
          shift = util.by_pixel(28.5, 19.25),
          hr_version =
          {
            filename = "__base__/graphics/entity/roboport/hr-roboport-shadow.png",
            width = 294,
            height = 201,
            draw_as_shadow = true,
            force_hr_shadow = true,
            shift = util.by_pixel(28.5, 19.25),
            scale = 0.5
          }
        }
      }
  },
  base_patch =
  {
      filename = "__base__/graphics/entity/roboport/roboport-base-patch.png",
      priority = "medium",
      width = 69,
      height = 50,
      frame_count = 1,
      shift = {0.03125, 0.203125},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-base-patch.png",
        priority = "medium",
        width = 138,
        height = 100,
        frame_count = 1,
        shift = util.by_pixel(1.5, 5),
        scale = 0.5
      }
  },
  base_animation =
  {
      filename = "__base__/graphics/entity/roboport/roboport-base-animation.png",
      priority = "medium",
      width = 42,
      height = 31,
      frame_count = 8,
      animation_speed = 0.5,
      shift = {-0.5315, -1.9375},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-base-animation.png",
        priority = "medium",
        width = 83,
        height = 59,
        frame_count = 8,
        animation_speed = 0.5,
        shift = util.by_pixel(-17.75, -61.25),
        scale = 0.5
      }
  },
  door_animation_up =
  {
      filename = "__base__/graphics/entity/roboport/roboport-door-up.png",
      priority = "medium",
      width = 52,
      height = 20,
      frame_count = 16,
      shift = {0.015625, -0.890625},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-door-up.png",
        priority = "medium",
        width = 97,
        height = 38,
        frame_count = 16,
        shift = util.by_pixel(-0.25, -29.5),
        scale = 0.5
      }
  },
  door_animation_down =
  {
      filename = "__base__/graphics/entity/roboport/roboport-door-down.png",
      priority = "medium",
      width = 52,
      height = 22,
      frame_count = 16,
      shift = {0.015625, -0.234375},
      hr_version =
      {
        filename = "__base__/graphics/entity/roboport/hr-roboport-door-down.png",
        priority = "medium",
        width = 97,
        height = 41,
        frame_count = 16,
        shift = util.by_pixel(-0.25,-9.75),
        scale = 0.5
      }
  },
  recharging_animation =
  {
      filename = "__base__/graphics/entity/roboport/roboport-recharging.png",
      draw_as_glow = true,
      priority = "high",
      width = 37,
      height = 35,
      frame_count = 16,
      scale = 1.5,
      animation_speed = 0.5,
  },
  water_reflection =
  {
      pictures =
      {
        filename = "__base__/graphics/entity/roboport/roboport-reflection.png",
        priority = "extra-high",
        width = 28,
        height = 28,
        shift = util.by_pixel(0, 75),
        variation_count = 1,
        scale = 5
      },
      rotate = false,
      orientation_to_variation = false
  }
}