Skip to content

Welfare module

A Welfare module is a station Module that provides workforce morale bonuses. It contributes to Station.workforce.bonus — the multiplier that boosts production rates above baseline.

Inheritance: component → destructible → module → welfaremodule. The datatype declares no own properties (scriptproperties.xml:1112). Like Defence module and Connection module, welfare module is a class label — its effect is folded into the station-level workforce bonus.

No welfare-module-specific properties. Use:

  • Inherited from module: .numdocks.{docksize}, .haswalkableroom
  • Inherited from destructible: .hull
<do_for_each name="$mod" in="$Station.modules">
<do_if value="$mod.isclass.welfaremodule">
<!-- welfare module -->
</do_if>
</do_for_each>
<do_if value="event.param3.isclass.welfaremodule">
<!-- player added a welfare module -->
</do_if>

"Check workforce bonus impact at station level”

Section titled “"Check workforce bonus impact at station level””

Welfare modules don’t expose their own contribution. To know what a welfare module adds, compare Station.workforce.bonus before and after:

<set_value name="$Before"
exact="$Station.workforce.bonus"/>
<!-- ... welfare module added ... -->
<set_value name="$After"
exact="$Station.workforce.bonus"/>
<set_value name="$Gain"
exact="$After - $Before"/>
  • Welfare module declares NO datatype properties. All effects are folded into the station-level workforce.bonus.
  • No per-module “bonus value” accessor. Vanilla doesn’t expose per-welfare-module contribution. Read the aggregate at station level.
  • Welfare without habitation is wasted. Welfare scales workforce bonus — a station without habitation has no workforce, and welfare adds zero. Pair them.
  • Different welfare types may stack differently. Some moduletypes are “diminishing returns” — adding more of the same type yields less per module. The mechanic is engine-side and not directly modifiable from MD.