Prototype/EntityWithHealth: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(→‎Extensions: updated extensions)
(1.1.51: Prototype/EntityWithOwner added)
 
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==Basics==
{{Prototype parent|Prototype/Entity}}
The common properties of all entities with health in the game.
Abstract base of all entities with health in the game.
Extends the [[Prototype/Entity]]
 
{{Prototype TOC|''abstract''}}


== Extensions ==
== Extensions ==
<div class="factorio-list">
* [[Prototype/EntityWithOwner]] <abstract>
** [[Prototype/Accumulator]] '''accumulator'''
** [[Prototype/Accumulator]] '''accumulator'''
** [[Prototype/ArtilleryTurret]] '''artillery-turret'''
** [[Prototype/Beacon]] '''beacon'''
** [[Prototype/Beacon]] '''beacon'''
** [[Prototype/Boiler]] '''boiler'''
** [[Prototype/Boiler]] '''boiler'''
** [[Prototype/Character]] '''player'''
** [[Prototype/BurnerGenerator]] '''burner-generator'''
** [[Prototype/Character]] '''character'''
** [[Prototype/Combinator]] <abstract>
** [[Prototype/Combinator]] <abstract>
** [[Prototype/ArithmeticCombinator]] '''arithmetic-combinator'''
*** [[Prototype/ArithmeticCombinator]] '''arithmetic-combinator'''
** [[Prototype/DeciderCombinator]] '''decider-combinator'''
*** [[Prototype/DeciderCombinator]] '''decider-combinator'''
** [[Prototype/ConstantCombinator]] '''constant-combinator'''
** [[Prototype/ConstantCombinator]] '''constant-combinator'''
** [[Prototype/Container]] '''container'''
** [[Prototype/Container]] '''container'''
** [[Prototype/LegacySmartContainer]] '''smart-container''' (unused in the base-game, but exists for migration)
*** [[Prototype/LogisticContainer]] '''logistic-container'''
** [[Prototype/LogisticContainer]] '''logistic-container'''
**** [[Prototype/InfinityContainer]] '''infinity-container'''
** [[Prototype/CraftingMachine]] <abstract>
** [[Prototype/CraftingMachine]] <abstract>
** [[Prototype/AssemblingMachine]] '''assembling-machine'''
*** [[Prototype/AssemblingMachine]] '''assembling-machine'''
*** [[Prototype/RocketSilo]] '''rocket-silo'''
**** [[Prototype/RocketSilo]] '''rocket-silo'''
** [[Prototype/Furnace]] '''furnace'''
*** [[Prototype/Furnace]] '''furnace'''
** [[Prototype/ElectricEnergyInterface]] '''electric-energy-interface'''
** [[Prototype/ElectricEnergyInterface]] '''electric-energy-interface'''
** [[Prototype/ElectricPole]] '''electric-pole'''
** [[Prototype/ElectricPole]] '''electric-pole'''
** [[Prototype/EnemySpawner]] '''unit-spawner'''
** [[Prototype/EnemySpawner]] '''unit-spawner'''
** [[Prototype/Fish]] '''fish'''
** [[Prototype/FlyingRobot]] <abstract>
** [[Prototype/FlyingRobot]] <abstract>
** [[Prototype/CombatRobot]] '''combat-robot'''
*** [[Prototype/CombatRobot]] '''combat-robot'''
** [[Prototype/RobotWithLogisticInterface]] <abstract>
*** [[Prototype/RobotWithLogisticInterface]] <abstract>
*** [[Prototype/ConstructionRobot]] '''construction-robot'''
**** [[Prototype/ConstructionRobot]] '''construction-robot'''
*** [[Prototype/LogisticRobot]] '''logistic-robot'''
**** [[Prototype/LogisticRobot]] '''logistic-robot'''
** [[Prototype/Gate]] '''gate'''
** [[Prototype/Gate]] '''gate'''
** [[Prototype/Generator]] '''generator'''
** [[Prototype/Generator]] '''generator'''
** [[Prototype/HeatInterface]] '''heat-interface'''
** [[Prototype/HeatPipe]] '''heat-pipe'''
** [[Prototype/HeatPipe]] '''heat-pipe'''
** [[Prototype/Inserter]] '''inserter'''
** [[Prototype/Inserter]] '''inserter'''
Line 35: Line 40:
** [[Prototype/Lamp]] '''lamp'''
** [[Prototype/Lamp]] '''lamp'''
** [[Prototype/LandMine]] '''land-mine'''
** [[Prototype/LandMine]] '''land-mine'''
** [[Prototype/LegacyRocketDefense]] '''rocket-defense''' (unused in the base-game, but exists for migration)
** [[Prototype/LinkedContainer]] '''linked-container'''
** [[Prototype/Market]] '''market'''
** [[Prototype/Market]] '''market'''
** [[Prototype/MiningDrill]] '''mining-drill'''
** [[Prototype/MiningDrill]] '''mining-drill'''
** [[Prototype/OffshorePump]] '''offshore-pump'''
** [[Prototype/OffshorePump]] '''offshore-pump'''
** [[Prototype/Pipe]] '''pipe'''
** [[Prototype/Pipe]] '''pipe'''
*** [[Prototype/InfinityPipe]] '''infinity-pipe'''
** [[Prototype/PipeToGround]] '''pipe-to-ground'''
** [[Prototype/PipeToGround]] '''pipe-to-ground'''
** [[Prototype/PlayerPort]] '''player-port'''
** [[Prototype/PlayerPort]] '''player-port'''
Line 47: Line 53:
** [[Prototype/Radar]] '''radar'''
** [[Prototype/Radar]] '''radar'''
** [[Prototype/Rail]] <abstract>
** [[Prototype/Rail]] <abstract>
** [[Prototype/CurvedRail]] '''curved-rail'''
*** [[Prototype/CurvedRail]] '''curved-rail'''
** [[Prototype/StraightRail]] '''straight-rail'''
*** [[Prototype/StraightRail]] '''straight-rail'''
** [[Prototype/RailSignalBase]] <abstract>
** [[Prototype/RailSignalBase]] <abstract>
** [[Prototype/RailChainSignal]] '''rail-chain-signal'''
*** [[Prototype/RailChainSignal]] '''rail-chain-signal'''
** [[Prototype/RailSignal]] '''rail-signal'''
*** [[Prototype/RailSignal]] '''rail-signal'''
** [[Prototype/Reactor]] '''reactor'''
** [[Prototype/Reactor]] '''reactor'''
** [[Prototype/Roboport]] '''roboport'''
** [[Prototype/Roboport]] '''roboport'''
** [[Prototype/SimpleEntity]] '''simple-entity'''
** [[Prototype/SimpleEntityWithOwner]] '''simple-entity-with-owner'''
** [[Prototype/SimpleEntityWithOwner]] '''simple-entity-with-owner'''
** [[Prototype/SimpleEntityWtihForce]] '''simple-entity-with-force'''
*** [[Prototype/SimpleEntityWithForce]] '''simple-entity-with-force'''
** [[Prototype/SolarPanel]] '''solar-panel'''
** [[Prototype/SolarPanel]] '''solar-panel'''
** [[Prototype/StorageTank]] '''storage-tank'''
** [[Prototype/StorageTank]] '''storage-tank'''
** [[Prototype/TrainStop]] '''train-stop'''
** [[Prototype/TrainStop]] '''train-stop'''
** [[Prototype/TransportBeltConnectable]] <abstract>
** [[Prototype/TransportBeltConnectable]] <abstract>
** [[Prototype/Loader]] '''loader'''
*** [[Prototype/LinkedBelt]] '''linked-belt'''
** [[Prototype/Splitter]] '''splitter'''
*** [[Prototype/Loader1x1]] '''loader-1x1'''
** [[Prototype/TransportBelt]] '''transport-belt'''
*** [[Prototype/Loader1x2]] '''loader'''
** [[Prototype/UndergroundBelt]] '''underground-belt'''
*** [[Prototype/Splitter]] '''splitter'''
** [[Prototype/Tree]] '''tree'''
*** [[Prototype/TransportBelt]] '''transport-belt'''
*** [[Prototype/UndergroundBelt]] '''underground-belt'''
** [[Prototype/Turret]] '''turret'''
** [[Prototype/Turret]] '''turret'''
** [[Prototype/AmmoTurret]] '''ammo-turret'''
*** [[Prototype/AmmoTurret]] '''ammo-turret'''
** [[Prototype/ElectricTurret]] '''electric-turret'''
*** [[Prototype/ElectricTurret]] '''electric-turret'''
** [[Prototype/FluidTurret]] '''fluid-turret'''
*** [[Prototype/FluidTurret]] '''fluid-turret'''
** [[Prototype/Unit]] '''unit'''
** [[Prototype/Unit]] '''unit'''
** [[Prototype/Vehicle]] <abstract>
** [[Prototype/Vehicle]] <abstract>
** [[Prototype/Car]] '''car'''
*** [[Prototype/Car]] '''car'''
** [[Prototype/RollingStock]] <abstract>
*** [[Prototype/RollingStock]] <abstract>
*** [[Prototype/CargoWagon]] '''cargo-wagon'''
**** [[Prototype/ArtilleryWagon]] '''artillery-wagon'''
*** [[Prototype/FluidWagon]] '''fluid-wagon'''
**** [[Prototype/CargoWagon]] '''cargo-wagon'''
*** [[Prototype/Locomotive]] '''locomotive'''
**** [[Prototype/FluidWagon]] '''fluid-wagon'''
**** [[Prototype/Locomotive]] '''locomotive'''
*** [[Prototype/SpiderVehicle]] '''spider-vehicle'''
** [[Prototype/Wall]] '''wall'''
** [[Prototype/Wall]] '''wall'''
* [[Prototype/Fish]] '''fish'''
* [[Prototype/SimpleEntity]] '''simple-entity'''
* [[Prototype/SpiderLeg]] '''spider-leg'''
* [[Prototype/Tree]] '''tree'''
</div>


