v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Advanced entity position mechanics

From Dwarf Fortress Wiki
Revision as of 12:19, 4 December 2023 by Joostheger (talk | contribs)
Jump to navigation Jump to search



Introduction

this is a draft. please let me finish it. joostheger.

Discussion thread on the forum

This article is the result of an investigation into the mechanisms involved in entity positions. It can be useful for modders or advanced players to understand how this part of Dwarf Fortress works.

What is an entity?

An entity is an organizational structure. It can have relationships with other entities. An entity is usually known as a civilization or a "site government", but merchant guilds, religious organizations, and bandit groups are also entities. An entity can have positions. In most cases these are hardcoded and generated by the game, but with civilizations and sites they can be customized with the raw entities.

What is a position?

A position is a special relationship between a unit and an entity. The unit holding a position has a larger influence over that entity as other citizens. Positions are mostly known as nobles, but in this article the technical term is used.

Position levels (Site/Civ) and their interaction

There are two basic types of positions that are customizable: civ(ilization) level and site level. Positions with the tag [SITE] are at site level, positions without the tag [SITE] are at 'civ level'. These two types of nobles can be considered loosely related systems. There are a few places where they can interact with each other.

Citizen-level positions are in charge of the civilization as a whole, managing national trade, laws, and wars. These are, for example, the vanilla monarch, princes, diplomat and general.

LAND_HOLDERS nobles are also positions at civ-level. These units are members of the national government, but have gained hold over some land or site. Once they do, they move to that place, but their position is still regarded as a civ-level position.

Site-level position holders are members of a site government (subsidiary to the civilization), and manage local affairs in that location. These are, for example, the mayor, the sheriff and the broker.

Table of interaction between different position-levels

In this table, the possible interactions between different position levels are summerized. The header row shows the positions defining the tokens.

The left colllumn shows the position type that is referred. Example:

referred position-type LAND_HOLDER
civilization (baron is) APPOINTED_BY:MONARCH

color coding:

  • Exists in vanilla
  • Possible in mods
  • Not possible
  • possible to some extend.
  • not yet fully investigated.
referred position-type Civilization SITE LAND_HOLDER CONQUERED_SITE
civilization APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION (1)
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
SITE APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION (2)
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
APPOINTED_BY (3)
COMMANDER
REPLACED_BY
SUCCESSION (4)
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
LAND_HOLDER APPOINTED_BY
COMMANDER
REPLACED_BY (6)
SUCCESSION
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION (5)
APPOINTED_BY
COMMANDER
REPLACED_BY (7)
SUCCESSION (8)
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
CONQUERED_SITE APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION
APPOINTED_BY
COMMANDER
REPLACED_BY
SUCCESSION

Remarks:

  1. Works only in world-gen, if an unit with that civ-position is present at the site.
  2. Works only in world-gen, the site-position holding unit will then move to the capital.
  3. is completely ignored
  4. Works only in world-gen.
  5. Works only in world-gen.
  6. wont appear at all
  7. This is neccesary for the landholder-chain to work property. It doensn't work otherwise.
  8. This works only outsite of the landholder-chain, so when landholders are simply regarded as civ-level nobles. might also work in world-gen

Civ-level nobles living at your site

Nobles from your civilization can come to live at your fortress. This happens in vanilla with landholders such as Baron, Count and Duke, with the Monarch, but sometimes also with non-landed LAND_HOLDERS.

When a civ-level noble becomes a citizen at your location, his position is shown among the site-level positions in your nobles screen. They appears to function as a site-level noble. They may have demands, mandates, squads and the like. They can appoint nobles at the site-level.

If they have certain RESPONSIBILITY's, they do the tasks that go with them.

General

Fortress-mode, world-gen and their differences

Their are a few differences in how positions function, between fortress-mode (normal play-mode) and the world generation (world-gen).

In fortress-mode, the player has some control over the appointment of nobles, limited by elections, automatic filled-in positions and succession rules. Pre-fortress mode, which is refered to as world-gen, the game will always attempt to assign nobles whenever possible. It is subjected to the same rules as in fortress-mode, but there are some exceptions. In World Automation, which is the thing that happens in the world while you play fortress mode, it seems as if the same rules are applied as fortress mode.

A difference between Player-fortress-mode and world-gen, is causes by visibility (see below). Positions that are not visible by the player and thus not available for assignment, will be available in world-gen and will thus be automatically assigned.

In fortress mode, a position that is both ELECTED and APPOINTED_BY, cannot be appointed by the player and is also not elected, and can thus not be filled. But in world-gen sites however, these positions are automatically filled.

