Workers¶
Workers are created in a warehouse or recruited by a building. Most workers will work in buildings, while special worker types will act as carriers or soldiers.
Widelands knows about the following worker types:
Common Worker Properties¶
Workers are defined with Lua functions called new_<worker_type>_type{table}
. The contents of table
depend on the type of worker that you are defining. The common properties shared by all workers are:
name: A string containing the internal name of this worker.
descname: The translatable display name. Use pgettext
to fetch the string.
icon: The full path to the menu icon for this worker.
- vision_range
The size of the radius that the worker sees.
- buildcost
Optional. A table with the wares and workers used by warehouses to create this worker, containing warename - amount pairs, e.g.:
buildcost = { atlanteans_carrier = 1, hammer = 1 }
- default_target_quantity:
Optional. An int defining the default target quantity for the worker’s tribe’s economy. Use this if the worker is produced by a production site rather than the warehouses. For example,
default_target_quantity = 10
Note
This parameter has been shifted to tribes initialization in the current development version.**
- experience
Optional. The amount of experience that the worker needs to gather in order to be transformend into a higher worker type. If becomes is defined, this needs to be set as well.
- becomes
Optional. The name of the higher worker type that this worker will transform to after gaining enough experience. If experience is defined, this needs to be set as well.
- animation_directory
Mandatory. The location of the animation png files.
- animations:
A table containing all file animations for this worker. Workers have an “idle” animation. They also have directional animations called “walk” and “walkload”, plus additional animations used in their worker programs. The “idle” and “walk” animations are mandatory. Animations can either be defined as file animations in this table or as spritesheet animations as defined in table
spritesheets
. A mixture of the two animation formats is allowed. See Animations for a detailed description of the animation formats.- spritesheets:
A table containing all spritesheet animations for this worker. Workers have an “idle” animation. They also have directional animations called “walk” and “walkload”, plus additional animations used in their worker programs. The “idle” and “walk” animations are mandatory. Animations can either be defined as spritesheet animations in this table or as file animations as defined in table
animations
. A mixture of the two animation formats is allowed. See Animations for a detailed description of the animation formats.- programs:
Optional. If the worker leaves the building to do his work, the Worker Programs that define which type of space or resource the worker has to find on the map in order to do his work, and what that work is, including any animations and sounds played.
- ware_hotspot
Optional. The x, y coordinates for adjusting the placement of the ware being carried. The default value is
{0, 15}
. Increasex
to shift the ware to the left andy
to shift it upwards. For example:ware_hotspot = { -2, 13 },
- aihints
Optional. A list of hints for the AI. Can contain the following optional entries:
preciousness: How precious this worker is to each tribe. For example,
{ atlanteans = 0, empire = 1 }
. You can use this for workers that are recruited.Note
This parameter has been shifted to tribes initialization in the current development version.
For making the UI texts translateable, we also need to push/pop the correct textdomain.
Example:
push_textdomain("tribes")
dirname = path.dirname (__file__)
wl.Descriptions():new_worker_type {
name = "frisians_baker",
-- TRANSLATORS: This is a worker name used in lists of workers
descname = pgettext("frisians_worker", "Baker"),
animation_directory = dirname,
icon = dirname .. "menu.png",
vision_range = 2,
buildcost = {
frisians_carrier = 1,
bread_paddle = 1
},
experience = 13,
becomes = "frisians_baker_master",
ware_hotspot = {0, 20},
spritesheets = {
walk = {
fps = 15,
frames = 10,
columns = 5,
rows = 2,
directional = true,
hotspot = {11, 23}
},
walkload = {
fps = 15,
frames = 10,
columns = 5,
rows = 2,
directional = true,
hotspot = {10, 26}
},
},
animations = {
idle = {
hotspot = {8, 23}
},
},
}
pop_textdomain()
Help Texts¶
See Helptexts.