== Properties ==
== Optional properties ==
=== max_health ===
'''Type''': [[Types/float]]


The unit health can never go over the maxmum. Default health of units on creation is set to max.
{{Prototype property|max_health|[[Types/float|float]]|10|optional=true}}
The unit health can never go over the maximum. Default health of units on creation is set to max. Must be greater than 0.
     max_health = 50
     max_health = 50


=== healing_per_tick ===
{{Prototype property|healing_per_tick|[[Types/float|float]]|0.001666 for [[Prototype/Tree]], 0 for the rest of entities|optional=true}}
'''Type''': [[Types/float]]
The amount of health automatically regenerated per tick. The entity must be active for this to work.<br>
Trees will regenerate every 60 ticks with <code>healing_per_tick × 60</code> and they don't need to be active.
  healing_per_tick = 0.01


The amount of health cured by tick naturally.
{{Prototype property|repair_speed_modifier|[[Types/float|float]]|1|optional=true}}
Works only on active entities. (Todo explain)
 
  healing_per_tick = 0.01
{{Prototype property|dying_explosion|[[Types/ExplosionDefinition|ExplosionDefinition]] or [[Types/table|table]] of [[Types/ExplosionDefinition|ExplosionDefinition]]|optional=true}}
Either one [[Types/ExplosionDefinition|ExplosionDefinition]] or an array of them. The entities that are spawned in place of this one when it dies.


