Feature Guide
Overview of the current oxide-pizzajob gameplay flow and systems.
Overview of the current oxide-pizzajob gameplay flow and systems.
Shift Flow
Players manage the job from the counter NPC at each Pizza This! location using the configured o-link target integration.
Menu modes
Config.menuStyle supports:
'nui': full-screen Vue menu with cinematic camera and progression card'menu':olink.menuflow for servers that want a lighter interface
Both modes support:
- clocking in and out
- viewing progression and complaint state
- requesting a new batch of orders
- toggling the pizza uniform (only shown when uniforms are turned on — see Uniform System)
Summary modes
Config.shiftSummary controls the immediate clock-out presentation:
'nui': popup summary screen'text': notification summary
Separately from that, the resource attempts to send detailed shift emails through o-link.phone.
Shift states
IDLECLOCKED_INDELIVERING
Normal flow is:
IDLE -> CLOCKED_IN -> DELIVERING -> CLOCKED_IN
Slot limits
Each shop has a configurable maximum number of concurrent shift slots (Config.MaxSlotsPerLocation, default 3). If all slots are full, new players cannot clock in at that location.
Order Types
When requesting orders from the counter menu, the server generates a batch based on the player's current progression level.
| Order Type | Pay Multiplier | Unlock Level | Roll Chance |
|---|---|---|---|
| Standard | 1.0x | 1 | fallback |
| Priority | 1.5x | 4 | 20% when eligible |
| Catering | 3.0x | 5 | 10% when eligible |
- Standard orders are the default delivery flow.
- Priority orders add a higher payout multiplier.
- Catering orders are high-value bulk deliveries.
Delivery Phase
Delivery flow
E to deliver.After all deliveries in a batch are complete, the shift returns to CLOCKED_IN.
Delivery zones
Each shop location has a set of delivery zones with minimum level requirements:
| Location | Level 1 Zones | Level 2 Zones | Level 3 Zones |
|---|---|---|---|
| Downtown Pizza This | 16 | 14 | 22 |
| Del Perro Pizza This | 10 | 10 | 10 |
| Mission Row Pizza This | 10 | 10 | 10 |
Higher-level zones are generally further from the shop.
Mission timers
The timer is distance-based:
Config.Timer.baseTime + math.floor(distance * Config.Timer.timePerDistanceUnit)If the timer expires:
- the delivery can still be completed
- the late-delivery penalty multiplier is applied (
Config.Timer.expiredPenalty, default0.85) - rush orders use their own configured time limit
Random Events
Each delivery can roll a random event.
Customer Not Home
- 8% chance by default
- Player must wait through a short progress bar before completion.
Rush Order
- 10% chance by default
- Uses a tighter time limit.
- Awards an extra 1.5x multiplier if completed in time.
Wrong Address
- 5% chance by default
- The player gets a "the address seems wrong... rerouting!" message and the delivery point is set to a different address than the one they were originally sent to.
- This is a flavor event. The delivery is completed normally at the address shown on the map, with no change to the payout.
Progression
Progression is stored in the unified job_progression table under job = 'pizza'.
Level rewards
Levels increase:
- pay multiplier
- tip chance
- tip range
- batch size
- access to Priority and Catering orders
Default progression is 5 levels from Trainee through Veteran.
Daily streaks
Completing at least one delivery on consecutive real-world days increases daily_streak up to Config.Payment.maxStreakDays (default 7). Missing a day resets the streak to 1.
Complaints and timeout
Complaints are added for:
- delivery vehicle destruction
- death or downed state during shift
Complaints decay as deliveries are completed. Reaching Config.Complaints.maxComplaints (default 3) causes a temporary timeout of Config.Complaints.timeoutMinutes (default 30 minutes).
Payment
Per-delivery payment includes:
- base pay
- distance bonus
- speed bonus
- order multiplier
- rush multiplier
- level multiplier
- damaged-pizza multiplier
- late-delivery multiplier
- streak bonus
- random tip
Per-delivery formula:
subtotal = (basePay + distanceBonus + speedBonus)
* orderMultiplier
* rushMultiplier
* levelMultiplier
* qualityMultiplier
* timerMultiplier
total = subtotal + streakBonus + tipHow players get paid
There are two parts:
- Tips are paid immediately, in cash, the moment each delivery is completed.
- Everything else (base pay, bonuses, streak, etc.) is added up across the whole shift and paid out as one lump sum when the player clocks out.
The lump sum has deductions taken off before it is paid:
- vehicle damage charge
- gas fee (
Config.Payment.gasFeePercent, default 5%) - taxes (
Config.Payment.taxPercent, default 10%)
The final net amount is paid into the account set by Config.Payment.payoutAccount (default bank). Tips go to Config.Payment.tipAccount (default cash), and the vehicle-destroy fine is taken from Config.Payment.fineAccount (default cash). All money handling goes through o-link.money.
Customer Reactions
Customers react based on delivery performance:
excellent: fast deliverygood: on-time standard deliverypoor: late deliverybad: damaged pizza
The customer NPC walks to the player, performs the reaction animation, receives the pizza prop, then walks away and despawns.
Pizza Prop System
Players carry a visible pizza box prop (prop_pizza_box_02) during deliveries.
Prop behavior
- attached on foot with the configured carry animation
- stored in the work vehicle through an
o-link.targetlocal entity action - vehicle entry blocked while the pizza is unstored
- detached on vehicle entry and re-attached on vehicle exit
- transferred to the customer on delivery
Vehicle System
The delivery vehicle:
- uses the current level's configured model, livery, and extras
- gets custom colors and the
PIZZAplate - receives keys through
o-link.vehiclekey - gets full fuel through
o-link.fuel - is health-monitored during the shift
If the vehicle is destroyed:
- current deliveries are cancelled
- a complaint is added
- the configured destroy fine is removed from cash (never more than the player has)
- the player returns to
CLOCKED_IN
HUD Overlay
A NUI delivery panel appears during DELIVERING showing:
- current timer
- late indicator
- batch progress
Waypoints
A 3D floating waypoint marker appears above the active destination. It scales by distance and can be shown by holding H.
Phone Messaging
The resource attempts to send service emails through o-link.phone for:
- shift start
- vehicle destruction
- death or hospitalization
- detailed shift summary
The welcome email arrives with your first order batch and names your first delivery destination. The immediate clock-out UI still follows Config.shiftSummary.
Uniform System
Uniforms are turned off by default (Config.uniformsEnabled = false). When you turn them on, players can put on or take off a pizza uniform from the shift menu. Separate outfits are configured for male and female character models through o-link.clothing. The resource saves the player's current outfit before applying the uniform and puts it back when the uniform is removed or the shift ends.
The default outfit values are placeholders — you must set your server's real uniform component IDs in shared/config/outfits.lua before the uniform will look correct.
Tutorials
The resource includes 8 tutorial prompts covering:
- first clock-in
- first delivery start
- first pizza storage
- first delivery complete
- first timer expiry
- first vehicle damage
- first level-up
- first batch complete
Players can toggle or reset tutorials with:
/pizzatutorials/pizzatutorialreset