Pricing reference
Why does one girl cost 500 gold and the next 5,000? Why does the same girl pay 30 gold for one shift and 200 the next? This page walks through the numbers the engine actually uses.
Two completely separate systems are at work:
- Girl pricing: what a girl costs to buy at Slave Market or sells for in the Dungeon. Built on the girl’s stats and skills.
- Job wages: how much gold a working girl earns each shift. Built on her job’s performance curve and her ask price.
Both are tunable from XML. Pack authors who want to rebalance an economy mostly do it by editing performance.xml / wage.xml per job, or by editing the trait/item effects that feed into stats and skills.
Girl pricing
Section titled “Girl pricing”The Ask Price stat
Section titled “The Ask Price stat”Every girl carries an AskPrice stat in the 0-100 range. It is derived, not authored: the engine recomputes it whenever stats change. You should not set it in Girls.girlsx; it gets overwritten.
Formula (from GirlManager::CalculateAskPrice):
askPrice = ((Beauty + Charisma) / 2) * 0.6askPrice += Confidence / 10askPrice += Intelligence / 10askPrice += Fame / 2askPrice += Level * 10 (if Level > 0)askPrice += random(-10..+10) (only on initial generation)askPrice = min(askPrice, 100) (hard cap)What this means in practice:
- Beauty and Charisma dominate the floor. A girl with 80 Beauty / 80 Charisma gets +48 from this term alone, before anything else.
- Confidence and Intelligence are minor on their own (10 points each per +1) but they round out the price.
- Fame is the biggest swing factor for trained girls. A girl who hits 100 Fame contributes +50 from that single term. Train a slave girl into a celebrity and her ask price doubles.
- Level is a flat +10 per level. Most random girls stay at level 1; named pack girls or veterans climb.
- The cap at 100 means a maxed-out girl’s
AskPricereads “100” and stops growing, but the slave-market price keeps growing through skills (see below).
Slave market price
Section titled “Slave market price”The slave market price multiplies AskPrice by 15 and then layers skill, level, and virginity bonuses on top (from cTariff::slave_base_price):
basePrice = AskPrice * 15basePrice += sum of all 12 skillsbasePrice += extra (skill - 75) * 2 for each skill above 75basePrice += AgilitybasePrice += Level * 100basePrice *= 1.5 if VirginThen the displayed buy price applies the difficulty multiplier cfg.out_fact.slave_cost() (configured in config.xml); the sell price uses cfg.in_fact.slave_sales().
Worked example, two girls side by side:
| Stat / skill | Girl A “fresh capture” | Girl B “trained star” |
|---|---|---|
| Beauty | 50 | 90 |
| Charisma | 40 | 90 |
| Confidence | 20 | 80 |
| Intelligence | 30 | 70 |
| Fame | 0 | 100 |
| Level | 1 | 5 |
| Service skill | 20 | 90 |
| Performance skill | 0 | 95 |
| Other 10 skills | ~10 avg | ~50 avg |
| Virgin | no | yes |
Girl A: AskPrice ~= 33. Slave base ~= 33*15 + (sum ~120) + 0 + 100 = ~715 gold.
Girl B: AskPrice = 100 (capped). Slave base = 100*15 + (sum ~700, plus high-skill bonuses ~80) + 70 + 500 = ~2,850, then *1.5 for virginity = ~4,275 gold.
The 5x gap players see between cheap and expensive girls is mostly Fame and skills, not Beauty. A girl can be gorgeous and cheap; a famous virgin with 90+ skills is the one that crosses 5,000 gold.
What raises a girl’s price
Section titled “What raises a girl’s price”In rough order of how much they move the slave-market number:
- Fame (one-time training jobs that raise it pay back many times over)
- Trained skills above 75 (each point above 75 contributes 3x its raw value to slave base)
- Beauty + Charisma (they cap your AskPrice ceiling)
- Level (slow but flat +100/level to slave base)
- Virginity (1.5x the entire base price)
- Confidence / Intelligence (minor, rounds things off)
Stats that do not affect pricing today: Constitution, Spirit, Strength, Health, Happiness, Tiredness. These show up in performance and survival, not at the auction block.
How traits and items move the number
Section titled “How traits and items move the number”In v1.13.3+, trait and item effects feed GetStat and GetSkill directly via the live modifier cache. So a trait that grants <effect type="stat" name="Beauty" value="20"/> raises AskPrice automatically the next time it’s recalculated; you do not need to handle pricing separately.
This is why the v1.13.3 trait pricing fix was a big deal: before that, traits could change a girl’s stats but the modifier cache was being silently dropped on the read path, so girls were priced as if their traits did nothing.
Job wages
Section titled “Job wages”How wages are computed (data-driven jobs)
Section titled “How wages are computed (data-driven jobs)”For jobs that ship a wage.xml, the flow is:
performance.xmlcomputes a Performance score from a weighted combination of stats, skills, traits, and brothel state. Higher = better shift.wage.xmlmaps that Performance score to gold via a piecewise linear curve (seereference/jobs-reference.md).- Tips and side payments (see below) add on top.
So a Bar Singer with 80 Performance skill and 60 Charisma might score 245 on the Performance curve and earn 155 gold; the same girl tired and grumpy might score 70 and earn -5 (a small loss, because audiences boo and refund).
A pack author rebalancing wages does it by editing wage.xml’s <Point> table. No code change.
Whore-style jobs (ask-price-driven)
Section titled “Whore-style jobs (ask-price-driven)”A handful of jobs (whore, brothelmasseuse, brothelstripper) earn wages keyed off the girl’s AskPrice rather than a Performance curve:
girl->m_Pay += askprice + flat_bonusThe flat bonus depends on the act (e.g. masseuse-with-sex = +60; strip-only = +10). This is why a famous, beautiful whore earns a multiple of what a fresh-from-the-dungeon girl earns for the exact same act; the askprice term carries her stat profile into the per-customer payout.
For jobs that resolve customer interactions (whore, escort, masseuse-with-sex), the customer can leave a tip:
- Customer’s
Happiness > 90after the act - Customer has
>= 20gold remaining - Tip is up to 20 gold, capped at customer’s wallet
Tips go to the girl’s m_Pay if she is free, or to the brothel’s finance pool if she is a slave.
Wages a girl never sees
Section titled “Wages a girl never sees”Some jobs deduct from the brothel’s support budget instead of paying the girl as gold-on-hand:
- Matron:
g_Gold.girl_support(wages)plusm_Payaccounting - House jobs (cook, clean, headgirl, mistress, etc.): mostly support-pool entries, often zero or negative against general income
- Training jobs: typically no
wage.xml, so no income
Pack authors who want a job to be “household service” (no income) simply omit wage.xml. Authors who want a job to cost the player simply give it negative <Point> values at low Performance.
Free vs slave girls
Section titled “Free vs slave girls”Free girls keep their m_Pay at end of week. Slave girls’ earnings flow through brothel finance: their m_Pay is recorded for the books but the actual gold goes to the player. This is bookkeeping, not gameplay; you don’t need to model it in pack data.
Tuning your own economy
Section titled “Tuning your own economy”Common levers, weakest to strongest:
- Change a single trait’s stat effect: moves all girls who have it.
- Change a job’s
wage.xmlcurve: rebalances that one job globally. - Change
performance.xmlweights: changes which stats matter for that job. - Change
cfg.out_fact.slave_cost(inconfig.xml, not pack data): global slave-market multiplier.
Test changes by saving and watching one girl across two-three shifts. Performance scores and per-action wages are logged to content_loading.txt when the engine runs.
Related references
Section titled “Related references”reference/jobs-reference.md: completeperformance.xmlandwage.xmlschemareference/effects-reference.md:<Effects>block grammar (used inside jobs)reference/traits-reference.md: trait effect types that feed stats and skillsreference/visible-synergies.md: discipline for building visible cross-girl synergies