Critters (Animals)¶
Critters are entities owned by the world that will move around the map at random, usually animals. On how to add fish to the map, see Resources.
Critters are defined in
data/world/critters/<critter_name>/init.lua
.
- new_critter_type{table}
This function adds the definition of a critter to the engine.
- Parameters
table – This table contains all the data that the game engine will add to this critter. It contains the following entries:
- name
Mandatory. A string containing the internal name of this critter, e.g.:
name = "badger",
- descname
Mandatory. The translatable display name, e.g.:
descname = _("Badger"),
- animation_directory
Mandatory. The location of the animation png files.
- editor_category
Deprecated. The category that is used in the editor tools for placing a critter of this type on the map, e.g.:
editor_category = "critters_carnivores",
- size
Mandatory. This critter’s size in relative units (bigger values mean larger and stronger), within range 1..10, e.g.:
size = 5,
- reproduction_rate
Mandatory. How likely this critter is to consider reproducing when it finds a mating partner, in %, e.g.:
reproduction_rate = 10,
- herbivore
Optional. An array of attribute names. If given, this critter considers any immovable with one of these attributes food. E.g.:
herbivore = { "field" },
- carnivore
Optional. Whether this critter considers all other critter types food. E.g.:
carnivore = true,
- appetite
Mandatory if
herbivore
orcarnivore
is given. How likely this critter is to eat when it finds food, in %, e.g.:appetite = 20,
- programs
Mandatory. Every critter has an automatic default program, which is to move around the map at random. Additional programs can be defined that other map objects can then call in their programs, e.g.:
programs = { remove = { "remove" }, -- A hunter will call this after catching this animal },
- animations
Optional. A table containing all file animations for this critter. Every critter needs to have an
idle
and a directionalwalk
animation. Herbivores and carnivores additionally need aneating
animation. Animations can either be defined as file animations in this table or as spritesheet animations as defined in tablespritesheets
. A mixture of the two animation formats is allowed. See Animations for a detailed description of the animation formats.- spritesheets
Optional. A table containing all spritesheet animations for this critter. Every critter needs to have an
idle
and a directionalwalk
animation. Herbivores and carnivores additionally need aneating
animation. Animations can either be defined as spritesheet animations in this table or as file animations as defined in tableanimations
. A mixture of the two animation formats is allowed. See Animations for a detailed description of the animation formats.
For making the UI texts translateable, we also need to push/pop the correct textdomain.
Example:
push_textdomain("world")
wl.Descriptions():new_critter_type{
name = "badger",
descname = _("Badger"),
animation_directory = path.dirname(__file__),
programs = {
remove = { "remove" },
},
size = 4,
reproduction_rate = 70,
appetite = 50,
carnivore = true,
spritesheets = {
idle = {
fps = 20,
frames = 7,
rows = 4,
columns = 2,
hotspot = { 9, 12 }
},
eating = {
basename = "idle", -- TODO(Nordfriese): Make animation
fps = 20,
frames = 7,
rows = 4,
columns = 2,
hotspot = { 9, 12 }
},
walk = {
fps = 20,
frames = 20,
rows = 5,
columns = 4,
directional = true,
hotspot = { 13, 15 }
},
},
}
pop_textdomain()