Positions with AS_NEEDED are almost never created and filled in world-gen (depending on its RESPONSIBILITY's), but can always be used in player mode.

A positions can in fortress mode be filled by the same unit. A unit can gain multiple positions in fortess-mode, for example because of elections. This will not happen in world-gen mode: a unit can only have one position. See also remarks on 'embark' and 'Loosing a position'.

In world-gen, SUCCESSION between civ-levels en SITE-levels may happen. This will not happen in fortress-mode, or even off-site in World Automation.

In fortress-mode, premature SUCCESSION may happen. This will not happen in world-gen-mode.

Units holding multiple positions (in multiple entities)

A unit can hold multiple positions in its civilisation OR site-entity, however this does not happen in world-gen. Only at player-managed sites units can be holding multiple positions at once. (It is probably not possible for a unit to hold a position in two different civilisations or two different sites. )

In world-gen, if there are to many positions to be filled, they simply stay empty until more units are available.

In world-gen, a unit at a site might inherrit a civ-level position and still remains a member of the local goverment. When this happens however, they move to the capital.

In world-gen, if a unit gains a new position, either inherrited or otherwise, it drops the previous one. If a unit assumes a civ-position in fortress mode, it leaves the current position.

If a unit holds the same (site-)position multiple times, it has no additional effect.

If a unit holdes multiple different positions of the same entity, he has all those positions responsibilities and properties stacked up. It is presumable that the demands for those combined positions are determined by the highest.

A unit holding a position with a succession-token CAN be assigned another position with a (different) succession-token.

A unit holding a position with a squad-position cannot hold another squad-position. It is dropped from the first, when it gets its second assigned. A unit holding a position with a succession-token cannot be assigned to a squad-position. The unit is simply not available. It works the other way around, though.

RESPONSIBILITY

If a civ-noble having certain responsibilites arrives at a site and start to live there, it will perform the tasks coming with that responsibility. This means that a civ-manager wil do managing, while he's a citizen of your fortress.

The only AS_NEEDED-position that is created in world-gen is that of the responsibility DELIVERS_MESSAGES, of a site level.

World-gen effects of the RESPONSIBILITY of available positions

It is possible to cause civs and individual sites to change their behavior substantially when they reach a certain size by controlling nobles.

  • If a site can only appoint a position with [MILITARY_GOALS] after reaching a particular size, that site will not send armies on missions until the required size is reached.
  • A civ-level LAW_MAKING position is required for the civilization to have any kind of cohesion. Without it, sites will be constantly embroiled in territorial disputes and civil wars will be commonplace.
  • MILITARY_STRATEGY positions go out and tame wild animals. This makes your civ gain those animals as domesticated and also brings them in sieges.

Availability and visibility

Availability of (new) positions

Warning: Do not mistake "availability" for "visibility"!

Of all the possible positions existing in your sites entity, there may only some available.

  • Positions with [REQUIRES_POPULATION] require the population to have a specific size.
  • Positions with [REQUIRES_MARKET] will only appear in "large" sites (which may have different rules for different site types). This tag has no effect in fort mode.
  • Positions that are appointed by positions that have a AS_NEEDED number. The appointable positions only become available after a appoiner-position-slot is created. This works also on civ-level. If a position is appointed by a Land-holder, it only becomes available, when that level of landholder is created.

Only the replaced positions are culled and are no longer available. A position that requires a certain population will become available, even if it doesnt have [APPOINTED_BY] or [ELECTED]. In that case, see 'automatic assignment' and 'assumption'

In fortress-mode, in some cases 'succession' is evaluated immidiatly after a position becomes available. See: Succession.

Visibility of positions

A position might be available, but can still be invisible for the player in the nobles screen. The positions with their respective holders are visible for players:

  • All site-positions that are already filled-in (even if they could not be re-filled-in considering current conditions)
  • Site-positions that are apointable by a filled-in site position
  • Civ-positions of units that are also a citizen of your fortress.

If a position becomes available, for example because a certain pop number has reached or if it is available from the start(like expedition leader), als long as it cannot be appointed, it still is INVISIBLE for the player.

It might strike as odd, may a position becomes filled automaticly in fortress mode, when that position is not even visible. This might be the case if the current holder of a non-appoinable position dies or succeeds another position. Regardless of player-visibility, these positions will be automaticly filled in if the nescesary requisitions are met. It might happen with the expedition-leader.

A situation with a non-visible but available position, is for example when a position is solely appointed by the expedion leader, when the expedion leader's position is left vacant. It can no longer be appointed by the player and is invisible. Then, it gets automatically assumed, proving that the position still was available.

NUMBER

A position might be defined with a number. In that case, as many as defined can be available. If the positions become available, in world-gen and when embarking, they are all filled-in completely.

If the ruling position (with PRECEDENCE of 1) has a NUMBER higher than 1, a random unit of the ones holding these positions is shown as 'head of state' in the embark screen.

Automatic spreadin of assumed, non-singular positions

If there are civ-positions that have a NUMBER higher then '1' and which are assumed (not APPOINTED_BY or ELECTED) but are not DUTY_BOUND, these are automatically spread among the civilisation, based on population. If there are a number of 20 available slots of that position, they spread among a cilivation with a combined population of, for example, 1000 of which your fortress has 100 (10%), 2 of your fortress' citizens will assume that position. This may probably also work with elected and appointed positions, but that may be depending on the death of the current holders and this needs more testing. Assumpion works within a day, anyway.

AS_NEEDED

These positions can be created automaticly by the game in world-gen. This however only works with

  • LAND_HOLDER's
  • squad commanders (needs more testing)
  • Messengers at sites

For all other types of positions, the're not created in world-gen, even if they are defined with RESPONSIBILITY's. For example, even in war, The game wouldn't create a MILITARY_GOALS position, if they have AS_NEEDED as number.

However, in fortress-mode / playermode, these positions can be created by the player at will.

Positions with AS_NEEDED need to be created first, before any symbols are assignable as 'symbols' (objects) for the position holder to carry or wear.

Positions with AS_NEEDED cannot be created and then ELECTED in fortress-mode. It only works with APPOINTED_BY.

Replacement and Required Population

The token REPLACED_BY:position means that once the replacing position reaches its required population-number, the 'to-be-replaced' position will disappear. This is defined in REQUIRES_POPULATION. These tags are closely related to eachother and seem to only have a meaningfull function if combined. Nobles with REQUIRES_POPULATION require the population to have a specific size.

This works on civ-level as well os on site-level, but those systems are in this mechanic strictly seperated. Site-level positions cannot be replaced by civ-level positions and visa versa. This makes sense, because they both depend on their own population-count. When using REQUIRES_POPULATION on civ-level, it counts the total population of the civilisation.

Effect of replacement

Replacement is immediate. The current holding unit looses the position. Even before succession_by_position-rules are applied.

Replacement is also complete. A position with a number of 1 wil replace all the slots of a position with a higher number of slots.

Even if the next position is available but not VISIBLE, replacement still takes place.

If a position is replaced, it is completely gone. It cannot be appointed, succeeded, elected or assumed any longer. The unit immediately looses its position.

In legends, replacement is mentioned as: "(unit name) ceeded to be (position name)"

The replacement of a AS_NEEDED position empties the positions slot forever. In fotress-mode It may seem as if you can create new slots and appoint new units in the nobles-screen, but this is made undone, as soon as you close the window.

Evaluation of replacement and required_population

The game does not constantly check if positions need to become available or need to be replaced. This is know behaviour with for example the mayor. He won't appear automaticly if the needed population is reached. The positions need to be "evaluated". It is not known when this will be done without any player interaction. Players can trigger the evaluation-mechanism by (re)assigning any random site position.

LAND_HOLDER replacement

The landholder-chain uses replacement differently. It does not empty the position completely, but uses it for succession to the next level's position. REPLACE_BY is required to let that system work properly. This also means that the way in which landholders succeed (replace + as_needed) does not work in any other way.

Replacement between LAND_HOLDERS and other site- or civ positions does not work, in any way. Only the vanilla replacement-sequence between levels of LAND_HOLDERs does work. If the token is omitted for land-holders, the land-holder-chain is broken, so replacement is required for the landholder-systeem to work.

REQUIRES_POPULATION does not work in the landholder-chain.

What does not work

Attention: If a position cannot be appointed, for example because of 'mutual appointment', it still exists accoring to replacements mechanics and wil replace other positions if so defined. If a certain position(a) will be replaced by the baron's-assistant, which can only be appointed by the land_holder baron, than thas position(a) still will be replaced from the start of the game, even if no baron or his assistant is ever present.

A position that is replaced by a somehow not-fillable position, is still replaced. This counts for mutual-appointing positions, replacement by not-yet assigned landholders, replacement by AS_NEEDED - positions, or replacement by not-yet-appointed positions.

Replacement does not work, if the replaced position is a land_holder, even with civ-positions. In that case, LAND_HOLDER's position is not replaced. It does not matter if AS_NEEDED is used or a fixed number and it also does not matter, what type of position the replacER is.

So this only works (correctly) with positions that become available by REQUIRES_POPULATION.

Gaining a position

There are several ways a unit can gain a position:

  • Appointment: A unit is appointed by another unit or by the player.
  • Election: A unit is elected by and among the members of the entity
  • Assumption: A position is neither elected or appointed: a random unit just simply 'takes' the position
  • Succession: a unit is the valid successor of this position(A), either by its current position(B) or because he is that position(A)-holder's heir.

Available positions will automatically be assigned to a random civ member when a new site/civ is created.

Who can take a position

  • If so defined, a unit needs the be the right caste and/or class. It does not seem to work with creature-types.
  • The unit needs to be a member of that site or its parent civ-government.
  • It needs to be CAN_LEARN or INTELLIGEND (SLOW_LEARNER cannot take positions) or otherwise be able to think.
  • It needs to be an adult.

Appointment

Positions that have a [APPOINTED_BY:position]-token require that position to exist, to be available and appointed. Any position that is APPOINTED_BY can be appointed if the appointER's position is filled in. For site-positions to be appointed, it is required that the appointER as present at that location.

If the appointing unit is temporary not present or if that position is not filled, positions depending on it cannot be appointed. This is the case with militia captains, when the militia commander is on a mission.

A site-position cannot appoint a civ-position or LAND_HOLDER, in anyway, whatsoever.

Civ-level positions can appoint other civ-level positions and site-level positions can appoint other site-level positions.

In contrary of what it said in the wiki so far, it is tested and confirmed, that civ-level nobles also CAN appoint site-level nobles. They need to be at that site to do so. Landholders can appoint both site-level and civ-level nobles. These systems are therefore not as separate as was assumed.

Mutual appointment cannot take place. If these are the only requisits of the position, then the positions will never appear or get filled. These unfillable positions can be put to good use, for example to replace a position that is no longer needed, without creating a new one.

If a APPOINTED_BY-token referres to to a non-existing positions code, it has the effect as if the appointment-token doesnt exist att all.

Automatic appointment in world-gen and on civ-level

Outside of fortress-mode, the game will always attempt to appoint nobles whenever possible, als long as these positions are available. Even if they are invisible to the player. It shows this message in legends: "(unit name) has been appointed to the position of (position name)"

In word-gen all, positions become available and are automaticly appointed, taking population- and appointment-requirements in consideration.

Positions that are REPLACED_BY are culled and wont be filled.

If a citizen of your fortress holds a civ-position that can appoint another civ-level position, the appointment will happen automatically and without player intervention. It may happen that another citizen of your fortress is appointed by that unit, creating civ-level position holders in your fortress. But it is unknown what is required to force this effect.

Manual appointments by a player in fortress mode

In fortressmode, the positions that need to be appointed stay empty on embark and it is for the player to apppoint those. A player can appoint a unit to any available position, according to the herabove mentioned conditions. The player takes the role of the automatic appointment-system. The player has no direct control over elections, successions and replacement. There are some differences in what is possible at world-gen sites and at player-controlled sites.

  • A position that is appointed by a unit present as a fortress citizen, can be appointed, re-appointed or left vacant. This means also by civ-level nobles, living as a citizen in your fortress. Not when they are only visiting, like the diplomat.
  • A position that is APPOINTED_BY a unit present as the land_holder of your site, can be appointed, reassigned or left vacant.
  • A position that has SUCCESSION BY_HEIR or BY_POSITION can 'initially' be appointed and also re-appoined or left vacant, but as soon as the [[nobles screen closes, it cannot longer be replaced or left vacant. From then on, the succession-rules determine who gains that position when the current holder looses the position.
  • A position that is ELECTED nor APPOINTED_BY, can always be (re-)appointed by the player. This is the case with the Expedition leader. If it is left vacant however, it cannot be appointed, but will assumed shortly after.
  • A position that is both ELECTED and appointed by, cannot be appointed by the player. In contrary to world-gen sites. It's slot is visible, but it doesnt show the +-sign. This is either by AS_NEEDED as by a fixed number. Even if the position somehow gets filled (re)assignment is never possible
  • A player can appoint a number of units to a position, as much as the NUMBER-token dictates. If it is AS_NEEDED, the player may create as many slots if he likes, also in contrary of world-gen-sites.
  • A Civ-position can never be appointed, even if the apointING Civ-noble is a citizen of your fortress. A civ position also never can be re-assigned or left vacant, would that position be defined as appointed by a site-position.

Election

Read more in Elections

The message that is shown, is: "(creature name) has been elected to the position of (position name)"

In worldgen, there is no functional difference between ELECTED and non-appointment, except that elected nobles tend to have high social skills and/or skills related to the position, while non-elected ones are assigned randomly.

A election goes before succession.

A position that is also APPOINTED_BY gets never elected. Even if the position somehow gets filled, (re)-elections wont happen. So, it doesn't seem possible to have a elected position become available from a certain land_holder's level.

A ELECTED civ-(or LAND_HOLDER)-position at your site will never be (re)-elected in fortress-mode. So real (re-)election only works with SITE-positions.

When a settlement gets up a level in the LANDHOLDER-track, a election is happening, in which the current electable positions undergo a new election-round.