Some mods target the Mono version of the game, which is available by opting into the Steam beta branch "alternate"
More Workers Mono
Adds in-game tools to author and adjust worker idle points per property, with visual markers, hotkeys, and support for extra hire locations like Motel Room, RV, and Sewer office, including in‑game movement of existing/default idle points.
By Khundian
| Date uploaded | 7 months ago |
| Version | 1.0.2 |
| Download link | Khundian-More_Workers_Mono-1.0.2.zip |
| Downloads | 226 |
| Dependency string | Khundian-More_Workers_Mono-1.0.2 |
This mod requires the following mods to function
LavaGang-MelonLoader
The World's First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono
Preferred version: 0.7.1ifBars-SteamNetworkLib_Mono
A streamlined, object-oriented Steam networking library designed specifically for Schedule 1 mods.
Preferred version: 1.2.0README
More Workers
Adds in-game tools to author and adjust worker idle points per property, with visual markers, hotkeys, and support for extra hire locations like Motel Room, RV, and Sewer office, including in‑game movement of existing/default idle points.
Authenticity & Integrity
- SHA256 Hash: Khundian.S1.MoreWorkers-IL2Cpp.dll
98B7D1C9AAF8A5619CCB941DF35CEEE87940943BA1DD8FA8B153E19EDAB75BC7
- SHA256 Hash: Khundian.S1.MoreWorkers-Mono.dll
FA3A61A52D83311B17F5FD164CEB466C8F5947FC4097407180FDBF93FC2CAFCE
Current Supported Properties
- Barn
- Bungalow
- Docks Warehouse
- Hyland Manor
- Motel Room
- RV
- Sewer office
- Storage Unit
- Sweatshop
Features
- Manual idle points via world-space JSON (appended after existing/default idle points), with automatic deduplication of points that are extremely close together (closer than ~0.15m when loading JSON, or 0.25m for in-game capture/moves) so that only meaningful, distinct idle slots are created.
- Visualization of idle points in-game (blue = existing/default, green = manual; yellow highlight when editing a selected idle point).
- Authoring Mode:
- Capture new manual idle point (F9).
- Select and move idle points (manual and existing) on the nearest property (Shift+F8 / F8).
- Refresh cached
points.jsondata and redraw markers (F10, visual only). - Remove the last manual idle point for the nearest property when it is not currently assigned to a worker (F11).
- Co-op note: only the host can use authoring hotkeys; clients are view-only.
Installation
Mod Manager
- Install More Workers (choose the Mono or IL2Cpp variant that matches your game build).
- Install SteamNetworkLib (required; Thunderstore auto-installs dependencies, other mod managers may not):
SteamNetworkLib Monofor MonoSteamNetworkLib IL2Cppfor IL2Cpp
- For co-op, all players (host + clients) must install the same variant and dependencies.
Manual Install
- Install the required dependencies first (MelonLoader + SteamNetworkLib for your build).
- Copy the mod DLL into your game
Modsfolder:- Mono:
Khundian.S1.MoreWorkers-Mono.dll - IL2Cpp:
Khundian.S1.MoreWorkers-IL2Cpp.dll
- Mono:
- For co-op, all players (host + clients) must install the same variant and dependencies.
Quick Start
- Enable Authoring Mode in
More Workers.cfgor via ModsApp. - Go to a property, stand near it, and press F9 to add a manual idle point for the nearest property.
- Use F10 to refresh More Workers' cached
points.jsondata and redraw markers if visuals look out of sync (visual-only; does not force new disk edits into already-loaded properties). - Use F11 to remove the last manual idle point for the nearest property.
- Use Shift+F8 / F8 to select and move idle points (manual and existing) on the nearest property.
Hotkey Summary
| Action | Default key(s) | Scope |
|---|---|---|
| Capture manual idle point | F9 | Nearest property |
| Refresh JSON cache and markers | F10 | Global (visual) |
| Remove last manual idle point | F11 | Nearest property |
| Select idle point (manual/existing) | Shift+F8 | Nearest property |
| Move selected idle point | F8 | Selected property |
Settings (*.cfg edit or ingame mod managers like ModsApp)
- Skip RV: Hides the RV from fixer/hiring location dialogues. Turn this off only if another mod keeps the RV around as a persistent property.
- Authoring Mode: Enables the in-game authoring overlay and markers.
- Hotkeys:
- Move Key (default F8): Move key for idle point overrides (Shift+key selects the nearest idle point on the current property; key moves the selected point).
- Capture Key (default F9): Capture your current position/yaw as a manual idle point for the nearest property.
- Reload Key (default F10): Refresh More Workers' cached
points.jsondata and redraw markers (visual only). - Remove Key (default F11): Remove the last manual point for the nearest property.
Authoring Workflow
- Enable Authoring Mode in "More Workers.cfg" or ModsApp.
- Markers: blue = existing/default, green = manual. Numbers show per-property indices.
- Stand near the target property, press F9 to capture your position/yaw.
- The mod adds a live idle slot immediately so hiring unlocks right away, as long as the new point is at least ~0.25m away from any existing idle point on that property.
- Optional: Press F10 to refresh the mod's cached JSON and redraw markers if the overlay looks out of sync; this does not retroactively create or remove idle points based solely on new edits to
points.jsonon disk. - Press F11 to remove the last manual point for the nearest property.
- If no employee is currently using that idle point (no worker has their idle behaviour bound to that
IdlePoint), the manual idle point is removed both frompoints.jsonand from the liveEmployeeIdlePointsarray, the green marker disappears, and capacity is recomputed immediately. - If the idle point is in use (assigned to a worker), removal is denied and the mod logs a clear message; you can move or fire the worker first, then remove the point safely.
- If no employee is currently using that idle point (no worker has their idle behaviour bound to that
Moving Idle Points (Manual & Existing)
You can select and move both manual (green) and existing (blue) idle points using the same keys:
- Ensure Authoring Mode is ON.
- Stand near the property you want to edit. The authoring tools will automatically target the nearest property.
- Hold Shift and press the Move Key (default F8):
- The nearest idle point on that property is selected (manual or existing). If both a manual and an existing point are nearby, whichever is closer to you is chosen.
- Its marker and index label turn yellow and the HUD shows
Editing manual #idxorEditing existing #idx.
- Walk to the new desired location for that idle point.
- Press the Move Key again (default F8, without Shift):
- The selected idle point is moved to your current position/yaw.
- For manual points, the move is written into the
pointslist inpoints.jsonand applied immediately to the correspondingMW_MANUALtransform. For existing points, the move is written intoexistingoverrides and applied immediately to the live transform. - The marker returns to its normal color (green or blue) at the new location.
Notes:
- This feature only moves idle points; it does not delete or disable them. Indices remain stable, which helps preserve save compatibility and avoids breaking other mods that rely on those idle points.
- You can use this safely with other mods that add or adjust worker idle points-More Workers will move their existing points in place rather than removing them.
Hot-Reload Behavior
- Capture (F9): Writes to JSON and appends a live idle slot immediately (subject to the ~0.25m spacing rule); capacity is updated so that it always matches at least the number of idle points and never drops below the current employee count.
- Remove (F11): Writes to JSON and, when safe (idle point not currently in use), removes the corresponding live idle slot immediately and recomputes capacity so hiring limits stay in sync with actual available slots.
- Reload (F10): Refreshes More Workers' cached JSON and redraws markers (visual only); it does not by itself create/remove idle transforms or force mid-session disk edits in
points.jsoninto already-loaded properties. - Move idle point (Shift+F8 / F8): Selects the nearest idle point on the current property (manual or existing) and updates its position/yaw, writing the change to
points.json(pointslist for manual,existingoverrides for existing) and applying it immediately to the live idle transform.
Cleaners, Bins, and Loading Docks
More Workers is intentionally scoped to idle points and worker capacity. It does not add or modify bins, disposal areas, or loading docks at any property.
- For most jobs, adding idle points and capacity is enough: employees walk from their idle point to existing workstations and behave as expected.
- Cleaners are special: they also need a valid disposal target (bin/disposal area) to drop trash bags.
- Properties like Sewer office can hire workers once you author idle points, but vanilla does not give them a dedicated bin/disposal area.
- For RV, vanilla gameplay does not keep it around past the prologue. More Workers does not prevent that event or resurrect the RV on its own. If another mod enables RV as a persistent property, More Workers mod can add idle points and allow hiring via dialogue, but that other mod is also responsible for providing a suitable bin/disposal area for cleaners.
With only this mod installed (no bin/disposal-area mods):
- Cleaners you assign to Sewer office or an enabled RV will have nowhere to dispose of trash bags.
- When a trash bag is full, they will tie it off and leave it on the ground near where it was filled, ignore that bag from then on, and return to their idle point.
To keep maximum compatibility, this mod does not spawn bins, disposal areas, or loading docks, and it does not rewire those systems. That work is left to dedicated content mods. If you want fully functional cleaners and trash/disposal flows at Sewer office, pair More Workers with mods that add those structures, for example:
Multiplayer
More Workers is designed to be safe in co-op by keeping the host authoritative over worker layouts and capacity.
- All players (host + clients) must have More Workers installed for co-op. This mod syncs the host's idle layout/capacity to clients at runtime.
- SteamNetworkLib is required on all players (use the Mono or IL2Cpp variant that matches your game build).
- Only the host/server instance authors idle layouts (manual points, existing overrides) and writes
points.json. Clients mirror the host's effective idle layout/capacity in-memory so co-op stays in sync. - On the host, authoring hotkeys (F9/F10/F11/F8) work exactly as described in this README. On clients, the same keys do not change layouts (they may log / show Fixer SMS that authoring is host-only).
- Clients can see the same markers and HUD overlay as the host, but they cannot change idle layouts; they are viewing the host's state.
File Locations
- Config:
UserData/More Workers/More Workers.cfg - Manual idle points:
UserData/More Workers/points.json
Helpful Mods
These mods are not mandatory, but nice to have!
- ModsApp: (Helpful for configuring settings ingame; enable Authoring Mode or change hotkeys.)
- IL2Cpp & Mono (S1API): https://new.thunderstore.io/c/schedule-i/p/k0Mods/ModsApp/
- SewerEmployees: (Adds employees and a proper trash/disposal flow for Sewer office; pairs well with More Workers' extra idle points and capacity.)
Troubleshooting (v0.4.0+)
Fewer Idle Points Than Expected
- Symptom:
points.jsonlists more idle points for a property than you see in-game (fewer markers, fewer available worker slots). - Cause: From v0.4.0 onward, any idle point very close to an existing idle point is treated as a duplicate and does not create a separate live slot. In current versions this is ~0.15m when loading from JSON, and ~0.25m when capturing with F9 or moving idle points with F8.
- What to do:
- Inspect the coordinates for that property in
points.jsonand ensure each intended idle point is at least ~0.25m away from its neighbors. - Adjust or remove tightly clustered points.
- Inspect the coordinates for that property in
Fewer Hireable Workers Than Before
- Symptom: A property used to allow more workers, but after upgrading or after removing idle points, the fixer blocks new hires sooner than expected.
- Cause:
EmployeeCapacitynow tracks the number of distinct idle points (with a floor at the current employee count). If multiple JSON points are closer than the dedup thresholds (~0.15m on load / ~0.25m in-game) and get deduped, the effective idle count (and thus capacity) is lower than the raw JSON list. - What to do:
- Check how many idle markers you actually see on that property in-game.
- Make sure each intended idle slot in
points.jsonis at least ~0.25m apart so they are treated as separate idle points.
F8 Move or F9 Capture Appear to Do Nothing
- Symptom: You stand near a property, press F9, and no new marker appears;
points.jsonalso does not gain a new entry for that property. - Cause: If your capture position is within the minimum spacing of an existing idle point (~0.25m), the mod refuses to create a near-duplicate idle slot and logs a message instead of stacking another point. The same spacing rule also applies when moving idle points with F8: attempts to move into a too-close overlap are denied and logged.
- What to do:
- Check the MelonLoader console/log for a message similar to:
Cannot add idle point: too close to an existing idle point for 'PropertyName'. - Move a bit further away from the existing marker (more than ~0.25m) and press F9 again, or choose a new F8 target position that is at least ~0.25m away from other idle points.
- Check the MelonLoader console/log for a message similar to:
CHANGELOG
Changelog
[1.0.6] - 2026-01-05
- Fixed snap-to-ground for manual idle point authoring in multi-floor interiors (e.g., Docks Warehouse) by probing 0.5m below the camera/player reference before snapping.
[1.0.5] - 2026-01-04
- Documentation updates.
[1.0.4] - 2026-01-04
- Fixed co-op layout sync reliability by chunking large layout payloads across multiple lobby SyncVar keys (avoids Steam lobby data truncation).
- Clients now prime/rebuild layouts from existing lobby state on join (no missed snapshot if the host published before the client initialized SyncVars).
- Replaced runtime-dependent
GetHashCode()layout hashing with a deterministic hash to prevent false rebuild mismatches across machines/builds. - Added extra opt-in co-op/load diagnostics to help pinpoint client load replication exceptions (rate-limited;
EnableCoopNetLogging).
[1.0.3] - 2026-01-01
- Added opt-in co-op/network troubleshooting logs via
EnableCoopNetLogging(disabled by default in release builds). - Standardized co-op log prefixes to
[COOPNET][…]and masked SteamIDs in host/sender checks. - Expanded co-op diagnostics to include FishNet state transitions, layout sync request gating reasons, lobby host identity checks, and surfaced exceptions (rate-limited).
[1.0.2] - 2025-12-30
- Fixed client join hangs and desync by syncing the host's idle layout/capacity to clients at runtime.
- Switched layout sync transport to SteamNetworkLib for IL2CPP-safe mod networking.
- Client authoring remains view-only, while the debug marker overlay mirrors host manual/existing points and updates when the host edits.
[1.0.1] - 2025-12-27
- Improved robustness of
points.jsonsaves by using an atomic replace when updating the file.
[1.0.0] - 2025-11-23
- Release.
[0.9.0] - 2025-11-23
- Documentation updates.
[0.8.0] - 2025-11-23
- Aligned manual JSON append deduplication on Mono with IL2CPP by using the same ~0.15m spacing threshold when appending manual idle points onto existing idle arrays, ensuring backend parity for how closely manual points can be placed.
- Full backend parity check.
[0.7.0] - 2025-11-23
- Added in-world SMS feedback from the Fixer NPC for authoring errors (too-close captures, attempts to remove an in-use idle point, and client-only edits in co-op), with a short cooldown so players get clear guidance without message spam.
[0.6.0] - 2025-11-21
- Unified existing/manual idle point editing so Shift+F8 always selects the nearest idle point on the current property (manual vs existing decided by distance and the Override Existing toggle), and F8 moves exactly the selected point instead of whichever worker is closest at move time.
- Fixed manual idle point movement to track a specific
EmployeeIdlePointstransform backed by a matching JSON entry, so the yellow highlight, JSON update, and worker transform all refer to the same slot. - Improved authoring visuals: manual markers now highlight by the selected transform index (not by draw order), and the HUD clearly distinguishes between
Editing manual #idxandEditing existing #idxfor the active property. - Added DEBUG-only Motel Room instrumentation to log manual idle JSON counts and live idle array lengths before/after application, making it easier to diagnose property-specific layout issues without affecting release behavior.
- Reduced the minimum spacing for authoring/moving idle points to 0.25m and tightened load-time deduplication to ~0.15m, so closely positioned points are still treated as distinct when intended while double-application of the same JSON data (e.g., for Motel Room or RV) no longer produces duplicate live slots.
- Added name-based guards for
Motel RoomandRVin the worker adjustment pipeline (similar to the existing Sweatshop handling) to prevent cross-component double-processing when both base and derived property components run our postfix. - Reworked the F8 hotkey in ModsApp as a first-class "Move Key" entry above Capture, and made the advanced "Override Existing Idle Points" toggle default-on and hidden outside debug builds so overrides are always available in normal play without extra configuration.
[0.5.0] - 2025-11-20
- Multiplayer safety: made the host/server authoritative over idle layouts and capacity in co-op by only applying manual points, existing overrides, and
EmployeeCapacityrecalculations on authoritative instances (FishNet / Il2CppFishNet), while pure clients stay read-only. - Authoring hotkeys are now host-only in multiplayer: on pure clients F9/F10/F11/F8 no longer mutate the world and instead log that authoring is host-only and should be performed by the host.
- Improved 1.0m-spacing handling for manual idle points on properties that have no vanilla idle points by deduplicating clustered manual JSON entries when building the first
EmployeeIdlePointsarray, so live idle slots now always match the described 1.0m rule even for JSON-only properties.
[0.4.0] - 2025-11-19
- Added safe live removal of manual (green) idle points: F11 now deletes the last manual idle point for the nearest property only when no employee is currently using that exact idle
Transform(checked via each employee's IdleBehaviour / WaitOutside.IdlePoint). - Enforced a minimum spacing of 1.0m between idle points when capturing with F9 or loading manual points from JSON (including properties that previously had no idle points), preventing nearly overlapping idle slots that could confuse AI and live removal.
- Updated capacity handling so EmployeeCapacity tracks the current idle-point count (with a floor at the current employee count) instead of being expand-only; this keeps fixer hiring limits aligned with actual available slots and avoids over-allocating workers after removing idle points.
- Updated authoring visualization so green manual markers are now drawn from live
EmployeeIdlePoints(MW_MANUAL transforms) rather than raw JSON only, ensuring the overlay matches the deduplicated runtime idle slots even when JSON contains near-duplicate points. - Added a 1.0m spacing check when moving existing/default idle points with F8 so that overrides cannot place a blue slot closer than 1m to any other idle point (blue or green); moves that would violate this are denied with a clear log message.
[0.3.0] - 2025-11-16
- Added an advanced "Override Existing Idle Points" pipeline backed by JSON
existingoverrides, allowing baseline (blue) idle points to be repositioned per property while keeping indices and capacity behavior stable. - Introduced in-game authoring for existing idle points (when the advanced toggle is enabled): Shift+F8 selects the nearest existing point on the current property (highlighting it yellow), and F8 moves that point to the current player/camera position with ground snap and immediate marker refresh.
- Made the existing-idle override key configurable via ModsApp (
Existing Idle Override Key).
[0.2.1] - 2025-11-16
- Improved authoring HUD overlay so the “Next idx (existing + manual)” counter reflects the future idle-point layout immediately after F11 (baseline existing points stay stable; manual JSON points update live).
[0.2.0] - 2025-11-14
- Added Motel Room and RV support: manual idle points, capacity adjustments, and dialogue integration so both properties appear as hireable locations when owned (RV is gated by a Skip RV dialogue toggle).
- Extended manual idle point flow to properties without default idle points by creating
EmployeeIdlePointsarrays directly from JSON/F9 captures. - First-capture authoring now creates a live idle point when none exist, so capacity can expand in-session without requiring a restart.
- Added built-in anchors for Motel Room and RV to improve nearest-property selection and authoring ergonomics.
- Added Sewer office support via the same manual idle point + capacity flow; workers can be hired once idle points exist, while cleaners still require a bin/disposal-area mod (e.g., SewerEmployees) for full functionality.
- Improved F11 behavior so Remove always targets the nearest property rather than the last selected one.
[0.1.1] - 2025-11-09
- Image fixes in readme
[0.1.0] - 2025-11-09
- Authoring Mode with in‑game visualization (blue = existing/default, green = manual) and index labels.
- Hotkeys: Capture (F9), Reload (F10), Remove (F11).
- Capture writes to JSON and appends a live idle slot immediately; capacity expands to match idle count.
- Reload refreshes points.json and redraws markers (visual); full reconcile on next scene/load.
- Remove pops the last manual point in JSON; visually hides the corresponding marker; the live slot is pruned safely on next reload.
- Snap‑to‑ground enabled.
- Capacity is expand‑only (max of baseline vs current idle count); never shrinks mid‑session.
- JSON format (world-space) at
UserData/More Workers/points.json. - Marker dedup and clarity: skip drawing
MW_MANUALtransforms as "existing"; avoid duplicate blue/green at the same spot. - Added property anchor: Hyland Manor at (164.00, 11.76, -67.00).
- Authoring HUD overlay improvements:
- Lowered position to avoid new HUD icons (safe-area aware).
- Semi-opaque black background for readability.
- Larger font size and retained shadow for contrast.
- Dynamic sizing via text measurement to prevent clipping; fixed degree symbol (°).