Problem
scripts/constants.gd defines only two worker names:
const WORKER_NAMES := ["Jun", "Mara"]
recruit_worker() in scripts/main.gd (line 1080) cycles through them by index:
var next_index: int = current % len(WORKER_NAMES)
var new_worker := {
"name": WORKER_NAMES[next_index],
...
}
With BASE_WORKER_CAP = 2 and each hut adding +2, even one hut raises the cap to 4. Workers cycle: Jun, Mara, Jun, Mara. Two workers named "Jun" are indistinguishable in the UI, the event log, and WORKER_BADGE_COLORS (which keys on name).
Fix
Options (pick one):
- Expand the list — add 8-10 more names to
WORKER_NAMES and the corresponding badge colors to WORKER_BADGE_COLORS
- Unique suffix — append a number or roman numeral when cycling: "Jun II", "Mara II"
- Random from expanded pool — pick randomly from a larger list, with collision avoidance
Option 1 is simplest and keeps the deterministic cycling. The pool needs to cover at least the max realistic worker count (~8-10 with multiple huts).
Acceptance criteria
Problem
scripts/constants.gddefines only two worker names:recruit_worker()inscripts/main.gd(line 1080) cycles through them by index:With
BASE_WORKER_CAP = 2and each hut adding+2, even one hut raises the cap to 4. Workers cycle: Jun, Mara, Jun, Mara. Two workers named "Jun" are indistinguishable in the UI, the event log, andWORKER_BADGE_COLORS(which keys on name).Fix
Options (pick one):
WORKER_NAMESand the corresponding badge colors toWORKER_BADGE_COLORSOption 1 is simplest and keeps the deterministic cycling. The pool needs to cover at least the max realistic worker count (~8-10 with multiple huts).
Acceptance criteria
WORKER_BADGE_COLORShas an entry for every name inWORKER_NAMES