Progression

10-level business progression system for Oxide Vending with XP, milestones, and rewards.

Overview

Businesses progress through 10 levels by meeting both XP thresholds and revenue milestones. Higher levels unlock more machines, employees, machine types, and provide economic bonuses.


Leveling Requirements

To advance to the next level, a business must meet BOTH:

  1. XP Threshold - Earned from daily actions
  2. Revenue Milestone - Total lifetime revenue

Both requirements must be met simultaneously.


Level Progression Table

LvlNameXP ReqRevenue ReqMachinesEmployeesTypesNPC BoostWholesale Discount
1Newcomer0$031drinks0%0%
2Vendor500$5,00042+snacks5%2%
3Supplier1,500$15,00052-8%4%
4Distributor3,500$35,00063+general12%6%
5Merchant6,500$65,00073-15%8%
6Retailer11,000$110,00084+electronics18%10%
7Entrepreneur18,000$180,00094-22%12%
8Tycoon28,000$280,000105-25%14%
9Mogul42,000$420,000126-28%16%
10Vending King60,000$600,000158-35%20%

Machine Type Unlocks

LevelTypes Available
1drinks
2drinks, snacks
4drinks, snacks, general
6drinks, snacks, general, electronics

Pricing Range by Level

Higher levels can set more aggressive prices:

LevelMin MarkupMax Markup
10.90x1.5x
2-30.85x1.8x - 2.0x
4-70.80x2.2x - 2.8x
8-90.80x3.0x
100.75x3.0x

XP Sources

Sales

ActionXP Earned
Player Sale10 + (0.1 × sale amount)
NPC Sale5 + (0.1 × sale amount)

Example: A $50 player sale earns 10 + (0.1 × 50) = 15 XP

Operations

ActionXP Earned
Stock Items3 + (0.5 × quantity)
Collect Revenue5 + (0.02 × amount)
Wholesale Order15
Repair Machine20

Example: Stocking 20 items earns 3 + (0.5 × 20) = 13 XP

Business Growth

ActionXP Earned
Place Machine100
Hire Employee50

Daily Bonus

ComponentXP
Base Bonus25
Streak Bonus5 × streak days
Max Streak7 days

Example: Day 5 streak = 25 + (5 × 5) = 50 XP


Milestone Bonuses

One-time XP grants for reaching achievements:

Revenue Milestones

MilestoneValueXP Reward
First $1,000$1,000100
$10,000 Earned$10,000250
$50,000 Club$50,000500
Six Figures$100,0001,000
Half Million$500,0002,500
Millionaire$1,000,0005,000

Sales Milestones

MilestoneValueXP Reward
100 Sales100150
500 Sales500400
1,000 Sales1,000800
5,000 Sales5,0001,500

Machine Milestones

MilestoneValueXP Reward
3 Machines3150
5 Machines5300
10 Machines10600

Employee Milestones

MilestoneValueXP Reward
First Employee1100
Team of 55250

Level Rewards

Max Machines

The maximum number of vending machines a business can have placed:

LevelsMax Machines
13
24
35
46
57
68
79
810
912
1015

Max Employees

The maximum number of employees a business can hire:

LevelsMax Employees
11
2-32
4-53
6-74
85
96
108

NPC Revenue Boost

Percentage bonus on all NPC sale revenue:

LevelBoost
10%
25%
38%
412%
515%
618%
722%
825%
928%
1035%

Example: A level 10 business earns $100 × 1.35 = $135 from an NPC sale.

Wholesale Discount

Percentage discount on wholesale orders:

LevelDiscount
10%
22%
34%
46%
58%
610%
712%
814%
916%
1020%

Example: A level 10 business pays $100 × 0.80 = $80 for wholesale.


Daily Bonus System

How It Works

  1. Each business can claim one daily bonus per day
  2. Claiming on consecutive days builds a streak
  3. Streak adds bonus XP (5 per streak day)
  4. Streak caps at 7 days
  5. Missing a day resets the streak to 1

Claiming

Through the dashboard or programmatically:

exports['oxide-vending']:ClaimDailyBonus(source, businessId)

Streak Calendar

DayBase XPStreak BonusTotal
125+530
225+1035
325+1540
425+2045
525+2550
625+3055
7+25+3560

Dashboard Integration

The Overview tab displays a progression card showing:

  • Current level badge and name
  • XP progress bar toward next level
  • Revenue progress bar toward next milestone
  • Daily bonus button with streak tracking
  • Current rewards summary
  • Level-up overlay animation

Admin Commands

CommandDescription
/vendingsetlevel [businessId] [level]Set business level (1-10)
/vendingdebug progression initCreate records for all businesses
/vendingdebug progression create [businessId]Create record for specific business
/vendingdebug progression statusView progression status
/vendingdebug daily [businessId]Debug daily bonus state

Exports

-- Get current level
local level = exports['oxide-vending']:GetBusinessLevel(businessId)

-- Get full progression data
local prog = exports['oxide-vending']:GetBusinessProgression(businessId)

-- Grant XP
local success, leveledUp = exports['oxide-vending']:AddXP(businessId, amount, source, notifySource)

-- Track revenue
local leveledUp = exports['oxide-vending']:AddRevenue(businessId, amount)

-- Check limits
local maxMachines = exports['oxide-vending']:GetMaxMachines(businessId)
local maxEmployees = exports['oxide-vending']:GetMaxEmployees(businessId)

-- Check unlocks
local unlocked = exports['oxide-vending']:IsMachineTypeUnlocked(businessId, 'electronics')
local warehouseUnlocked = exports['oxide-vending']:IsWarehouseUnlocked(businessId)

-- Get economic bonuses
local discount = exports['oxide-vending']:GetWholesaleDiscount(businessId)
local boost = exports['oxide-vending']:GetNPCRevenueBoost(businessId)
local minPrice, maxPrice = exports['oxide-vending']:GetPricingRange(businessId, itemName)

-- Daily bonus
local success, xp, streak = exports['oxide-vending']:ClaimDailyBonus(source, businessId)

Configuration

See config/progression.lua for full configuration:

Config.Progression = {
    Enabled = true,
    Levels = { ... },
    XPSources = { ... },
    Milestones = { ... },
    Notifications = {
        showXPGain = true,
        xpGainThreshold = 25,       -- Min XP to show notification
        levelUpSound = true,
        levelUpAnimation = true,
        milestoneNotify = true,
    },
}

Disabling Progression

Set Config.Progression.Enabled = false to disable the system:

  • All machine types become available
  • Business uses base limits from Config.Business
  • No XP or level tracking
  • Warehouse always available (if enabled)