Prototype/Character: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Added information about reach distance and ticks to keep gun.)
(Some people in Discord have found this unclear)
 
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
==Basics==
{{Prototype parent|Prototype/EntityWithOwner}}
Entity that you move around on the screen during the campaign and freeplay. Extends the Prototype/EntityWithHealth
Entity that you move around on the screen during the campaign and freeplay.  
== Properties ==
=== crafting_categories ===
'''Type''': [[Types/CraftingCategory]]


=== idle_animation ===
{{Prototype TOC|character}}
'''Type''': [[Types/RotatedAnimation]]


=== idle_with_gun_animation ===
== Mandatory properties ==
'''Type''': [[Types/RotatedAnimation]]
Inherits all properties from [[Prototype/EntityWithOwner]].


=== running_animation ===
{{Prototype property|mining_speed|[[Types/double|double]]}}
'''Type''': [[Types/RotatedAnimation]]


=== running_sound_animation_positions (Since 0.8) ===
{{Prototype property|running_speed|[[Types/double|double]]}}
'''Type''': List of [[Types/float]]


List of positions in the running animation when the walking sound is played.
{{Prototype property|distance_per_frame|[[Types/double|double]]}}
    running_sound_animation_positions = {14, 29}
 
=== running_mask_animation ===
{{Prototype property|maximum_corner_sliding_distance|[[Types/double|double]]}}
'''Type''': [[Types/RotatedAnimation]]


Currently not used.
{{Prototype property|heartbeat|[[Types/Sound|Sound]]}}
The sound file played when the character's health is low.


=== mining_with_hands_animation ===
{{Prototype property|eat|[[Types/Sound|Sound]]}}
'''Type''': [[Types/RotatedAnimation]]
The sound file played when the character eats (fish for example).


=== mining_with_hands_particles_animation_positions ===
{{Prototype property|inventory_size|[[Types/ItemStackIndex|ItemStackIndex]]}}
'''Type''': List of [[Types/float]]
Number of slots in the main inventory. May be 0.


List of positions in the mining with hand animation when the mining sound and mining particles are created.
{{Prototype property|build_distance|[[Types/uint32|uint32]]}}
    mining_with_hands_particles_animation_positions = {29, 63}


=== mining_with_tool_animation ===
{{Prototype property|drop_item_distance|[[Types/uint32|uint32]]}}
'''Type''': [[Types/RotatedAnimation]]


=== mining_with_tool_particles_animation_positions ===
{{Prototype property|reach_distance|[[Types/uint32|uint32]]}}
'''Type''': List of [[Types/float]]


List of positions in the mining with tool animation when the mining sound and mining particles are created.
{{Prototype property|reach_resource_distance|[[Types/double|double]]}}


=== running_aim ===
{{Prototype property|item_pickup_distance|[[Types/double|double]]}}
'''Type''': [[Types/RotatedAnimation]]


=== mining_speed ===
{{Prototype property|loot_pickup_distance|[[Types/double|double]]}}
'''Type''': [[Types/double]]


=== running_speed ===
{{Prototype property|ticks_to_keep_gun|[[Types/uint32|uint32]]}}
'''Type''': [[Types/double]]


=== distance_per_frame ===
{{Prototype property|ticks_to_keep_aiming_direction|[[Types/uint32|uint32]]}}
'''Type''': [[Types/double]]


=== maximum_corner_sliding_distance ===
{{Prototype property|ticks_to_stay_in_combat|[[Types/uint32|uint32]]}}
'''Type''': [[Types/double]]


=== heartbeat ===
{{Prototype property|damage_hit_tint|[[Types/Color|Color]]}}
'''Type''': [[Types/FileName]]


The sound file played when the character's health is low
{{Prototype property|running_sound_animation_positions|[[Types/table|table]] of [[Types/float|float]]}}
List of positions in the running animation when the walking sound is played.
    running_sound_animation_positions = {14, 29}


=== eat ===
{{Prototype property|mining_with_tool_particles_animation_positions|[[Types/table|table]] of [[Types/float|float]]}}
'''Type''': [[Types/FileName]]
List of positions in the mining with tool animation when the mining sound and mining particles are created.
    mining_with_tool_particles_animation_positions = {28}


