
Realistic Worker Costs Mod for Farming Simulator 25
Adds realistic ongoing wage costs for hired workers, making farm management more challenging and strategic.
MAIN FEATURES:
– Configurable wage system: Choose hourly or per-hectare payment
– Three wage levels: Low ($15/h), Medium ($25/h), High ($40/h)
– Skill-based pricing: Workers with higher skills earn higher wages
– Full in-game settings integration
– Console commands for complete control
– Multiplayer compatible
– 10 language support
– Save game compatible
HOW IT WORKS:
Workers now cost money while they’re active! The mod automatically calculates and deducts wages based on:
1. Time worked (hourly mode) OR hectares worked (per hectare mode)
2. Worker skill level (80%-120% multiplier)
3. Your chosen wage level or custom rate
SETTINGS OPTIONS:
– Enable/Disable: Toggle the mod on/off
– Cost Mode: Hourly or Per Hectare
– Wage Level: Low, Medium, or High base rates
– Custom Rate: Set your own wage rate
– Notifications: Toggle payment alerts
– Debug Mode: Extra logging
CONSOLE COMMANDS:
Type ‘workerCosts’ in console for full list, including:
– WorkerCostsEnable/Disable
– WorkerCostsSetWageLevel 1|2|3
– WorkerCostsSetCostMode 1|2
– WorkerCostsSetCustomRate
– WorkerCostsTestPayment
– WorkerCostsShowSettings
– WorkerCostsResetSettings
INSTALLATION:
1. Extract to your FS25 mods folder
2. Enable in mod menu
3. Configure settings in-game or via console
COMPATIBILITY:
– Works with FS25 (all versions)
– Multiplayer supported
– Compatible with most other mods
– Safe to add/remove from existing saves
This mod adds a new layer of financial management to your farming operation. Now you need to consider not just equipment costs, but also labor expenses when planning your farm’s profitability. Makes the game more realistic and challenging!
Perfect for players who want more economic depth and realism in their farming experience.
v2.2.1.0 – Worker Dossier, Hiring Hall rotation, dashboard fixes
Builds on the Pro-Staff 2.2.0.0 release with the work that landed after it.
New & improved
Worker Dossier panel and a timed Hiring Hall rotation.
Hire-hall panel now uses the FarmTablet focus API, so it plays nicely with the tablet (#84).
Fixed
Dashboard cleanups: clearer naming, the effective-rate header no longer shows twice, and the tier unit is dynamic now (#81, #82, #83).
Multiplayer sync of worker lifecycle and history, plus job-resume binding so assignments survive properly (#78, #79).
v2.2.0.0 – Pro-Staff: Hiring Hall, Worker Dossier & multiplayer
The Pro-Staff update is here — your helpers are now a real team you build up over time instead of a pile of interchangeable workers. Back up your save first, just to be safe.
Hiring Hall
Daily hiring limit of 5 a day, resets each morning and sticks across save/reload. The panel shows how many you have used.
Trusted employees pin to the top with a star. Saves, and shows for everyone in multiplayer.
Earn your Masters through experience on the job. They are no longer offered for hire; Experienced workers start appearing once your crew has put in hours.
Timed rotation – the hall now refreshes once per day instead of refilling on demand, and the pool survives a save/reload so it is not a free re-roll.
Worker Dossier
The Pro-Staff panel (ALT H) is now a master-detail dossier: click a worker for their skill and fatigue gauges, lifetime hours and jobs, a recent job history, and their base to effective wage. Hire, fire with severance, assign to a vehicle, and mark trusted, all from one place.
Under the hood
Multiplayer – roster, lifecycle and job history sync to clients from the host.
Job continuity – a worker re-binds to their vehicle when a job resumes after a reload, instead of a duplicate being hired.
Farm Tablet – the panel steps aside when the tablet is open, so two overlays never fight.
UI fixes – dashboard wording matches the wage tab (Payment Strategy / Compensation Tier), the duplicate Effective Rate header is gone, and the tier unit now follows the chosen strategy ( / h v s /ha).
Notes
Old saves load fine. Console: type workerCosts. Open the panel with ALT H. Big thanks to Arissani for the ideas behind this one. Shout if anything looks off.
V2.1
Pro-Staff goes multiplayer, with a cross-mod command and financial API powering the new Farm Tablet Personnel app.
Highlights
Full multiplayer: the roster is host-authoritative and syncs to every client. Clients can hire, fire, and assign, and the result broadcasts back to everyone.
Recruitment pool: a rotating set of candidates with their own level and one-off signing cost. Hire a specific candidate or reroll the pool.
Cross-mod command and financial API: hire/fire/assign plus an enriched roster snapshot (per-worker effective rate, severance, and Pro-Staff cost impact) for the Farm Tablet Personnel app.
The Pro-Staff Panel (ALT+H) now routes through the same command pipeline, so a host action also syncs to clients and hiring applies the signing cost everywhere.
Requires FS25_FarmTablet 2.4.0.0 for the Personnel app.
v1.0.9.5 – Settings persistence and clearer wage settings labels
What’s fixed
Your Payment Strategy and Compensation Tier settings now stick after a save and reload. They were resetting to defaults because the mod read its settings too early, before the savegame was ready.
What changed
Renamed Cost Mode to Payment Strategy and Wage Level to Compensation Tier in the Wage Settings tab.
Removed the duplicate row labels under each section header so the tab reads cleaner.
Thanks to Arissani for the reports.
v1.0.9.4 – Hotfix
textWrap is not a real FS25 TextElement attribute; engine default textMaxNumLines=1 truncated every WC_BodyText with ‘…’. Set explicit textMaxNumLines on all 7 usages (menu page, about x2, dashboard, worker stats, salary dialog, wage settings help)
Est. Cost now shows in per-hectare mode: rate x hectares accrued this interval via new WorkerSystem:getEstimatedIntervalCost(); also used on worker stats page for total/per-worker/breakdown costs
Dashboard worker list shows ‘Helper (Vehicle Name)’
l10n: payment interval is 30 min since the #38 fix, not 5; updated all 20 stale strings and dropped a redundant help sentence
v1.0.9.3 — Wage Settings Fixes
What’s Fixed
Wage settings now save correctly — changing Cost Mode or Wage Level and then switching tabs no longer resets your choices back to defaults.
Enable Mod toggle works properly — turning the mod off and then back on now actually sticks. Previously the mod would always revert to off once you switched tabs.
Wage Level no longer rapid-cycles — pressing the left/right arrows on Wage Level would previously trigger an unstoppable loop until you interacted with Cost Mode. This is now fixed.
Cost Structure panel is now mode-aware — when you switch to Per Hectare mode, the Cost Structure text on the right side of the Wage Settings tab now shows per-hectare rates and billing notes instead of the hourly version.
Notes
No save game migration needed — existing saves load normally
All settings are saved per save game as before
V1.0.9.2 Fixes
#38 / #34 — Payment interval changed from 5 → 30 real-world minutes; job-completion notification shows total cost charged when a worker is dismissed
#37 — About page: version number now displays correctly; panel height expanded to prevent text cutoff
#36 — Renamed “Worker Breakdown” section to “Labor Cost Breakdown”
#35 — Renamed “Help” tab to “Cost Structure”; fixed toggle row overlap and text overflow in settings
V1.0.9.1
– Fixed: NPC neighbor workers (e.g. from FS25 Working Neighbor On Field) were incorrectly being billed to your farm. Worker cost tracking now checks farm ownership so only your hired workers count.
– New: Full Danish translation added (63 strings). Thanks to DJWestDK!
V1.0.9.0
– Added mission.workerCostsManager cross-mod bridge for FarmTablet
– Fixed aiSystem:getActiveJobs() + dynamic currency symbol
– Fixed MoneyType and active job detection for helper wage suppression
– Fixed Monthly salary dialog, localization, packaging, tab icon
– Fixed Ultrawide layout, balance box anchoring, checkbox crash
– Fixed FS25 textured icon; DXT1 compression
– Bumped version to 1.0.9.0
V1.0.8 What’s fixed
Ultrawide (21:9) balance text mispositioned
The farm balance display in the pause menu tab was appearing in the wrong place at resolutions like 3440×1440. The position was hardcoded from the left edge of a panel that scales wider at ultrawide aspect ratios. It now uses a fixed 1034px coordinate shell so it always sits in the top-right of the header.
Checkbox crash in Wage Settings (FS25 1.17)
The fs25_optionCheckbox GUI profile no longer exists in FS25 1.17.0.0. All three setting toggles were falling back to a base-reference element that lacked the required internal structure, triggering a mouseEvent crash (attempt to index nil with ‘absPosition’) whenever you hovered or clicked them. Replaced with a valid profile based on fs25_subCategorySelector.
Version string corrected
The startup log message was reporting the wrong version.
Files changed
src/main.lua — version string bumped
xml/gui/WCMenuPage.xml — balance box wrapped in fixed-width container
xml/gui/WCWageSettingsFrame.xml — checkbox profile replaced, label positions adjusted
xml/gui/guiProfiles.xml — added WC_CheckSwitcher and WC_MoneyBoxFixedWidth profiles
V1.0.7
Bug fix release.
V1.0.6.0
[Fixed]
* Built-in helper wages (25§/interval) are now correctly suppressed. The hook was intercepting MoneyType.WORKER_WAGES which does not exist in FS25 — the game’s AIJob:updateCost() actually uses MoneyType.AI. Workers were being double-charged as a result.
* Pause menu dashboard and worker list now populate correctly. getActiveWorkers() was using non-existent fields (job.isActive, job.vehicle) and iterating activeJobs with pairs() instead of ipairs(). Rewritten to use the correct FS25 API: job.isRunning, job.vehicleParameter:getVehicle(), and job:getHelperName().
* WorkerCostsEnable now correctly re-installs the suppression hook if it was lost mid-session.
[Added]
* WorkerCostsDebug true|false console command — toggle debug logging to log.txt at runtime.
* WorkerCostsDiagnostic console command — prints a full status report including hook state, MoneyType values, active workers, and GUI state. Useful for troubleshooting.
V1.0.4
Added monthly salary for workers that have worked for you
Complete polish over codebase, wired code together and solved edge cases
Fixed missing l10n string wc_monthly_salary_short thas was missing for the settings page
Bumped version to 1.0.4.0
Thanks to @Mihai457 for commenting this as a suggestion
What’s New in v1.0.3.0
This release focuses on polish, correctness, and a better first impression — both in-game and on the repository.
Bug Fixes
Worker Stats tab — per-hectare cost display was showing the mode name string (“Per Hectare ($/ha)”) as the cost value for each worker. It now correctly shows “-” since per-interval cost can’t be estimated without knowing how much area will be worked.
Worker Stats tab — cost sign was displaying a + prefix on each worker’s wage, implying income. Corrected to -.
Multiplayer spectator safety — the payment system now guards against farmId == 0 (the spectator slot), preventing an attempted charge against an unowned farm.
About tab — hardcoded version fallback was hardcoded to “1.0.2.0”. It now reads live from g_modManager and falls back to “unknown” if the mod manager isn’t available.
Improvements
Tab icon spritesheet — each of the four manager tabs (Dashboard, Wage Settings, Worker Stats, About) now displays its own pictogram from a custom tab_icons.dds spritesheet instead of all showing the same mod icon.
Tab separator lines removed — the horizontal divider lines between tab items in the left panel have been removed for a cleaner look.
Per-page header icons — the green header box next to each page title now shows the correct pictogram for that page.
Console unit display — workerCostsStatus and WorkerCostsShowSettings previously hardcoded /h as the rate unit. Both now correctly show /h or /ha based on your active cost mode.
Logging consistency — bare print() calls in the core loader replaced with Logging.info().
Back button label — the back button on the mod’s pause-menu page was missing its text label; now correctly shows the localised “Back” string.
Repository
Added .gitignore, LICENSE (MIT), and CONTRIBUTING.md
Added GitHub issue templates: Bug Report, Feature Request, Mod Compatibility — with structured YAML forms
Blank issues disabled; general questions directed to Discussions
README fully overhauled: badges, feature table, wage calculation reference, collapsible troubleshooting, accurate changelog
V1.0.1.1
– Added a moneyType == MoneyType.WORKER_WAGES guard*
*The hook now only suppresses the game’s own worker-wage deductions. All other costs pass through normally.
V1.0.1.0
– Added local function getTextSafe back to WorkerSettingsUI.lua (above the class definition), so inject() has its resolver in scope and can complete cleanly
V1.0.0.9
– 10 bugs fixed
– Removed dead code
– Polish for entire codebase
V2.0.1
Critical Bug Fixes
Issue #3: Worker Costs 25% Too High ✅
Problem: Workers were being overcharged by up to 25% due to duplicate skill multiplier application.
Details:
The skill multiplier was being applied twice in the wage calculation pipeline
First in the wage strategy, then again in the wage calculator
Example: A worker with 1.12x skill multiplier was actually charged 1.12² = 1.2544x
Setting $15/hour was actually costing $18.75/hour for skilled workers
Fix:
Removed duplicate skill multiplier from wage strategies
Skill multiplier now applied only once in WageCalculator
$15/hour now actually costs $15/hour as configured
Impact: Worker wages now match your configured settings accurately.
Issue #1: Settings UI Not Appearing ✅
Problem: Users couldn’t access mod settings – the UI didn’t show up in the game menu.
Root Causes:
Missing Logger.lua – Caused mod initialization to fail completely
Missing UIHelper.lua – Prevented UI elements from being created
Missing documentation – Users confused about how to access settings
Fixes:
Created src/utils/Logger.lua – Complete singleton logger implementation
Restored src/utils/UIHelper.lua – Recovered from git history + added v2.0.0 compatibility
Created comprehensive README.md – Clear setup and usage instructions
Impact: Settings UI now appears correctly in the in-game menu.
V1.0.0.6
Real-time worker detection using game’s AI system
Periodic payment processing (every 5 in-game minutes)
Comprehensive debug logging for troubleshooting
Better error handling and validation
Enhanced documentation and installation guide
V1.0.0.5
– Fixed SoilFieldInfo command now properly initializes and returns field data
– Improved daily soil updates with weather/season effects
– Fixed small bug in settings UI
Credits:
tisonK
Download mod
| File | File size |
|---|---|
FS25_WorkerCosts
|
522 KB |



Hi, Ide like to know what do you mean by worker skill?
ne fonctionne pas aucun changement constate ?