=== dying_explosion ===
{{Prototype property|dying_trigger_effect|[[Types/TriggerEffect|TriggerEffect]]|optional=true}}
'''Type''': [[Types/EntityName]]


Todo, this should be removed and [[Type/AttackResult]] should be used for dying event.
{{Prototype property|damaged_trigger_effect|[[Types/TriggerEffect|TriggerEffect]]|optional=true}}
This would allow much more variability.


=== loot ===
{{Prototype property|loot|[[Types/Loot|Loot]]|optional=true}}
'''Type''': [[Types/LootSpecification]]
The loot is dropped on the ground when the entity is killed.
The loot is generated when the entity is killed.
<syntaxhighlight lang="lua">loot =
    loot =
{
    {
  {
      {
    count_max = 10,
        count_max = 10,
    count_min = 2,
        count_min = 2,
    item = "stone",
        item = "alien-artifact",
    probability = 1
        probability = 1
  }
      }
}</syntaxhighlight>
    }
=== resistances ===
'''Type''': [[Types/Resistances]]


{{Prototype property|resistances|[[Types/Resistances|Resistances]]|optional=true}}
'''See''': [[Damage]]
'''See''': [[Damage]]
    resistances =  
<syntaxhighlight lang="lua">resistances =  
    {
{
      {
  {
        type = "fire",
    type = "fire",
        percent = 80
    percent = 80
      },
  },
      {
  {
        type = "explosion",
    type = "explosion",
        percent = 30
    percent = 30
      }
  }
    }
}</syntaxhighlight>
 
