Ships¶
Each tribe can have one ship that is used to explore the seas and transport wares between ports.
Ships are defined in
data/tribes/ships/<tribe_name>/init.lua.
- new_ship_type(table)¶
 This function adds the definition of a ship to the engine.
- Parameters:
 table – This table contains all the data that the game engine will add to this ship. It contains the following entries:
name: A string containing the internal name of this ship.
descname: The translatable display name. Use
pgettextto fetch the string.icon: Path to the menu icon file.
capacity: An int defining how many wares or workers this ship can transport
vision_range: How far the ship can see.
hitpoints: Number of hitpoints the ship can have.
min_attack: The minimum damage this ship inflicts in a successful attack.
max_attack: The maximum damage this ship inflicts in a successful attack.
defense: The percentage by which the damage is reduced when hit.
attack_accuracy: The percentage of the chance that an attack launched by this ship hits.
heal_per_second: The number of hitpoints the ship heals per second when in a dock.
animations: A table containing all file animations for this ship. Ships have an “idle”, a “sinking” and a directional “sail” animation. 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 format.spritesheets: A table containing all spritesheet animations for this ship. Ships have an “idle”, a “sinking” and a directional “sail” animation. 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 format.names: A list of strings with ship names presented to the user - be creative :)
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_ship_type {
   name = "atlanteans_ship",
   descname = pgettext("atlanteans_ship", "Ship"),
   animation_directory = dirname,
   icon = dirname .. "menu.png",
   capacity = 30,
   vision_range = 4,
   spritesheets = {
      idle = {
         fps = 10,
         frames = 39,
         rows = 7,
         columns = 6,
         hotspot = { 58, 55 }
      },
      sail = {
         fps = 10,
         frames = 40,
         rows = 7,
         columns = 6,
         directional = true,
         hotspot = { 86, 85 }
      },
      sinking = {
         fps = 7,
         frames = 22,
         rows = 6,
         columns = 4,
         hotspot = { 58, 54 }
      },
   },
   names = {
      pgettext("shipname", "Abaco"),
      pgettext("shipname", "Agate"),
   },
}
pop_textdomain()