Progression

Current 10-level business progression system for Oxide Vending.

The 10-level business progression system.

How leveling works

A business levels up when it meets both requirements for the next level:

  1. enough total XP
  2. enough lifetime revenue (the total money the business has ever earned)

Both at once — a heavily worked business that isn't earning won't level, and neither will an earning business nobody touches. Everything here is configured in config/progression.lua.

Level table

LvlNameXPRevenueMax MachinesMax EmployeesMachine typesPrice rangeWholesale discountNPC bonus
1Newcomer0031drinks0.90x – 1.5x0%0%
2Vendor5005,00042+ snacks0.85x – 1.8x2%5%
3Supplier1,50015,00052(warehouse unlocks)0.85x – 2.0x4%8%
4Distributor3,50035,00063+ general0.80x – 2.2x6%12%
5Merchant6,50065,000730.80x – 2.4x8%15%
6Retailer11,000110,00084+ electronics0.80x – 2.6x10%18%
7Entrepreneur18,000180,00094all0.80x – 2.8x12%22%
8Tycoon28,000280,000105all0.80x – 3.0x14%25%
9Mogul42,000420,000126all0.80x – 3.0x16%28%
10Vending King60,000600,000158all0.75x – 3.0x20%35%

What the reward columns mean:

  • Price range — how far above or below an item's base price the owner may set their selling price
  • Wholesale discount — taken off the cost of bulk orders
  • NPC bonus — extra revenue on every passive NPC sale

The warehouse becomes purchasable at level 3 (Config.Warehouse.RequiredLevel).

How XP is earned

Sales

ActionXP
A player buys from a machine10, plus 0.1 per dollar of the sale
An NPC sale happens5, plus 0.1 per dollar of the sale

Running the business

ActionXP
Stocking a machine3, plus 0.5 per item stocked
Collecting revenue5, plus 0.02 per dollar collected
Placing a machine100
Hiring an employee50
Repairing a machine20
Placing a wholesale order15

Firing an employee and removing a machine give no XP by default.

Daily bonus

Once per day, the owner can claim a bonus from the dashboard. Claiming on consecutive days builds a streak that pays more:

Streak dayXP
130
235
340
445
550
655
7 and beyond60

Miss a day and the streak starts over at day 1. The "day" rolls over at midnight UTC, not local time — see Troubleshooting if players find the timing odd.

Milestones

Milestones are one-time XP rewards for reaching round-number achievements. Each can only be earned once per business.

Money earned (lifetime)

MilestoneXP
First $1,000100
$10,000250
$50,000500
$100,0001,000
$500,0002,500
$1,000,0005,000

Total sales

MilestoneXP
100 sales150
500 sales400
1,000 sales800
5,000 sales1,500

Machines placed

MilestoneXP
3 machines150
5 machines300
10 machines600

Employees hired

MilestoneXP
First employee100
Team of 5250

What players see

  • XP gains of 25 or more pop up as a notification (smaller gains are silent to avoid spam — adjustable via xpGainThreshold)
  • leveling up plays a sound and an animation on the dashboard, and notifies the owner if they're online
  • milestone achievements show their own notification
  • the dashboard's progression panel shows the current level, XP, lifetime revenue, what the next level needs, what it unlocks, and whether today's daily bonus is ready

Admin tools

  • /vendingsetlevel <businessId> <level> — set a business straight to a level (its XP and revenue are set to match)
  • /vendingdebug progression status — find businesses missing progression data
  • /vendingdebug progression init — repair them all at once
  • /vendingdebug progression create <businessId> — repair one
  • /vendingdebug daily <businessId> — inspect a daily-bonus problem

For developers

Progression exports (see API Reference for details):

  • GetBusinessLevel(businessId)
  • GetBusinessProgression(businessId)
  • AddXP(businessId, amount, source, notifySource)
  • AddRevenue(businessId, amount)
  • GetMaxMachines(businessId) / GetMaxEmployees(businessId)
  • IsMachineTypeUnlocked(businessId, machineType)
  • IsWarehouseUnlocked(businessId)
  • GetPricingRange(businessId, itemName)
  • GetWholesaleDiscount(businessId)
  • GetNPCRevenueBoost(businessId)
  • CreateProgressionRecord(businessId)
  • ClaimDailyBonus(source, businessId)

Turning progression off

Set Config.Progression.Enabled = false and:

  • every machine type is available from the start
  • machine and employee limits come from Config.Business instead
  • the price range comes from Config.Pricing instead
  • the warehouse only needs the purchase price, no level
  • XP, levels, daily bonuses, and milestones all stop