{{Prototype property|attack_reaction|[[Types/AttackReaction|AttackReaction]]|Empty|optional=true}}
 
{{Prototype property|repair_sound|[[Types/Sound|Sound]]|Utility sound (defaultManualRepair)|optional=true}}
 
{{Prototype property|alert_when_damaged|[[Types/bool|bool]]|true|optional=true}}
 
{{Prototype property|hide_resistances|[[Types/bool|bool]]|true|optional=true}}
Whether the resistances of this entity should be hidden in the entity tooltip.
 
{{Prototype property|create_ghost_on_death|[[Types/bool|bool]]|true|optional=true}}


=== attack_reaction ===
{{Prototype property|random_corpse_variation|[[Types/bool|bool]]|false|optional=true}}
'''Type''': [[Types/AttackReaction]]


'''Default''': Empty
{{Prototype property|integration_patch_render_layer|[[Types/RenderLayer|RenderLayer]]|"lower-object"|optional=true}}
=== corpse ===
'''Type''': [[Types/EntityName]] (single value or list)


'''Default''': Empty
{{Prototype property|corpse|[[Types/string|string]] or [[Types/table|table]] of [[Types/string|string]]s|Empty|optional=true}}
Specifies the name(s) of the [[Prototype/Corpse]] entity to be used when this entity dies.


Specifies the name of the [[Prototypes/Corpse]] entity to be used when this entity dies.
{{Prototype property|integration_patch|[[Types/Sprite4Way|Sprite4Way]]|optional=true}}
Sprite drawn on ground under the entity to make it feel more integrated into the ground.


== Example ==
== Example ==
<syntaxhighlight lang="lua">{
    type = "container",
    name = "wooden-chest",
    icon = "__base__/graphics/icons/wooden-chest.png",
    flags = {"placeable-neutral", "player-creation"},
    minable = {mining_time = 1, result = "wooden-chest"},
    max_health = 100,
    corpse = "small-remnants",
    collision_box = {{-0.35, -0.35}, {0.35, 0.35}},
    fast_replaceable_group = "container",
    selection_box = {{-0.5, -0.5}, {0.5, 0.5}},
    inventory_size = 16,
    open_sound = { filename = "__base__/sound/wooden-chest-open.ogg" },
    close_sound = { filename = "__base__/sound/wooden-chest-close.ogg" },
    vehicle_impact_sound =  { filename = "__base__/sound/car-wood-impact.ogg", volume = 1.0 },
    picture =
     {
     {
       type = "container",
       filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
      name = "wooden-chest",
       priority = "extra-high",
      icon = "__base__/graphics/icons/wooden-chest.png",
       width = 46,
       flags = {"placeable-neutral", "player-creation"},
      height = 33,
       minable = {mining_time = 1, result = "wooden-chest"},
       shift = {0.25, 0.015625}
       collision_box = {{-0.4, -0.4}, {0.4, 0.4}},
    },
       selection_box = {{-0.5, -0.5}, {0.5, 0.5}},
    circuit_wire_connection_point =
       max_health = 50,
    {
      corpse = "small-remnants",
       shadow =
      fast_replaceable_group = "container",
      {
      inventory_size = 16,
        red = {0.734375, 0.453125},
       picture =
        green = {0.609375, 0.515625},
       },
       wire =
       {
       {
         filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
         red = {0.40625, 0.21875},
        priority = "extra-high",
         green = {0.40625, 0.375},
        width = 46,
         height = 33,
        shift = {0.3, 0}
       }
       }
     }
     },
    circuit_connector_sprites = get_circuit_connector_sprites({0.1875, 0.15625}, nil, 18),
    circuit_wire_max_distance = 9
  }</syntaxhighlight>

