# V2 Price Table System

`PriceTable.V2` defines reusable item pricing for economy systems. It is
currency-aware, supports buy and sell prices per item, can apply dynamic pricing
modifiers, and can override or scale prices for regional catalogs.

## Runtime Surface

- `FV2PriceTableEntry` maps one `ItemId` and `CurrencyId` pair to buy and sell
  prices in minor units.
- `FV2PriceTableRegionalOverride` adjusts one price entry for a `RegionId` with
  explicit buy/sell prices or a regional multiplier.
- `FV2PriceTableQuoteRequest` selects item, currency, region, buy/sell kind,
  quantity, and optional dynamic/regional pricing.
- `FV2PriceTableQuote` returns base, regional, dynamic, unit, and total prices,
  plus flags showing whether regional or dynamic pricing was applied.
- `FV2PriceTableValidationResult` validates item/currency uniqueness, catalog
  currency ids, dynamic multiplier bounds, regional override references, and
  buy/sell price sanity.

## Authoring Rules

1. A price table entry is unique by `ItemId` plus `CurrencyId`.
2. Buy and sell prices are stored in currency minor units.
3. Sell price cannot exceed buy price when both buy and sell are enabled.
4. Price tables validate `CurrencyId` values against `CurrencyDefinition.V2`.
5. Dynamic pricing uses demand, supply, and event multipliers with optional
   min/max clamps.
6. Regional pricing can either replace buy/sell prices directly or apply a
   regional multiplier.
7. Quotes multiply resolved unit price by quantity after regional and dynamic
   adjustments.

## Validation Commands

Run these checks when touching price table behavior:

```bash
python3 V2/ue/Tools/check-v2-price-table.py
python3 V2/ue/Tools/check-v2-currency-definition.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/Gameplay/Economy/PriceTable_V2_Contract.json
python3 -m json.tool V2/ue/Build/Horde/v2-buildgraph-job.json
python3 V2/tools/validate-v2-docs.py
```
