> For the complete documentation index, see [llms.txt](https://docs.t1ger.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.t1ger.net/resources/t1ger-tuning/guides/pricing.md).

# Pricing

Mod pricing in t1ger\_tuning is built from several independent layers that stack together. Understanding each layer — and where it's calculated — makes it much easier to tune the economy to fit your server, whether you want mods to feel cheap and accessible or expensive and prestige-driven.

## The Core Formula

Every mod variant's price is calculated in this order:

### **1. Base Price**

Each mod type has a base price set in `shared/modtypes.lua` (`modData.price`). Some mods also define **per-variant prices** directly (`modData.variants[index].price`) — when a variant has its own explicit price, that's used exactly as-is, and none of the calculation below applies to it. This is useful for mods where certain options are genuinely worth more than a formula could capture (e.g. a rare paint style, a premium wheel design).

### **2. Escalation** (only for mods without a variant-level price)

If a mod has `escalation = true` set in `shared/modtypes.lua`, each successive variant costs progressively more than the last, controlled by:

lua

```lua
Config.PriceEscalationPercent = 5 -- % increase per variant index
```

At 5%, variant 0 costs base price × 1.05, variant 1 costs base price × 1.10, variant 2 costs × 1.15, and so on. This makes "the highest tier is the most expensive" happen automatically without needing to hand-price every single option — useful for mods with a long list of similar variants (like most performance upgrades).

### **3. Vehicle Value Tiering**

On top of the base/escalated price, a portion of the *vehicle's own market value* gets added — so modding an expensive supercar costs more than modding a beater, even for the exact same part:

lua

```lua
Config.TieredPricing = true -- master toggle for this whole layer

Config.PriceTiers = {
    { upperLimit = 10000,    multiplier = 0.05 },  -- cars up to $10k:   +5% of vehicle value
    { upperLimit = 50000,    multiplier = 0.03 },  -- cars up to $50k:   +3%
    { upperLimit = 100000,   multiplier = 0.02 },  -- cars up to $100k:  +2%
    { upperLimit = 500000,   multiplier = 0.01 },  -- cars up to $500k:  +1%
    { upperLimit = math.huge, multiplier = 0.005 }, -- everything above: +0.5%
}
```

The vehicle's price is matched against the **first tier whose `upperLimit` it fits under**, and that tier's multiplier is applied to the vehicle's value and added to the base price. If a vehicle's real market value can't be determined, `Config.DefaultVehiclePrice` is used instead — worth setting this to something reasonable for your server's average vehicle price if you use tiered pricing.

**One important exception:** if a mod's base price is exactly `0`, tiered pricing is skipped entirely and the mod stays completely free — this is how you make specific mods (or specific "remove/stock" variants) genuinely free regardless of what car it's on.

## The Two Extra Layers (Applied at Checkout, Not in the Base Formula)

These are separate from everything above — they're markups added on top, depending on *how* the player is buying:

**Incentivized Pricing** — a markup applied only when a player checks out **directly through the mods menu** themselves, without involving a tuner:

lua

```lua
Config.ModsMenu.IncentivizedPricing = {
    enable  = true,
    percent = 25, -- self-service costs 25% more than going through a tuner
}
```

This is a soft nudge, not a hard requirement — you can force real tuner interaction entirely instead by setting `Config.ModsMenu.DisableCheckout = true`, which removes direct checkout altogether and requires every customer to place a mod order.

**Shop Markup** — the tuner shop boss's own configurable markup percentage, applied when a mod order or customs checkout goes through their shop. This is set per-shop by the boss (up to `Config.Shop.Markup.max`), letting individual shops price themselves higher or lower than competitors — a genuine player-driven economy lever, not something you configure globally.

## Worked Example

A tuner installs an engine upgrade (base price $3,000, no escalation) on a $30,000 car, with default tiered pricing:

1. Base price: $3,000
2. $30,000 falls into the "up to $50,000" tier → 3% multiplier
3. Tier addition: $30,000 × 0.03 = $900
4. Calculated price: $3,000 + $900 = **$3,900**
5. If bought directly through the mods menu (no tuner): $3,900 × 1.25 = **$4,875**
6. If bought through a tuner shop with a 10% shop markup instead: $3,900 × 1.10 = **$4,290**

## Configuring for Your Server's Economy

* **Want mods to feel cheap and accessible?** Lower or disable `PriceEscalationPercent`, disable `TieredPricing` entirely, and keep base prices in `modtypes.lua` low.
* **Want expensive cars to be a genuine status symbol to mod?** Keep tiered pricing on and make sure `Config.DefaultVehiclePrice` and your vehicle price source are accurate — this is what makes supercars cost dramatically more to tune than a beater.
* **Want to push players toward roleplay with tuners instead of self-service?** Raise `IncentivizedPricing.percent`, or go further and set `DisableCheckout = true` to remove self-service entirely.
* **Want certain mods to always be free** (e.g. a starter/basic option)? Set that specific mod or variant's price to `0` in `modtypes.lua` — remember this also skips the vehicle-value tier addition automatically.

## Reference

| Config                                | Location              | Purpose                                                                   |
| ------------------------------------- | --------------------- | ------------------------------------------------------------------------- |
| `Config.PriceEscalationPercent`       | `config.lua`          | % cost increase per variant index, for mods with `escalation = true`      |
| `Config.DefaultVehiclePrice`          | `config.lua`          | Fallback vehicle value when the real one can't be determined              |
| `Config.TieredPricing`                | `config.lua`          | Master toggle for vehicle-value-based pricing                             |
| `Config.PriceTiers`                   | `config.lua`          | The tier table itself — fully editable, more tiers can be added           |
| `Config.PartAcquisitionCost`          | `config.lua`          | Whether the item's own value is factored into the part's acquisition cost |
| `Config.Prices`                       | `config.lua`          | Base prices for paints and RGB custom colors specifically                 |
| `modData.price`                       | `shared/modtypes.lua` | Base price per mod type                                                   |
| `modData.variants[i].price`           | `shared/modtypes.lua` | Explicit per-variant price override, skips escalation                     |
| `modData.escalation`                  | `shared/modtypes.lua` | Enables per-variant price escalation for that mod                         |
| `Config.ModsMenu.IncentivizedPricing` | `config.lua`          | Self-checkout markup                                                      |
| `Config.Shop.Markup`                  | `config.lua`          | Per-shop boss-configurable markup                                         |
