Economy
Cash does not fall out of a counter: it comes from randomly drawn clients, one at a time, each leaving an amount that depends on the girl’s Charme and on everything you have stacked around her. This chapter explains that stacking — it is where the difference lies between an empire that doubles and one that stalls.
Where the money comes from
The game advances in ticks of 10 seconds. At every tick, each working girl receives a randomly drawn number of clients, then serves them one by one.
N_clients ~ Poisson(λ) ; λ = λ_lieu × (1 + freq) × durée_du_tick_en_minutesThe client count per tick is a Poisson draw, not a fixed average: two identical ticks do not yield the same number of clients. `λ_place` is `streetBase` on the street, and `buildingBase + buildingPerLevel × level` in a building — the real reason levelling a building pays off, even with no gain bonus.
Implemented in src/domain/clients.ts
Each client’s type is drawn from the location’s table. The eight types are worth wildly different amounts:
| Client type | Base frequency | Gain multiplier | Quirk |
|---|---|---|---|
| Standard client | 62% | ×1 | — |
| Regular | 12% | ×0.9 | lifts Happiness |
| Tourist | 7% | ×1.2 | +1 XP |
| Party animal | 6% | ×1.5 | 15% altercation risk · tires her more |
| Businessman | 4% | ×2 | +1 XP |
| Big spender | 6% | ×2 | +1 XP |
| VIP | 3% | ×5 | 30% altercation risk |
| Celebrity | 0.5% | ×8 | draws police attention · +3 XP |
Worth knowing
A Celebrity is worth eight standard clients on her own, but she is a hundred and twenty times rarer — and she leaves Heat behind. Districts and buildings reshape these frequencies: that is the real lever, far more than hoping for a good roll.
A transaction’s gain
Gain = (base + perCharme × Charme_eff) × T_client × Multiplicateur_totalThe gain from ONE client. `T_client` is the drawn client type’s multiplier (from a Standard at ×1 up to a Celebrity at ×8). Effective Charme enters linearly: doubling Charme does not double the gain, it only doubles the `perCharme × Charme_eff` term.
Implemented in src/domain/clients.ts
In practice, a girl with no bonuses earns a base of $14 plus $1.4 per point of effective Charme, all multiplied by the client type. Then come the situational corrections:
Gain_tick = ⌊ Gain × M_bonheur × M_nuit × M_épuisée × M_buff ⌋ + boisson + contrebandeThe corrections applied at tick time, after the base gain. `M_night` is 1+night bonus between 22:00 and 06:00 UTC, `M_exhausted` removes 25 % below the Endurance threshold, and `M_happiness` follows the mood tiers — dropping to 0 below 10 Happiness: an unhappy girl earns nothing at all.
Implemented in src/domain/kernel.ts
Finally come the side sales, which do not depend on the client:
Boisson = p × cashPerBarLevel × niveau_du_bar_du_district × (1 + bonus_encadrement)The side sale, added to every client. It depends on the level of the district’s Bar, not on where the girl works: a high-level Bar waters every spot in the neighbourhood. Probability `p` doubles on Party Street.
Implemented in src/server/game/service.ts
How multipliers stack
This is the rule to understand. All your gain bonuses fall into six categories. Within a category they add; across categories they multiply.
Total = (1+ΣDistrict) × (1+ΣBâtiment) × (1+ΣEncadrement) × (1+ΣCarte) × (1+ΣTemporaires) × (1+ΣPermanents)The game’s central rule. Bonuses within a category add up, categories multiply. That is why a sixth building bonus is worth less than a first management bonus: opening an empty category always beats padding a full one.
Implemented in src/domain/multipliers.ts
| Category | Where its bonuses come from |
|---|---|
| District | The neighbourhood she works in (Downtown grants +20 % base gains). |
| Building | The building type and its level. |
| Management | Your stewards posted over the perimeter. The category almost nobody opens. |
| Card | Her equipped abilities, her traits, her signature. |
| Temporary | Buffs: consumed items, coming off rest, PimpChat answers. |
| Permanent | The Album and the Prestige tree. Gained once, never lost. |
Worth knowing
A worked example. You already have +50 % building bonus. Adding +10 % building takes the factor from 1.50 to 1.60, i.e. +6.7 % income. Adding +10 % management — an empty category — takes it to 1.50 × 1.10, i.e. +10 %. Same nominal bonus, one and a half times the effect. Open empty categories before padding full ones.
The rate the interface shows is the product of all this, per second. It is an expectation, not a promise:
Taux_affiché = espérance(clients/s) × espérance(gain/client)The rate the interface shows is an expectation, not a promise: over any given minute, Poisson decides. This function must mirror the kernel exactly — its comment documents three past divergences, each paid for in free Cash. Read this one, never a reconstruction.
Implemented in src/server/game/service.ts
Wages and bankruptcy
Every 4 hours, payday comes. Every girl on your roster costs her rarity’s wage — whether she works or not.
Salaire_cycle = Σ salaire(rareté) × (si Diva : divaMultiplier) × (1 + bonus_de_salaire)Charged every payroll cycle. Wages follow rarity, not level: a level-1 Platinum already costs twenty Bronzes. Two unpaid cycles trigger a strike, three a resignation.
Implemented in src/domain/payroll.ts
If the till is empty, the machinery starts:
- 2 unpaid cycles — the strike. She stops working and loses Happiness. You must settle the arrears to restart her.
- 3 unpaid cycles — resignation. Each girl rolls to leave, and the roll depends on her Happiness.
p_démission = max(0,05 ; (30 − Bonheur) / 100)On the third unpaid cycle, every girl rolls for resignation. The 5 % floor applies even to a perfectly happy girl: debt always ends up costing a card. At 0 Happiness, it is 30 % per cycle.
Implemented in src/domain/payroll.ts
The catch
The 5% floor applies even to a perfectly happy girl. Prolonged debt always ends up costing a card — and the game picks which one by dice, not you.
The Mentor lends $1,000 in a pinch, repayable at ×1.2 within 48 hours. It is a lifeline, not a lever: the rate makes it a losing habit.
While you are away
The game keeps running while you are away, and catches everything up on your return: clients served, fatigue, mood, Heat, levels gained. The catch-up is capped at a few dozen hours.
The catch
Two ceilings await you on return, and the second is the costlier: the full satchel. A girl whose satchel overflowed stopped earning long ago — and her Happiness erodes meanwhile. Catch-up does not fix that: it faithfully simulates it.
The satchel holds $200 per card level: a level-10 card banks $2,000 before saturating. Levelling a card also buys her more time without you.
