A unit inside another unit is an "occupant" in a "transport", even if the "transport" can never move. There are two kinds of capacity. Generic capacity is shared by all different types, while guaranteed capacity is for a particular type only.
UnitTypeProperty: capacity n
This property is the limit on the sum of sizes of units that may occupy this
type of unit, not counting the exclusive capacities.
Defaults to 0.
Table: unit-size-as-occupant u1 u2 -> n
This table is the "size" of a (full-sized) unit u1 when it is in
a transport u2.
Defaults to 1.
Table: unit-capacity-x u1 u2 -> n
This table is the number of units of type u2 that are guaranteed
a place in a unit of type u1.
Defaults to 0.
Table: occupant-max u1 u2 -> n
This table is the upper limit on the number of occupants of this type
(not counting unit-capacity-x).
Defaults to 0.
UnitTypeProperty: occupant-total-max n
This property is the upper limit on occupants of all types together.
Defaults to -1, which allows unlimited occupancy.
A unit that is an occupant may not always have the same capabilities as when it is out in the open. Its vision, combat, construction, and capacity may be affected.
Table: occupant-vision u1 u2 -> t/f
Table: occupant-combat u1 u2 -> n%
This table defines the effect on the combat abilities
of a unit of type u1 when an occupant in a unit of type u2.
If 0, then the occupant cannot attack or fire.
Defaults to 100.
Table: occupant-can-construct u1 u2 -> t/f
This table is true if u1 can
create or complete units while an occupant of u2.
Defaults to false.
Table: occupant-can-have-occupants u1 u2 -> t/f
This table is true if u1 can have occupants of its own
while an occupant of u2.
Defaults to false.