Background

Players can't manually allocate labor to or from a tech program. However, planets can automatically allocate labor away from the tech program during periods of high labor demand. They have no mechanism to allocate it back, so any reduction of labor allocated to a tech program is permanent.

The Problem

Players manually assign 100% labor to two defense structures for a single watch, which dupes the planet into assigning labor away from the tech program.

This exploit allows players raise planetary TL without paying for it. In most cases using the exploit is strictly better than a foundation link for worlds that don't need to go above TL7 - it costs nothing and can't be interfered with by enemy attacks.

Mechanics of the Problem

A planet that suddenly experiences unusually high WU demand from other structures will allocate labor away from a program to run the other structures. There is no mechanism to allocate WUs back to the program when the deficit is resolved (there is a similar issue with planetary defenses themselves, but it is less of an issue because defense allocations are manually controllable by the player while tech program allocation is supposed to be a fixed percentage.)

The game doesn't seem to connect non-production effects like program tech uplifts to labor allocation, so the program will continue to fulfill its function normally with partial or no labor allocated to it.

The Solution

First, planets should attempt to assign labor using the following priorities:

  1. "fail-deadly" structures with alloc:demand and alloc:max (habitat structures, consumer goods autofac up to on-planet demand but not beyond, trillum refinery up to on-planet demand but not beyond)
  2. structures with alloc:fixed AND noPlayerAlloc: true (tech program)
  3. structures with alloc:demand
  4. structures with alloc:fixed but not noPlayerAlloc: true (planetary defenses, militia base)
  5. structures with alloc:max (a.k.a primary structures)

Second, implement either or both of these:

  • a mechanism where the game "remembers" and attempts to respect both fixed noPlayerAlloc: true labor allocations and player-assigned fixed labor allocations
  • when labor is allocated away from a tech program, it stops uplifting a full TL and/or becomes ruined
george moromisato on 7/10/2018 8:57 PM:

I made a lazier fix (in Era 4.4): improvement that cannot be changed by the user (such as Fusion Program) are never reduced in allocation. This prevents the exploit, though in some cases it leads to starvation (if the player creates a Fusion Program on a marginal world).