Configuration Guide
Reference for the current oxide-landscapingjob config surface.
Config File Map
| File | Purpose |
|---|---|
shared/config.lua | Core toggles |
shared/config/job.lua | Progression, pay, timer, crew, complaints |
shared/config/vehicles.lua | Van, mower, blades, damage, audio, particles |
shared/config/mowing.lua | Grass models, obstacle models, interaction, animations |
shared/config/visuals.lua | NPC, blips, markers, waypoints, yard editor |
shared/config/locations.lua | Office locations and shipped yard data |
shared/config/outfits.lua | Optional uniforms |
shared/config/tutorials.lua | Tutorial text and onboarding toggles |
Core Settings
shared/config.lua
| Setting | Default | Description |
|---|---|---|
Config.Debug | false | Enables debug logging via LandscapingDebug(...) |
Config.usePhone | true | Uses the phone/email flow for text-based shift messaging |
Config.shiftSummary | "text" | End-of-shift summary mode: "text" or "nui" |
Config.menuStyle | "nui" | Manager menu mode: "nui" or "menu" |
Config.MaxSlotsPerLocation | 3 | Max concurrent workers per office |
Config.Debug = false
Config.usePhone = true
Config.shiftSummary = 'text'
Config.menuStyle = 'nui'
Config.MaxSlotsPerLocation = 3
Crew Settings
shared/config/job.lua
| Setting | Default |
|---|---|
Config.Crew.maxSize | 2 |
Config.Crew.inviteRange | 15.0 |
Config.Crew.inviteTimeout | 30 |
Config.Crew.coopBonusPercent | 0.15 |
Notes:
- Crew invites are ID-based in the current UI flow.
- The server still enforces
inviteRangewhen validating the invite.
Payment Settings
shared/config/job.lua
| Setting | Default |
|---|---|
Config.Payment.basePayPerYard | 75 |
Config.Payment.speedBonusAmount | 30 |
Config.Payment.speedBonusTimePercent | 0.60 |
Config.Payment.vehicleDestroyFine | 100 |
Config.Payment.streakBonusPerDay | 10 |
Config.Payment.maxStreakDays | 7 |
Config.Payment.gasFeePercent | 0.05 |
Config.Payment.taxPercent | 0.10 |
Runtime behavior:
- completed shift payouts are deposited to
bank - van-destruction fines are removed from
cash
Level Definitions
shared/config/job.lua
| Level | Title Key | Required Yards | Max Yards | Pay Multiplier | Mower Speed | Tip Chance | Tip Range |
|---|---|---|---|---|---|---|---|
| 1 | level.trainee | 0 | 3 | 1.0x | 1.0x | 10% | $5-$15 |
| 2 | level.groundskeeper | 12 | 4 | 1.1x | 1.1x | 15% | $5-$20 |
| 3 | level.landscaper | 35 | 5 | 1.2x | 1.2x | 25% | $10-$30 |
| 4 | level.senior_landscaper | 70 | 5 | 1.35x | 1.35x | 30% | $10-$40 |
| 5 | level.foreman | 130 | 6 | 1.5x | 1.5x | 40% | $15-$50 |
The resource stores localized title keys in config and resolves them at runtime.
Yard Tiers and Timer
shared/config/job.lua
Tier thresholds:
| Setting | Default |
|---|---|
Config.YardTiers.smallMax | 50 |
Config.YardTiers.mediumMax | 149 |
Tier multipliers are defined in shared/init.lua:
- small:
1.0 - medium:
1.5 - large:
2.0
Timer settings:
| Setting | Default |
|---|---|
Config.Timer.baseTime | 120 |
Config.Timer.timePerPatch | 5 |
Config.Timer.expiredPenalty | 0.85 |
Complaint Settings
shared/config/job.lua
| Setting | Default |
|---|---|
Config.Complaints.maxComplaints | 3 |
Config.Complaints.timeoutMinutes | 30 |
Config.Complaints.vehicleDestroyPenalty | 1 |
Config.Complaints.deathPenalty | 1 |
Config.Complaints.decayPerYard | 1 |
Vehicle Settings
shared/config/vehicles.lua
Company Vehicle
| Setting | Default |
|---|---|
Config.Rumpo.model | 'bison3' |
Config.Rumpo.primaryColor | { 255, 255, 255 } |
Config.Rumpo.secondaryColor | { 255, 255, 255 } |
Config.Rumpo.plate | 'LAWN' |
Config.Rumpo.healthCheckInterval | 1000 |
Config.Rumpo.destroyedThreshold | 150 |
Config.Rumpo.damageChargeRate | 0.50 |
Config.Rumpo.damageChargeThreshold | 950 |
Config.Rumpo.mowerAttach controls the cosmetic mower position on the van.
Mower
| Setting | Default |
|---|---|
Config.Mower.model | 'mower' |
Config.Mower.spawnOffsetBehind | 1.5 |
Config.Mower.healthCheckInterval | 1000 |
Config.Mower.destroyedThreshold | 150 |
Config.Mower.repairHealth | 800 |
Config.Mower.showOpenHood | false |
Config.Mower.allowFinishYardOnBreakdown | true |
When allowFinishYardOnBreakdown = true, the current yard can be resumed after repair. The breakdown still counts toward complaint handling.
Blade Settings
| Setting | Default |
|---|---|
Config.Mower.blades.key | 'G' |
Config.Mower.blades.baseMowingSpeed | 3.0 |
Config.Mower.blades.basePowerMultiplier | 0.3 |
Config.Mower.blades.normalMaxSpeed | 15.0 |
Config.Mower.blades.normalPowerMultiplier | 1.0 |
Blade Audio
xsound-backed audio settings:
toggle = 'lower_mechanical_whirr.ogg'mowerLoop = 'lawn_mower_engine_loop.ogg'engineFail = 'engine_fail.ogg'toggleVolume = 0.2loopVolume = 0.3engineFailVolume = 0.4distance = 30
Mowing and Obstacles
shared/config/mowing.lua
Grass Props
Config.GrassProps contains the valid patch models used by the shipped yards and the yard editor.
Obstacle Props
Config.ObstacleProps contains the valid obstacle models used by the shipped yards and the yard editor.
Obstacle Settings
| Setting | Default |
|---|---|
Config.Obstacles.detectionRadius | 2.0 |
Config.Obstacles.damagePerHit | 350 |
Config.Obstacles.pickupRadius | 5.0 |
Config.Obstacles.useTarget | true |
Config.Obstacles.highlight.key | 'H' |
Mowing Detection
| Setting | Default |
|---|---|
Config.Mowing.detectionRadius | 2.0 |
Config.Mowing.fadeSteps | 17 |
Config.Mowing.fadeStepInterval | 60 |
Config.Mowing.mowerCheckInterval | 100 |
Animations
Configured actions:
- unload mower
- load mower
- repair mower
- pick up obstacle
Animation labels are locale keys, not hardcoded strings.
Visual Settings
shared/config/visuals.lua
NPC
| Setting | Default |
|---|---|
Config.NpcModel | 's_m_y_construct_01' |
Config.NpcScenario | 'WORLD_HUMAN_CLIPBOARD' |
Office Blip
| Setting | Default |
|---|---|
Config.Blip.sprite | 616 |
Config.Blip.color | 2 |
Config.Blip.scale | 0.6 |
Config.Blip.label | blip.landscaping_office |
Yard Blip
| Setting | Default |
|---|---|
Config.YardBlip.sprite | 496 |
Config.YardBlip.color | 2 |
Config.YardBlip.scale | 0.7 |
Yard Marker
| Setting | Default |
|---|---|
Config.YardMarker.type | 25 |
Config.YardMarker.approachDistance | 30.0 |
Config.YardMarker.interactDistance | 5.0 |
Floating Waypoints
| Setting | Default |
|---|---|
Config.Waypoints.enabled | true |
Config.Waypoints.heightOffset | 5.0 |
Config.Waypoints.updateInterval | 0 |
Config.Waypoints.scaleMin | 0.5 |
Config.Waypoints.scaleMax | 1.0 |
Config.Waypoints.scaleNearDist | 30.0 |
Config.Waypoints.scaleFarDist | 300.0 |
Yard Editor
| Setting | Default |
|---|---|
Config.YardEditor.ghostAlpha | 150 |
Config.YardEditor.mouseSensitivity | 3.0 |
Config.YardEditor.headingSensitivity | 2.0 |
Config.YardEditor.zStep | 0.01 |
Config.YardEditor.raycastDistance | 100.0 |
Config.YardEditor.defaultSpeed | 0.5 |
Config.YardEditor.maxSpeed | 5.0 |
Config.YardEditor.minSpeed | 0.05 |
Config.YardEditor.speedStep | 0.25 |
Locations and Menu Camera
shared/config/locations.lua
Each office entry includes:
namecoordsheadingvehicleSpawn- optional
menuCamera
menuCamera is used only by the NUI menu flow and contains:
coordsheadingfov
Yards contain:
namecoordspatches- optional
obstacles
Uniforms
shared/config/outfits.lua
| Setting | Default | Description |
|---|---|---|
Config.uniformsEnabled | true | Enables the uniform toggle in the menu and the server uniform callbacks |
The file also defines:
Config.LandscapingOutfitMaleConfig.LandscapingOutfitFemale
These outfits are applied through olink.clothing.
Notes on Builder Exports
The builder writes merged yard/location data to exported_locations.lua in the resource folder. That output is useful as an export artifact and source-of-truth snapshot for your edits.
The shipped runtime yard data lives in shared/config/locations.lua, so review how you want to manage exported builder output in your own workflow before assuming exports are automatically consumed.