Economy¶
Applejack's economy is unusual: there are no vendors, no banks and no market. Money enters the world on a timer and leaves it through manufacturing, taxes and mistakes.
Sources: metatables/sv_player.lua (GiveMoney, CanAfford), init.lua (the payday loop
at :1412), sv_commands.lua:1097 (/manufacture), items/misc/money.lua, sh_config.lua.
1. Money¶
function meta:GiveMoney(amount)
self.cider._Money = math.max(self.cider._Money + amount, 0);
SendUserMessage("MoneyAlert", self, amount);
end
That is the whole implementation. An integer with a floor of zero. meta:CanAfford(n) is a
comparison.
Note the floor: you cannot go into debt. A transaction that would take you below zero instead takes you to zero. No credit, no negative balance, no loans. Combined with the door tax (§4) this produces the framework's only forced-liquidation mechanic.
Money is not an inventory item, despite items/misc/money.lua existing — see
D-12. It is replicated to the owning client as a CLASS_LONG
auto-CSVar once per second, changed or not (D-11).
| Setting | Default |
|---|---|
Default Money |
0 |
Death Penalty |
2% of money lost on death — marked unused |
Starting with nothing is a deliberate statement about the game's difficulty curve.
2. Income¶
There are exactly three sources.
2.1 Salary¶
Set from TEAM.Salary on joining a job. GM:PlayerAdjustSalary (init.lua:711) doubles
it for donators.
Paid in the payday loop to every player who is alive and not arrested. Jail costs you your wages as well as your time.
Salaries range from 75 (Rebel) to 300 (Mayor, Police Commander). See the full table in 05_TEAMS_JOBS_FACTIONS.md. The notable figure is Citizen at 200 — higher than Supplier, Arms Dealer or Black Market Dealer. Specialist jobs are not paid better; they are paid worse, and compensated with manufacturing rights.
2.2 Contraband¶
Every Earning Interval = 300 s, contraband entities pay their owner
(init.lua:1412). The loop also warns when contraband needs refilling — printers and
labs are not passive income, they need tending.
Gated by PlayerCanEarnContraband, and by config["Officials Contraband"] (default
true) which lets city officials run contraband too.
Per-player caps come from GM.Config.Contraband[uid].maximum, enforced by
items/base/contraband.lua through meta:AddCount / TakeCount.
2.3 Player trade¶
/givemoney (sv_commands.lua:521) and /dropmoney (:545), the latter spawning a
physical misc/money item that anyone can pick up. There is no trade window, no escrow, no
confirmation — you hand money over and trust the other party.
That is a deliberate design position: the framework does not make trade safe. Being robbed mid-deal is a valid outcome. Any new trade UI must not accidentally remove this.
3. Expenditure — manufacturing¶
There are no shops. /manufacture is how goods enter the world.
/manufacture <item>
- Resolve the item; unknown → fail.
- Category check — the item's category must be in the player's team's
canmakelist. Failure message: "Police Officers cannot manufacture Illegal Weapons!" - Cooldown —
_NextManufactureItem = CurTime() + (5 × item.Batch). Larger batches lock you out for longer. Admins bypass it. - Cost —
item.Cost × item.Batch, checked againstCanAfford. Failure reports the exact shortfall: "You need another $340!" - Optional
item:canManufacture(ply)veto. - Charge, then spawn the goods in the world via
item:Make()at the player's eye trace — not into the inventory. A shipment is a physical crate you must then carry. item:onManufacture(ply, entity, amount)hook; the entity is registered to the player with prop protection.- Notify and log to
EVENT_EVENT.
Why this matters¶
This one command is the entire production economy, and it encodes three important rules:
- Role monopoly. Only a Chef makes food. Only an Arms Dealer makes legal weapons. Only a Black Market Dealer makes illegal goods. This is what forces trade between players.
- Goods are physical. A shipment appears in the world and must be transported. Supply chains have geography, and can be intercepted.
- Batch size is a rate limit. Cost scales linearly with batch, cooldown scales linearly with batch. Bulk production is not more efficient, just less frequent.
The master plan's Phase 15 (crafting: recipes, stations, skills, failure chance, quality) is
almost entirely new. What must survive from /manufacture is role monopoly, physical output,
and cost/cooldown scaling with batch.
4. Taxation¶
| Setting | Default |
|---|---|
Door Tax |
true |
Door Tax Amount |
50 per door |
Maximum Doors |
5 |
Door Cost |
150 |
Every payday, each door holder is charged Door Tax Amount per door. If they cannot pay:
"You can't pay your taxes. Your doors were removed."
Property is repossessed. This is the only forced-liquidation mechanic in the game and it is excellent: combined with the zero floor on money, it means that going broke has a consequence beyond inconvenience. Property is a liability as well as an asset.
A player at the 5-door cap pays 250 per payday — more than a Citizen's entire salary. Owning the maximum requires an active income. Preserve this relationship when retuning.
5. Other costs¶
| Action | Cost |
|---|---|
| Buy a door | 150 |
| Sell a door | refunds 50% (75) |
| Sell an item | Refund, defaulting to Cost / 2 |
Advertise (/advert) |
60, with a 150 s cooldown |
| Manufacture | Cost × Batch |
The consistent 50% refund across doors and items is the framework's core scarcity lever. Every reversal of a decision costs half its value. It is why inventory management matters and why the 40-unit budget bites.
6. What does not exist¶
Against the master plan's Phase 11:
| Feature | Status |
|---|---|
| Money | ✅ |
| Salaries and payday | ✅ |
| Taxes | ✅ (door tax, with repossession) |
| Buying / selling | ⚠️ Manufacturing and 50% item sale only — no vendors |
| Banks | ❌ Absent. sv_container.lua's hook-resolvable contents exist specifically to make a virtual bank possible (03) — the hook was built, the bank never was. |
| Vendors / NPCs | ❌ Absent. items/base/npc.lua exists; there is no NPC framework. |
| Trading | ⚠️ /givemoney and /dropmoney on trust only |
| Licences | ❌ Absent |
| Price configuration | ⚠️ Per-item Cost in each definition; no global economy tuning |
The absence of banks is the most consequential. All money is carried, all money can be taken, and there is nowhere to put it — which is entirely consistent with the framework's philosophy and should be changed only deliberately.
7. What survives¶
Survives: money as a floored integer with no debt; salary paid only to the living and un-jailed; donator salary multiplier; contraband as tended, interval-based income with caps; officials optionally corruptible; role-monopoly manufacturing; physical shipments spawned into the world; cost and cooldown scaling with batch size; the universal 50% refund; door tax with repossession; unprotected player-to-player trade.
Does not survive: money as a per-second unconditional broadcast; money as a pseudo-item that intercepts its own storage; prices scattered across item definitions with no global tuning surface; no economic telemetry.