The sound file played when the character eats (fish for example)
{{Prototype property|animations|[[Types/table|table]] of [[Types/CharacterArmorAnimation|CharacterArmorAnimation]]}}


=== light ===
== Optional properties ==
'''Type''': [[Types/LightDefinition]]


=== inventory_size ===
{{Prototype property|crafting_categories|[[Types/table|table]] of [[Types/string|string]]|empty table|optional=true}}
'''Type''': [[Types/InventorySize]]
Names of the crafting categories the character can craft recipes from. The built-in categories can be found [[Data.raw#recipe-category|here]]. See also [[Prototype/RecipeCategory]].


The size of the character's inventory
{{Prototype property|mining_categories |[[Types/table|table]] of [[Types/string|string]]|empty table|optional=true}}
Names of the resource categories the character can mine resources from.


=== build_distance ===
{{Prototype property|light|[[Types/LightDefinition|LightDefinition]]|optional=true}}
'''Type''': [[Types/uint]]


Added in 0.11.17
{{Prototype property|enter_vehicle_distance|[[Types/double|double]]|3.0|optional=true}}
Must be >= 0.


=== drop_item_distance ===
{{Prototype property|tool_attack_distance|[[Types/double|double]]|1.5|optional=true}}
'''Type''': [[Types/uint]]


Added in 0.11.17
{{Prototype property|respawn_time|[[Types/uint32|uint32]]|10|optional=true}}
Time in seconds. Must be positive


=== reach_distance ===
{{Prototype property|has_belt_immunity|[[Types/bool|bool]]|false|optional=true}}
'''Type''': [[Types/uint]]
Whether this character is moved by belts when standing on them.


Added in 0.11.17
{{Prototype property|character_corpse|[[Types/string|string]]|optional=true}}
Name of the character corpse that is spawned when this character dies.


=== reach_resource_distance ===
{{Prototype property|footstep_particle_triggers|[[Types/FootstepTriggerEffectList|FootstepTriggerEffectList]]|optional=true}}
'''Type''': [[Types/double]]
Triggered every tick of the running animation.


Added in 0.11.17
{{Prototype property|synced_footstep_particle_triggers|[[Types/FootstepTriggerEffectList|FootstepTriggerEffectList]]|optional=true}}
Triggered when the running animation ([[#animations]]) rolls over the frames defined in <code>right_footprint_frames</code> and <code>left_footprint_frames</code>.


=== ticks_to_keep_gun ===
{{Prototype property|footprint_particles|[[Types/table|table]] of [[Types/FootprintParticle|FootprintParticle]]|optional=true}}
'''Type''': [[Types/uint]]
Array of footprint particles. Triggered when the running animation ([[#animations]]) rolls over the frames defined in <code>right_footprint_frames</code> and <code>left_footprint_frames</code>.


Added in 0.11.17
{{Prototype property|left_footprint_offset|[[Types/vector|vector]]|optional=true}}
Offset from the center of the entity for the left footprint. Used by <code>footprint_particles</code>.


=== ticks_to_keep_aiming_direction ===
{{Prototype property|right_footprint_offset|[[Types/vector|vector]]|optional=true}}
'''Type''': [[Types/uint]]
Offset from the center of the entity for the right footprint. Used by <code>footprint_particles</code>.


Added in 0.11.17
{{Prototype property|right_footprint_frames|[[Types/table|table]] of [[Types/float|float]]|optional=true}}
An array of [[Types/float|float]]. The frames in the running animation ([[#animations]]) where the right foot touches the ground.


{{Prototype property|left_footprint_frames|[[Types/table|table]] of [[Types/float|float]]|optional=true}}
An array of [[Types/float|float]]. The frames in the running animation ([[#animations]]) where the left foot touches the ground.


== Example ==
{{Prototype property|tool_attack_result|[[Types/Trigger|Trigger]]|optional=true}}
    {
    type = "player",
    name = "player",
    icon = "__base__/graphics/icons/player.png",
    flags = {"pushable", "placeable-player", "placeable-off-grid", "breaths-air"},
    max_health = 100,
    healing_per_tick = 0.01,
    collision_box = {{-0.2, -0.2}, {0.2, 0.2}},
    selection_box = {{-0.2, -0.2}, {0.2, 0.2}},
    crafting_categories = {"crafting"},
    inventory_size = 60,
    running_speed = 0.15,
    distance_per_frame = 0.13,
    maximum_corner_sliding_distance = 0.7,
    eat =
    {
      {
        filename = "__base__/sound/eat.wav",
        volume = 1
      }
    },
    heartbeat =
    {
      {
        filename = "__base__/sound/heartbeat.ogg",
        volume = 1.5
      }
    },
    idle_animation =
    {
      priority = "medium",
      frame_width = 48,
      frame_height = 66,
      direction_count = 5,
      frame_count = 120,
      stripes =
      {
        {
          filename = "__base__/graphics/entity/player/character-idle-1.png",
          width_in_frames = 40
        },
        {
          filename = "__base__/graphics/entity/player/character-idle-2.png",
          width_in_frames = 40
        },
        {
          filename = "__base__/graphics/entity/player/character-idle-3.png",
          width_in_frames = 40
        }
      },
      shift = {0, -0.6}
    },
    idle_with_gun_animation =
    {
      priority = "medium",
      frame_width = 48,
      frame_height = 66,
      direction_count = 5,
      frame_count = 120,
      stripes =
      {
        {
          filename = "__base__/graphics/entity/player/character-idle-with-gun-1.png",
          width_in_frames = 40
        },
        {
          filename = "__base__/graphics/entity/player/character-idle-with-gun-2.png",
          width_in_frames = 40
        },
        {
          filename = "__base__/graphics/entity/player/character-idle-with-gun-3.png",
          width_in_frames = 40
        }
      },
      shift = {0, -0.6}
    },
    light = {intensity = 0.4, size = 25},
    mining_speed = 0.01,
    mining_with_hands_animation =
    {
      priority = "medium",
      frame_width = 48,
      frame_height = 66,
      direction_count = 5,
      frame_count = 80,
      stripes =
      {
        {
          filename = "__base__/graphics/entity/player/character-mine-with-hands-1.png",
          width_in_frames = 40
        },
        {
          filename = "__base__/graphics/entity/player/character-mine-with-hands-2.png",
          width_in_frames = 40
        }
      },
      shift = {0, -0.6}
    },
    mining_with_hands_particles_animation_positions = {29, 63},
    mining_with_tool_animation =
    {
      priority = "medium",
      frame_width = 64,
      frame_height = 88,
      direction_count = 5,
      frame_count = 48,
      stripes =
      {
        {
          filename = "__base__/graphics/entity/player/character-mine-with-tool-1.png",
          width_in_frames = 24
        },
        {
          filename = "__base__/graphics/entity/player/character-mine-with-tool-2.png",
          width_in_frames = 24
        }
      },
      shift = {0, -0.6}
    },
    mining_with_tool_particles_animation_positions = {28},
    running_aim =
    {
      filename = "__base__/graphics/entity/player/character-clothes-run-aim.png",
      priority = "medium",
      frame_width = 58,
      frame_height = 72,
      frame_count = 30,
      direction_count = 18,
      shift = {0, -0.6}
    },
    running_animation =
    {
      filename = "__base__/graphics/entity/player/character-clothes-run.png",
      priority = "medium",
      frame_width = 48,
      frame_height = 66,
      frame_count = 30,
      direction_count = 5,
      shift = {0, -0.6}
    },
    running_mask_animation =
    {
      filename = "__base__/graphics/entity/player/character-clothes-run-mask.png",
      priority = "medium",
      frame_width = 48,
      frame_height = 66,
      frame_count = 30,
      direction_count = 5,
      shift = {0, -0.6}
    },
    running_sound_animation_positions = {14, 29}
  },

Latest revision as of 11:06, 22 December 2022

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


Entity that you move around on the screen during the campaign and freeplay.


Prototype/Character — character
animations::table of CharacterArmorAnimation
build_distance::uint32
damage_hit_tint::Color
distance_per_frame::double
drop_item_distance::uint32
eat::Sound
heartbeat::Sound
inventory_size::ItemStackIndex
item_pickup_distance::double
loot_pickup_distance::double
maximum_corner_sliding_distance::double
mining_speed::double
mining_with_tool_particles_animation_positions::table of float
reach_distance::uint32
reach_resource_distance::double
running_sound_animation_positions::table of float
running_speed::double
ticks_to_keep_aiming_direction::uint32
ticks_to_keep_gun::uint32
ticks_to_stay_in_combat::uint32
character_corpse::string (optional)
crafting_categories::table of string (optional)
enter_vehicle_distance::double (optional)
footprint_particles::table of FootprintParticle (optional)
footstep_particle_triggers::FootstepTriggerEffectList (optional)
has_belt_immunity::bool (optional)
left_footprint_frames::table of float (optional)
left_footprint_offset::vector (optional)
light::LightDefinition (optional)
mining_categories::table of string (optional)
respawn_time::uint32 (optional)
right_footprint_frames::table of float (optional)
right_footprint_offset::vector (optional)
synced_footstep_particle_triggers::FootstepTriggerEffectList (optional)
tool_attack_distance::double (optional)
tool_attack_result::Trigger (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

Inherits all properties from Prototype/EntityWithOwner.

mining_speed

Type: double

running_speed

Type: double

distance_per_frame

Type: double

maximum_corner_sliding_distance

Type: double

heartbeat

Type: Sound
The sound file played when the character's health is low.

eat

Type: Sound
The sound file played when the character eats (fish for example).

inventory_size

Type: ItemStackIndex
Number of slots in the main inventory. May be 0.

build_distance

Type: uint32

drop_item_distance

Type: uint32

reach_distance

Type: uint32

reach_resource_distance

Type: double

item_pickup_distance

Type: double

loot_pickup_distance

Type: double

ticks_to_keep_gun

Type: uint32

ticks_to_keep_aiming_direction

Type: uint32

ticks_to_stay_in_combat

Type: uint32

damage_hit_tint

Type: Color

running_sound_animation_positions

Type: table of float
List of positions in the running animation when the walking sound is played.

   running_sound_animation_positions = {14, 29}

mining_with_tool_particles_animation_positions

Type: table of float
List of positions in the mining with tool animation when the mining sound and mining particles are created.

   mining_with_tool_particles_animation_positions = {28}

animations

Type: table of CharacterArmorAnimation

Optional properties

crafting_categories

Type: table of string
Default: empty table
Names of the crafting categories the character can craft recipes from. The built-in categories can be found here. See also Prototype/RecipeCategory.

mining_categories

Type: table of string
Default: empty table
Names of the resource categories the character can mine resources from.

light

Type: LightDefinition

enter_vehicle_distance

Type: double
Default: 3.0
Must be >= 0.

tool_attack_distance

Type: double
Default: 1.5

respawn_time

Type: uint32
Default: 10
Time in seconds. Must be positive

has_belt_immunity

Type: bool
Default: false
Whether this character is moved by belts when standing on them.

character_corpse

Type: string
Name of the character corpse that is spawned when this character dies.

footstep_particle_triggers

Type: FootstepTriggerEffectList
Triggered every tick of the running animation.

synced_footstep_particle_triggers

Type: FootstepTriggerEffectList
Triggered when the running animation (#animations) rolls over the frames defined in right_footprint_frames and left_footprint_frames.

footprint_particles

Type: table of FootprintParticle
Array of footprint particles. Triggered when the running animation (#animations) rolls over the frames defined in right_footprint_frames and left_footprint_frames.

left_footprint_offset

Type: vector
Offset from the center of the entity for the left footprint. Used by footprint_particles.

right_footprint_offset

Type: vector
Offset from the center of the entity for the right footprint. Used by footprint_particles.

right_footprint_frames

Type: table of float
An array of float. The frames in the running animation (#animations) where the right foot touches the ground.

left_footprint_frames

Type: table of float
An array of float. The frames in the running animation (#animations) where the left foot touches the ground.

tool_attack_result

Type: Trigger