Prototype/Character: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
No edit summary
(Some people in Discord have found this unclear)
 
(21 intermediate revisions by 7 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_mask_animation ===
{{Prototype property|running_speed|[[Types/double|double]]}}
'''Type''': [[Types/RotatedAnimation]]?


=== mining_with_hands_animation ===
{{Prototype property|distance_per_frame|[[Types/double|double]]}}
'''Type''': [[Types/RotatedAnimation]]


=== mining_with_tool_animation ===
{{Prototype property|maximum_corner_sliding_distance|[[Types/double|double]]}}
'''Type''': [[Types/RotatedAnimation]]


=== running_aim ===
{{Prototype property|heartbeat|[[Types/Sound|Sound]]}}
'''Type''': [[Types/RotatedAnimation]]
The sound file played when the character's health is low.


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


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


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


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


=== mine_with_hands_frames_per_tick ===
{{Prototype property|reach_distance|[[Types/uint32|uint32]]}}
'''Type''': [[Types/double]]?


=== mine_with_tool_frames_per_tick ===
{{Prototype property|reach_resource_distance|[[Types/double|double]]}}
'''Type''': [[Types/double]]


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


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


=== heartbeat ===
{{Prototype property|ticks_to_keep_gun|[[Types/uint32|uint32]]}}
'''Type''': [[Types/FileName]]
The sound file played when the character's health is low


=== eat ===
{{Prototype property|ticks_to_keep_aiming_direction|[[Types/uint32|uint32]]}}
'''Type''': [[Types/FileName]]
The sound file played when the character eats (fish for example)


=== light ===
{{Prototype property|ticks_to_stay_in_combat|[[Types/uint32|uint32]]}}
'''Type''': [[Types/LightDefinition]]


=== inventory_size ===
{{Prototype property|damage_hit_tint|[[Types/Color|Color]]}}
'''Type''': [[Types/InventorySize]]
The size of the character's inventory


=== mining_with_hands_particles_animation_positions ===
{{Prototype property|running_sound_animation_positions|[[Types/table|table]] of [[Types/float|float]]}}
'''Type''': ?
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 ===
{{Prototype property|mining_with_tool_particles_animation_positions|[[Types/table|table]] of [[Types/float|float]]}}
'''Type''': ?
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}


== Example ==
{{Prototype property|animations|[[Types/table|table]] of [[Types/CharacterArmorAnimation|CharacterArmorAnimation]]}}
    {
 
    type = "player",
== Optional properties ==
    name = "player",
 
    icon = "__base__/graphics/icons/player.png",
{{Prototype property|crafting_categories|[[Types/table|table]] of [[Types/string|string]]|empty table|optional=true}}
    flags = {"pushable", "placeable-player", "placeable-off-grid", "breaths-air"},
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]].
    max_health = 100,
 
    healing_per_tick = 0.01,
{{Prototype property|mining_categories |[[Types/table|table]] of [[Types/string|string]]|empty table|optional=true}}
    collision_box = {{-0.2, -0.2}, {0.2, 0.2}},
Names of the resource categories the character can mine resources from.
    selection_box = {{-0.2, -0.2}, {0.2, 0.2}},
 
    crafting_categories = {"crafting"},
{{Prototype property|light|[[Types/LightDefinition|LightDefinition]]|optional=true}}
    inventory_size = 60,
 
    running_speed = 0.15,
{{Prototype property|enter_vehicle_distance|[[Types/double|double]]|3.0|optional=true}}
    distance_per_frame = 0.13,
Must be >= 0.
    maximum_corner_sliding_distance = 0.7,
 
    eat =
{{Prototype property|tool_attack_distance|[[Types/double|double]]|1.5|optional=true}}
    {
 
      {
{{Prototype property|respawn_time|[[Types/uint32|uint32]]|10|optional=true}}
        filename = "__base__/sound/eat.wav",
Time in seconds. Must be positive
        volume = 1
 
      }
{{Prototype property|has_belt_immunity|[[Types/bool|bool]]|false|optional=true}}
    },
Whether this character is moved by belts when standing on them.
    heartbeat =
 
    {
{{Prototype property|character_corpse|[[Types/string|string]]|optional=true}}
      {
Name of the character corpse that is spawned when this character dies.
        filename = "__base__/sound/heartbeat.ogg",
 
        volume = 1.5
{{Prototype property|footstep_particle_triggers|[[Types/FootstepTriggerEffectList|FootstepTriggerEffectList]]|optional=true}}
      }
Triggered every tick of the running animation.
    },
 
    idle_animation =
{{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>.
      priority = "medium",
 
      frame_width = 48,
{{Prototype property|footprint_particles|[[Types/table|table]] of [[Types/FootprintParticle|FootprintParticle]]|optional=true}}
      frame_height = 66,
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>.
      direction_count = 5,
 
      frame_count = 120,
{{Prototype property|left_footprint_offset|[[Types/vector|vector]]|optional=true}}
      stripes =
Offset from the center of the entity for the left footprint. Used by <code>footprint_particles</code>.
      {
 
        {
{{Prototype property|right_footprint_offset|[[Types/vector|vector]]|optional=true}}
          filename = "__base__/graphics/entity/player/character-idle-1.png",
Offset from the center of the entity for the right footprint. Used by <code>footprint_particles</code>.
          width_in_frames = 40
 
        },
{{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.
          filename = "__base__/graphics/entity/player/character-idle-2.png",
 
          width_in_frames = 40
{{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.
        {
 
          filename = "__base__/graphics/entity/player/character-idle-3.png",
{{Prototype property|tool_attack_result|[[Types/Trigger|Trigger]]|optional=true}}
          width_in_frames = 40
        }
      },
      shift = {0, -0.6}
    },
    idle_frames_per_tick = 1,
    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}
    },
    idle_with_gun_frames_per_tick = 1,
    light = {intensity = 0.4, size = 25},
    mine_with_hands_frames_per_tick = 1,
    mine_with_tool_frames_per_tick = 1,
    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}
    },
  },

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