Prototype/EntityWithHealth: Difference between revisions
(→Extensions: updated extensions) |
(1.1.51: Prototype/EntityWithOwner added) |
||
(25 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{Prototype parent|Prototype/Entity}} | |||
Abstract base of all entities with health in the game. | |||
{{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]] ''' | ** [[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/ | *** [[Prototype/LogisticContainer]] '''logistic-container''' | ||
** [[Prototype/ | **** [[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/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/ | ** [[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/SimpleEntityWithOwner]] '''simple-entity-with-owner''' | ** [[Prototype/SimpleEntityWithOwner]] '''simple-entity-with-owner''' | ||
** [[Prototype/ | *** [[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/ | *** [[Prototype/LinkedBelt]] '''linked-belt''' | ||
** [[Prototype/ | *** [[Prototype/Loader1x1]] '''loader-1x1''' | ||
** [[Prototype/ | *** [[Prototype/Loader1x2]] '''loader''' | ||
** [[Prototype/ | *** [[Prototype/Splitter]] '''splitter''' | ||
** [[Prototype/ | *** [[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> | |||
== | == Optional properties == | ||
The unit health can never go over the | {{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 | ||
{{Prototype property|healing_per_tick|[[Types/float|float]]|0.001666 for [[Prototype/Tree]], 0 for the rest of entities|optional=true}} | |||
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 | |||
{{Prototype property|repair_speed_modifier|[[Types/float|float]]|1|optional=true}} | |||
{{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. | |||
{{Prototype property|dying_trigger_effect|[[Types/TriggerEffect|TriggerEffect]]|optional=true}} | |||
{{Prototype property|damaged_trigger_effect|[[Types/TriggerEffect|TriggerEffect]]|optional=true}} | |||
{{Prototype property|loot|[[Types/Loot|Loot]]|optional=true}} | |||
The loot is dropped on the ground when the entity is killed. | |||
The loot is | <syntaxhighlight lang="lua">loot = | ||
{ | |||
{ | |||
count_max = 10, | |||
count_min = 2, | |||
item = "stone", | |||
probability = 1 | |||
} | |||
}</syntaxhighlight> | |||
{{Prototype property|resistances|[[Types/Resistances|Resistances]]|optional=true}} | |||
'''See''': [[Damage]] | '''See''': [[Damage]] | ||
<syntaxhighlight lang="lua">resistances = | |||
{ | |||
{ | |||
type = "fire", | |||
percent = 80 | |||
}, | |||
{ | |||
type = "explosion", | |||
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}} | |||
{{Prototype property|random_corpse_variation|[[Types/bool|bool]]|false|optional=true}} | |||
{{Prototype property|integration_patch_render_layer|[[Types/RenderLayer|RenderLayer]]|"lower-object"|optional=true}} | |||
{{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. | |||
{{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 = | |||
{ | { | ||
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 | |||
}</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.
Extensions
- Prototype/EntityWithOwner <abstract>
- Prototype/Accumulator accumulator
- Prototype/ArtilleryTurret artillery-turret
- Prototype/Beacon beacon
- Prototype/Boiler boiler
- Prototype/BurnerGenerator burner-generator
- Prototype/Character character
- Prototype/Combinator <abstract>
- Prototype/ArithmeticCombinator arithmetic-combinator
- Prototype/DeciderCombinator decider-combinator
- Prototype/ConstantCombinator constant-combinator
- Prototype/Container container
- Prototype/LogisticContainer logistic-container
- Prototype/InfinityContainer infinity-container
- Prototype/LogisticContainer logistic-container
- Prototype/CraftingMachine <abstract>
- Prototype/AssemblingMachine assembling-machine
- Prototype/RocketSilo rocket-silo
- Prototype/Furnace furnace
- Prototype/AssemblingMachine assembling-machine
- Prototype/ElectricEnergyInterface electric-energy-interface
- Prototype/ElectricPole electric-pole
- Prototype/EnemySpawner unit-spawner
- Prototype/FlyingRobot <abstract>
- Prototype/CombatRobot combat-robot
- Prototype/RobotWithLogisticInterface <abstract>
- Prototype/ConstructionRobot construction-robot
- Prototype/LogisticRobot logistic-robot
- Prototype/Gate gate
- Prototype/Generator generator
- Prototype/HeatInterface heat-interface
- Prototype/HeatPipe heat-pipe
- Prototype/Inserter inserter
- Prototype/Lab lab
- Prototype/Lamp lamp
- Prototype/LandMine land-mine
- Prototype/LinkedContainer linked-container
- Prototype/Market market
- Prototype/MiningDrill mining-drill
- Prototype/OffshorePump offshore-pump
- Prototype/Pipe pipe
- Prototype/InfinityPipe infinity-pipe
- Prototype/PipeToGround pipe-to-ground
- Prototype/PlayerPort player-port
- Prototype/PowerSwitch power-switch
- Prototype/ProgrammableSpeaker programmable-speaker
- Prototype/Pump pump
- Prototype/Radar radar
- Prototype/Rail <abstract>
- Prototype/CurvedRail curved-rail
- Prototype/StraightRail straight-rail
- Prototype/RailSignalBase <abstract>
- Prototype/RailChainSignal rail-chain-signal
- Prototype/RailSignal rail-signal
- Prototype/Reactor reactor
- Prototype/Roboport roboport
- Prototype/SimpleEntityWithOwner simple-entity-with-owner
- Prototype/SimpleEntityWithForce simple-entity-with-force
- Prototype/SolarPanel solar-panel
- Prototype/StorageTank storage-tank
- Prototype/TrainStop train-stop
- Prototype/TransportBeltConnectable <abstract>
- Prototype/LinkedBelt linked-belt
- Prototype/Loader1x1 loader-1x1
- Prototype/Loader1x2 loader
- Prototype/Splitter splitter
- Prototype/TransportBelt transport-belt
- Prototype/UndergroundBelt underground-belt
- Prototype/Turret turret
- Prototype/AmmoTurret ammo-turret
- Prototype/ElectricTurret electric-turret
- Prototype/FluidTurret fluid-turret
- Prototype/Unit unit
- Prototype/Vehicle <abstract>
- Prototype/Car car
- Prototype/RollingStock <abstract>
- Prototype/ArtilleryWagon artillery-wagon
- Prototype/CargoWagon cargo-wagon
- Prototype/FluidWagon fluid-wagon
- Prototype/Locomotive locomotive
- Prototype/SpiderVehicle spider-vehicle
- Prototype/Wall wall
- Prototype/Fish fish
- Prototype/SimpleEntity simple-entity
- Prototype/SpiderLeg spider-leg
- Prototype/Tree tree
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
}