Raise base pay for every cargo class by 50%
CI / check (push) Successful in 7m31s
Details
CI / check (push) Successful in 7m31s
Details
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1c115a7465
commit
9d72cace13
|
|
@ -1290,3 +1290,8 @@ Implementation decisions not spelled out in `memory-bank/implementation-plan.md`
|
|||
|
||||
- **A Lighter at the Moon, not the Courier**: with fleet-fit boards (CR-006) a Courier never sees a Heavy job it could carry, and a Lighter at the Moon sees one on about one board in eight, so the test waits for one board period at a time.
|
||||
- **The new pilot is levelled by real deliveries** (the server's own XP), rests included, rather than by editing XP.
|
||||
|
||||
## Base pay +50 % (after Phase 12, user decision)
|
||||
|
||||
- **All four cargo classes pay 50 % more per tonne per M km** (Standard 150, Heavy 210, High-Value 270, Dangerous 300). Fuel is unchanged, so every job is more profitable; the tutorial share rises too (a new player has ~2,950 cr at the deal instead of ~2,130).
|
||||
- **Chosen with the balance simulator**: +50 % is the largest raise that keeps every Step 12.1 target (first Market ship 60 min, discovery 28, loan paid off in 127, both purchase orders reach four ships at 127). Doubling would put the first Market ship at ~28 minutes, below the 45–75 window.
|
||||
|
|
|
|||
|
|
@ -314,3 +314,5 @@ Spec: `memory-bank/change-requests/CR-013-veterans-clipper.md` (received as "CR-
|
|||
- [x] **Step 12.6 — End-to-end: pilot progression.** Test (`e2e/12-6-pilot-progression.e2e.ts`): buy a Lighter, hire and assign a new pilot, fly them until level 1; take the Lighter to the Moon and wait for a Heavy Cargo 1 job it can carry; in the dispatch sheet the Lighter's pair is disabled with "Needs Heavy Cargo 1 (pilot has 0)"; after raising Heavy Cargo in the Pilots screen the pair is enabled; raising Long Haul adds the Long Haul duty bonus to the pilot's duty limit (CR-004).
|
||||
|
||||
**Phase 12 complete — waiting for review.**
|
||||
|
||||
- [x] **Follow-up: base pay +50 %** (user decision). Every cargo class's base pay per tonne per M km: Standard 100 → 150, Heavy 140 → 210, High-Value 180 → 270, Dangerous 200 → 300. Medians over 7 seeds (Lighter-first): first Market purchase 60 min, first discovery 28, loan paid off 127, four ships 127 (Freighter-first 127); no breaches. Payout hand-calculation tests now read the rate from content.
|
||||
|
|
|
|||
|
|
@ -5,28 +5,28 @@ export const cargoTypes: CargoType[] = [
|
|||
{
|
||||
id: "standard",
|
||||
name: "Standard",
|
||||
basePayPerTonnePerMillionKm: 100,
|
||||
basePayPerTonnePerMillionKm: 150,
|
||||
tierPayMultiplier: 1,
|
||||
requiredSkillId: null,
|
||||
},
|
||||
{
|
||||
id: "heavy",
|
||||
name: "Heavy",
|
||||
basePayPerTonnePerMillionKm: 140,
|
||||
basePayPerTonnePerMillionKm: 210,
|
||||
tierPayMultiplier: 1.2,
|
||||
requiredSkillId: "heavy-cargo",
|
||||
},
|
||||
{
|
||||
id: "high-value",
|
||||
name: "High-Value",
|
||||
basePayPerTonnePerMillionKm: 180,
|
||||
basePayPerTonnePerMillionKm: 270,
|
||||
tierPayMultiplier: 1.25,
|
||||
requiredSkillId: "expensive-cargo",
|
||||
},
|
||||
{
|
||||
id: "dangerous",
|
||||
name: "Dangerous",
|
||||
basePayPerTonnePerMillionKm: 200,
|
||||
basePayPerTonnePerMillionKm: 300,
|
||||
tierPayMultiplier: 1.3,
|
||||
requiredSkillId: "dangerous-cargo",
|
||||
},
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ const base: PayoutInput = {
|
|||
|
||||
describe("contract payout", () => {
|
||||
it("matches a hand calculation", () => {
|
||||
// 100 credits/t/M km × 10 t × 100M km.
|
||||
expect(contractPayout(base, config)).toBe(100_000);
|
||||
// Standard rate (credits/t/M km) × 10 t × 100M km.
|
||||
expect(contractPayout(base, config)).toBe(standard.basePayPerTonnePerMillionKm * 10 * 100);
|
||||
});
|
||||
|
||||
it("scales linearly with mass and distance", () => {
|
||||
|
|
@ -65,7 +65,9 @@ describe("payout on economic distance (decision 0.5.84)", () => {
|
|||
expect(contractPayout(moon, real)).toBe(contractPayout(moon, config));
|
||||
const mars = { ...base, distanceMillionKm: 130 };
|
||||
expect(contractPayout(mars, real)).toBeLessThan(contractPayout(mars, config));
|
||||
expect(contractPayout(mars, real)).toBe(Math.round(100 * 10 * economicDistance(130, real)));
|
||||
expect(contractPayout(mars, real)).toBe(
|
||||
Math.round(standard.basePayPerTonnePerMillionKm * 10 * economicDistance(130, real)),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue