The manual

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_minutes

The 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 typeBase frequencyGain multiplierQuirk
Standard client62%×1
Regular12%×0.9lifts Happiness
Tourist7%×1.2+1 XP
Party animal6%×1.515% altercation risk · tires her more
Businessman4%×2+1 XP
Big spender6%×2+1 XP
VIP3%×530% altercation risk
Celebrity0.5%×8draws 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_total

The 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 + contrebande

The 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

CategoryWhere its bonuses come from
DistrictThe neighbourhood she works in (Downtown grants +20 % base gains).
BuildingThe building type and its level.
ManagementYour stewards posted over the perimeter. The category almost nobody opens.
CardHer equipped abilities, her traits, her signature.
TemporaryBuffs: consumed items, coming off rest, PimpChat answers.
PermanentThe 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.