Realistic Worker Costs for Farming Simulator 25
Hiring a worker is no longer free. Every hired worker now draws an ongoing wage, so labour becomes a real line in your budget. Pay by the hour or by the hectare, watch skilled workers cost more, and keep an eye on fatigue, because a tired crew works slower. Suddenly how you manage your staff actually matters.
✨ Features
- Ongoing Worker Wages
- Hourly or Per-Hectare Pay
- Three Wage Levels + Custom Rate
- Skill-Based Pricing
- Worker Roster & Levels
- Worker Fatigue
- Daily Hiring Hall
- Multiplayer & Console Commands
🎮 Controls
- Open the Worker Roster: Left Alt + H
- Wage settings live in the game's Settings menu (admin-controlled in multiplayer)
Note that wages are deducted automatically as your workers run, and the mod is safe to add to or remove from an existing save at any time!
===================================================================
GitHub Repository:
https://github.com/Realistic-Farming/FS25_WorkerCosts
===================================================================
COPYRIGHT NOTICE:
All rights reserved. Unauthorized redistribution, copying,
modification, or claiming this mod as your own is strictly prohibited.
Original Author: TisonK
===================================================================
[ Fixed ]
- When the month ended while you slept, the salary summary opened during sleep, and after Pay or Decline the game kept running with no controls except the console. The summary now opens when you wake up.
Changed
- Payroll follows the game's calendar. The monthly bill is issued on the last day of each month whatever the month length (a short month used to issue no bill), each farm is billed only for its own workers, and a bill is frozen when issued: Pay and Decline act on that exact bill, and declining no longer compounds the late penalty into the amount owed.
- The Worker Costs page on the Realistic Farming Esc menu now holds hiring, firing, wage options, Reset and the crew board on one page; the old Worker Manager footer is gone.
- The emergency loan in Income Mod can read your upcoming payroll bill.
Fixed
- A save sitting on the last day of a month no longer opens the salary dialog on the loading screen, which could stop the game from starting.
- Setting the clock backwards within a day no longer bills the "missed" hours.
- Multiplayer: hiring and firing charge the farm of the player who did it; players see the host's Worker Costs settings within about a second; an admin's change applies for everyone from any settings screen or the console, and those settings are locked for non-admins.
- The hire hall keeps its place when the roster grows.
- Key presses are registered only where they belong (on foot or in a vehicle), and the roster key has a default and shows the live key.
- Translations: the Cost Mode and Wage Level settings have their labels and Monthly Salary its tooltip, accented letters show correctly in seven languages, the settings labels reach all 26 languages, the Korean "Field Detail" label is fixed, the page legend shows a plain dot between page names, and the title and description read correctly in the mod manager.
New
- Legendary worker tier. A fourth worker skill tier above Master, unlocked at Pro-Staff Level 16, with its own wage, hire, and severance values.
- Rebuilt About tab. The in-game About page now has readable Core, Formulas, and Pro-Staff sections, with a two-column Pro-Staff layout.
- Realistic Farming ecosystem integration. Worker Costs now saves its roster and hiring-hall state through the shared save system, reports the roster panel to the unified on-screen display, syncs across multiplayer through the shared network layer, and its settings appear in the Farm Tablet's System Settings app.
Fixed
- Legendary workers are no longer shown a fatigue surcharge they do not actually pay. The roster cost estimate now matches the real wage charge, where both Master and Legendary workers are fatigue exempt.
- Wages are now billed once per in-game day instead of on a real-time timer, so a high time scale or fast-forward no longer overcharges you.
- Multiplayer: wage billing now runs only on the host, and spectator or invalid farm slots are no longer charged.
Note
- Every ecosystem hook is optional. With none of the other Realistic Farming mods installed, Worker Costs works exactly as before.
BIG UPDATE
PLEASE READ THE CHANGELOG ENTIRLY
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
[ 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.
- 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.
- 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.
- 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
- Payment interval changed from 5 → 30 real-world minutes; job-completion notification shows total cost charged when a worker is dismissed
- About page: version number now displays correctly; panel height expanded to prevent text cutoff
- Renamed "Worker Breakdown" section to "Labor Cost Breakdown"
- Renamed "Help" tab to "Cost Structure"; fixed toggle row overlap and text overflow in settings
- 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!
- 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
Small but important patch addressing two UI bugs that some players were running into.
What's fixed:
- Fixed a crash that could occur when interacting with checkboxes in the settings menu
- Fixed the settings panel layout on ultrawide monitors — the balance box was overflowing off-screen
Saves: no changes needed.
Full changelog -> https://github.com/TheCodingDad-TisonK/FS25_WorkerCosts/releases/tag/v1.0.7.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.
- 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.3.0
Thanks to @Mihai457 for commenting this as a suggestion
- Added 4 new tab pages
- A compete new landing page redesign (inside the pause menu we have our own page)
Know issues:
- Checkbox not fully implemented (Enable Mod, Notifications, and DEBUG Mode checkbox labels)
- Sync between workers and dashboard might not fully work
These issues will be patched in the next update!
- 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.
- Added local function getTextSafe back to WorkerSettingsUI.lua (above the class definition), so inject() has its resolver in scope and can complete cleanly
- 10 bugs fixed
- Removed dead code
- Polish for entire codebase
- Removed duplicate skill multiplier causing 25% cost overcharge
- Fixed missing Logger.lua preventing mod initialization
- Fixed missing UIHelper.lua preventing UI rendering
- Added comprehensive README.md with setup guide
- Added logger.lua singleton implementation
- Added UIHelper.lua with UI creation utilities
- 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
- Fixed the download link and updated the version.
I accidentally uploaded an update I thought was for the Soil Mod, but after submitting it I realized it was actually the Worker Cost mod. Since submissions can’t be undone or deleted, I had no choice but to wait until I got home to upload the correct version.
Sorry about the confusion, and thanks for your patience!
Changelog:
- Fixed `SoilFieldInfo` command now properly initializes and returns field data
- Improved daily soil updates with weather/season effects
- Fixed small bug in settings UI
Not working:
- Visual soil indicators on map (no color changes yet)
- Crop yield effects (doesn't change harvest amounts)
- Fertilizer cost adjustments (setting exists but not implemented)
- Equipment wear/tear from soil conditions
- Soil texture/sand/clay effects
Planned:
- Crop rotation bonuses - doesn't give yield bonuses for good rotations
- Cover crop effects - doesn't recognize cover crops
- Soil compaction - from heavy equipment
- Irrigation effects - on nutrient availability
- Fixed UI/GUI issues
- Improved compatibility*
*Mod should work fine with my other mods, changed some GUI/UI stuff and now it works fine again!