Skip to content

Control post

A Control post is a job position on a Controllable — pilot, engineer, trade officer, defence NPC, etc. Each post defines which skills matter for the assigned entity’s combined-skill.

Inheritance: dbdata → controlpost.

PropertyTypeDescription
.namestringDisplay name
.rawnamestringRaw text entry reference
.descriptionstringDescription
.iconstringIcon id
.typeentitytypeEntity type for this post
.tagtagTag for this post
.skilltypeslistRelevant skill types
.skillrelevance.{skilltype}int 0..100Per-skill contribution percentage
.skillrelevance.<skillname>intShortcut by skill name
.isindependentboolOwnership independent of host object

The common post enum values used in vanilla:

  • controlpost.aipilot — AI pilot
  • controlpost.captain — Player’s captain on player-flown ship
  • controlpost.engineer — Engineer
  • controlpost.defencenpc — Defence officer
  • controlpost.tradenpc — Trade officer
  • controlpost.shiptrader — Shiptrader (shipyard)
  • controlpost.shadyguy — Black-market dealer
<assign_control_entity
actor="$pilot"
object="$ship"
post="controlpost.aipilot"
init="true"
transfer="true"/>

Pattern from vanilla cpu_ship_manager.xml:264. See NPC → Actions.

<set_value name="$pilot"
exact="$ship.controlentity.{controlpost.aipilot}"/>

The .controlentity.{controlpost.X} accessor lives on Controllable.

<do_for_each name="$skill"
in="controlpost.aipilot.skilltypes">
<write_to_logbook
text="$skill.name + ': '
+ controlpost.aipilot.skillrelevance.{$skill}
+ '%'"/>
</do_for_each>
  • .skillrelevance.{skill} returns a percentage (0..100), not a fraction. Divide by 100 for multipliers.
  • .isindependent controls ownership inheritance. Crew at a non-independent post belong to the host’s faction; independent post crew keep their own ownership (typical for mission actors).
  • Control posts are db-defined. Modders rarely add new posts — most additions go through entity roles.