Features Guide

Comprehensive documentation of all oxide-landscapingjob features.

Shift System

The shift system manages the player's work session from clock-in to clock-out.

State Machine

Each shift progresses through a series of states:

StateDescription
idleNot working, can clock in at an office
clocked_inOn shift, van spawned, yards assigned
driving_to_yardDriving company van to an assigned yard
mowingActively mowing a yard
returning_to_officeAll yards done, returning to clock out

Clock In

  1. Approach a landscaping office NPC
  2. Open the context menu via target interaction ("Talk to Manager")
  3. View your progression stats and select "Clock In"
  4. A company van spawns at the office's vehicle spawn point
  5. Yards are assigned based on your level

Clock Out

  1. Return to the landscaping office after completing yards
  2. Open the context menu and select "Clock Out"
  3. Receive a shift summary with payment breakdown
  4. Net pay is deposited as cash
  5. Company van is despawned

Location Slots

Each office supports a maximum number of concurrent workers:

SettingDefaultDescription
Config.MaxSlotsPerLocation3Max players per office

If all slots are full, new players cannot clock in at that office.

Yard System

Yards are pre-defined areas with grass patches and obstacles that players must clear.

Assignment

When a player clocks in, yards are assigned from the global pool:

  • Available yards are shuffled randomly
  • The number assigned depends on the player's level (maxYards)
  • Occupied yards (assigned to other workers) are excluded
  • Each yard has a name, center coordinate, patches, and optional obstacles

Yard Tiers

Yards are classified by patch count:

TierPatch CountPay Multiplier
Small1-501.0x
Medium51-1491.5x
Large150+2.0x

Working a Yard

  1. Drive to the assigned yard (shown on map as a green blip)
  2. Enter the yard marker and press [E] to start
  3. A timer begins based on the yard's size
  4. Mow all grass patches and remove all obstacles
  5. Yard completes automatically when all work is done

Grass Patches

Grass patches are non-networked objects rendered locally on each client. When the mower drives over a patch:

  • The patch fades out over 17 steps (~1 second)
  • A burst particle effect plays
  • The server records the patch as mowed
  • Nearby players see the patch disappear via broadcast

Obstacles

Obstacles are objects scattered in yards that must be removed on foot:

  • Detection: Third-eye target (Config.Obstacles.useTarget = true) or proximity prompt
  • Removal: 5-second pickup animation
  • Hazard: Driving the mower into an obstacle deals 350 engine damage
  • Highlight: Hold H to outline remaining obstacles in yellow

Timer

Each yard has a time limit calculated from its size:

Time Limit = baseTime + (patchCount × timePerPatch)
SettingDefaultDescription
Config.Timer.baseTime120Base seconds for any yard
Config.Timer.timePerPatch5Extra seconds per grass patch
Config.Timer.expiredPenalty0.85Pay multiplier when timer expires

Exceeding the timer does not fail the yard but applies a 15% pay penalty.

Mower & Vehicle System

The job uses a dual-vehicle system: a company van for transport and a mower for cutting.

Company Van

SettingDefaultDescription
Config.Rumpo.model'bison3'Vehicle model
Config.Rumpo.primaryColor255, 255, 255White body color
Config.Rumpo.plate'LAWN'License plate text

The van spawns at the office when clocking in. The mower is cosmetically attached to its roof rack.

Mower

SettingDefaultDescription
Config.Mower.model'mower'Vehicle model
Config.Mower.spawnOffsetBehind1.5Meters behind van to unload

Unload / Load Cycle

  1. Unload: At a yard, exit the van and interact with the rear to unload the mower (4-second animation)
  2. Mow: Drive the mower over grass patches with blades lowered
  3. Load: After completing the yard, interact with the van to load the mower back (4-second animation)
  4. Drive: Continue to the next yard in the van

Blade Toggle

Press G to raise or lower the mower blades:

ModeMax SpeedPowerDescription
Blades Down3.0 m/s (~11 km/h)0.3xSlow mowing mode, cuts grass
Blades Up15.0 m/s (~54 km/h)1.0xNormal driving mode

Vehicle Damage

Both vehicles are monitored for health:

Company Van:

  • Body damage below 950 health incurs a repair charge at clock-out
  • Charge rate: $0.50 per health point lost
  • Destruction (engine < 150): $100 fine, all yards cancelled, complaint added

Mower:

  • Obstacle collision: 350 engine damage per hit
  • Damage smoke effect plays when engine health is low
  • Destruction: current yard cancelled, move to next yard
  • Repair option available via "Open Hood" interaction (restores to 800 health)

Progression System

Players progress through 5 levels by completing yards.

Level Definitions

LevelTitleYards RequiredMax YardsPay MultiplierMower SpeedTip ChanceTip Range
1Trainee031.0x1.0x10%$5-$15
2Groundskeeper1241.1x1.1x15%$5-$20
3Landscaper3551.2x1.2x25%$10-$30
4Senior Landscaper7051.35x1.35x30%$10-$40
5Foreman13061.5x1.5x40%$15-$50

Level-Up

When a player's total completed yards reaches the next level's threshold:

  • Level is updated in the database
  • Player is notified of the promotion
  • Mower speed multiplier increases immediately
  • More yards can be assigned per shift