Latest revision as of 19:25, 21 January 2022

Prototype definitions » PrototypeBase » Prototype/Entity » Prototype/EntityWithHealth


Abstract base of all entities with health in the game.


Prototype/EntityWithHealth — abstract
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)

Extensions

Optional properties

max_health

Type: float
Default: 10
The unit health can never go over the maximum. Default health of units on creation is set to max. Must be greater than 0.

   max_health = 50

healing_per_tick

Type: float
Default: 0.001666 for Prototype/Tree, 0 for the rest of entities
The amount of health automatically regenerated per tick. The entity must be active for this to work.
Trees will regenerate every 60 ticks with healing_per_tick × 60 and they don't need to be active.

  healing_per_tick = 0.01

repair_speed_modifier

Type: float
Default: 1

dying_explosion

Type: ExplosionDefinition or table of ExplosionDefinition
Either one ExplosionDefinition or an array of them. The entities that are spawned in place of this one when it dies.

dying_trigger_effect

Type: TriggerEffect

damaged_trigger_effect

Type: TriggerEffect

loot

Type: Loot
The loot is dropped on the ground when the entity is killed.

loot =
{
  {
    count_max = 10,
    count_min = 2,
    item = "stone",
    probability = 1
  }
}

resistances

Type: Resistances
See: Damage

resistances = 
{
  {
    type = "fire",
    percent = 80
  },
  {
    type = "explosion",
    percent = 30
  }
}

attack_reaction

Type: AttackReaction
Default: Empty

repair_sound

Type: Sound
Default: Utility sound (defaultManualRepair)

alert_when_damaged

Type: bool
Default: true

hide_resistances

Type: bool
Default: true
Whether the resistances of this entity should be hidden in the entity tooltip.

create_ghost_on_death

Type: bool
Default: true

random_corpse_variation

Type: bool
Default: false

integration_patch_render_layer

Type: RenderLayer
Default: "lower-object"

corpse

Type: string or table of strings
Default: Empty
Specifies the name(s) of the Prototype/Corpse entity to be used when this entity dies.

integration_patch

Type: Sprite4Way
Sprite drawn on ground under the entity to make it feel more integrated into the ground.

Example

{
    type = "container",
    name = "wooden-chest",
    icon = "__base__/graphics/icons/wooden-chest.png",
    flags = {"placeable-neutral", "player-creation"},
    minable = {mining_time = 1, result = "wooden-chest"},
    max_health = 100,
    corpse = "small-remnants",
    collision_box = {{-0.35, -0.35}, {0.35, 0.35}},
    fast_replaceable_group = "container",
    selection_box = {{-0.5, -0.5}, {0.5, 0.5}},
    inventory_size = 16,
    open_sound = { filename = "__base__/sound/wooden-chest-open.ogg" },
    close_sound = { filename = "__base__/sound/wooden-chest-close.ogg" },
    vehicle_impact_sound =  { filename = "__base__/sound/car-wood-impact.ogg", volume = 1.0 },
    picture =
    {
      filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
      priority = "extra-high",
      width = 46,
      height = 33,
      shift = {0.25, 0.015625}
    },
    circuit_wire_connection_point =
    {
      shadow =
      {
        red = {0.734375, 0.453125},
        green = {0.609375, 0.515625},
      },
      wire =
      {
        red = {0.40625, 0.21875},
        green = {0.40625, 0.375},
      }
    },
    circuit_connector_sprites = get_circuit_connector_sprites({0.1875, 0.15625}, nil, 18),
    circuit_wire_max_distance = 9
  }