Daily Streak

Working on consecutive days builds a daily streak:

SettingDefaultDescription
Config.Payment.streakBonusPerDay$10Bonus per streak day
Config.Payment.maxStreakDays7Maximum streak bonus days

The streak resets if a day is missed. Maximum streak bonus: $70 per yard.

Payment System

Payment is calculated per yard and paid as a lump sum at clock-out.

Per-Yard Calculation

Subtotal = (basePay + speedBonus) × tierMultiplier × levelMultiplier × timerMultiplier
Total = Subtotal + streakBonus + tip
ComponentDefaultDescription
basePayPerYard$75Base pay per completed yard
speedBonusAmount$30Bonus for finishing within 60% of allowed time
tierMultiplier1.0x / 1.5x / 2.0xBased on yard size (small/medium/large)
levelMultiplier1.0x - 1.5xBased on player level
timerMultiplier1.0 or 0.85Penalty if timer expired
streakBonus$0 - $70Based on daily streak
tip$0 - $50Random chance based on level

Shift Payout

At clock-out, all yard earnings are summed and deductions applied:

DeductionRateDescription
Vehicle Damage$0.50/hpBody health below 950 threshold
Gas Fee5%Percentage of gross pay
Taxes10%San Andreas income tax
Net Pay = Gross Pay - Vehicle Damage - Gas Fee - Taxes

Co-op Bonus

When working in a crew, each yard completed earns a 15% co-op bonus on top of the normal payment. Both crew members receive the full payment plus the bonus.

Crew System

Two players can work together as a crew for bonus pay and shared yards.

Forming a Crew

  1. Clock in at a landscaping office
  2. Open the context menu and select "Invite to Crew"
  3. The nearest eligible player within 10m receives a confirmation prompt
  4. If accepted, the partner joins the crew and shares the leader's yards and van

Requirements

  • Leader must be clocked in
  • Partner must not be clocked in or in another crew
  • Partner must be within Config.Crew.inviteRange (10m)
  • Invite expires after Config.Crew.inviteTimeout (30 seconds)

Shared Resources

Both crew members:

  • Share the same assigned yards
  • Share the same company van
  • Share the same mower
  • Can both mow patches and remove obstacles
  • Both receive payment for each yard

Crew Separation

ScenarioBehavior
Partner clocks outLeader continues solo, partner receives payout
Leader clocks outYards transfer to partner, leader receives payout
Partner dies/downedRemoved from crew, leader continues solo
Leader dies/downedYards transfer to partner, leader removed
Either disconnectsYards transfer if possible, crew dissolved

Complaint System

Complaints track unsafe or irresponsible behavior during shifts.

Triggers

ActionComplaints Added
Vehicle destruction (van)1
Death/downed on shift1

Consequences

SettingDefaultDescription
Config.Complaints.maxComplaints3Complaints before timeout
Config.Complaints.timeoutMinutes30Lockout duration in minutes

When complaints reach the maximum, the player is temporarily suspended and cannot clock in.

Decay

Complaints decay with good work:

SettingDefaultDescription
Config.Complaints.decayPerYard1Complaints removed per completed yard

HUD Overlay

A minimal HUD overlay appears during active mowing.

Elements

  • Timer: Countdown showing remaining time, color-coded by urgency
    • Green: > 30 seconds remaining
    • Yellow: 15-30 seconds remaining
    • Red: < 15 seconds remaining
    • Flashing: Timer expired (penalty active)
  • Progress Bar: Shows patches and obstacles completed vs total
  • Blade Hint: "Press G to raise/lower blades" toggle indicator

The overlay uses a Vue 3 NUI page with Tailwind CSS styling.

Waypoint System

Floating 3D markers appear above assigned yards to guide navigation.

Behavior

  • Markers float above each assigned yard's center coordinate
  • Display the yard name and distance in meters/kilometers
  • Scale dynamically based on distance (larger when close, smaller when far)
  • Toggle visibility by pressing H

Settings

SettingDefaultDescription
Config.Waypoints.enabledtrueEnable waypoint markers
Config.Waypoints.heightOffset5.0Z offset above yard coords
Config.Waypoints.scaleMin0.5Scale at far distance
Config.Waypoints.scaleMax1.0Scale at near distance
Config.Waypoints.scaleNearDist30.0Full scale within this range
Config.Waypoints.scaleFarDist300.0Minimum scale beyond this range

Audio & Particles

3D Positional Audio (xsound)

All sounds use xsound for 3D positional playback, audible to nearby players:

SoundFileVolumeDescription
Blade togglelower_mechanical_whirr.ogg0.2One-shot when blades toggled
Mower enginelawn_mower_engine_loop.ogg0.3Looped while blades are down
Engine failureengine_fail.ogg0.4One-shot on mower destruction

All sounds have a max audible distance of 30 meters.

Particle Effects

EffectTriggerDescription
Grass burstPatch mowedent_dst_veg_shrub burst at mower position
Grass trailMoving with blades downent_amb_wind_grass_dir looped behind mower
Damage smokeMower health lowent_ray_heli_damage_smoke on mower body
Obstacle hitMower collides with obstacleent_dst_gen_contact_med_hard under mower