diff --git a/docs/DESIGN-v3.md b/docs/DESIGN-v3.md index 7f4202a..7042eb3 100644 --- a/docs/DESIGN-v3.md +++ b/docs/DESIGN-v3.md @@ -571,7 +571,7 @@ Blue becomes one milestone, and the long goal is the Golden Fleece. |---|---|---|---|---| | 0 | The old farm ("The farm's yours, love. Let's see what the flock gives us.") | first lambs | forecast (swatch litter), facts | 1 | | 1 | Hidden colours ("White on top, colour underneath!") | a lamb with a visible colour at I ≥ 0.3 **and** 3 shearings sold | cards, vet, orders, the fantail | 5 | -| 2 | The woolshed (Aunty Mere: "Wool's worth more with a bit of mahi in it.") | sell 5 different item types and fill 2 orders | woolshed, benches, demand meters, patterns, creek flats, bush edge I, tūī | 11 | +| 2 | The woolshed (Aunty Mere: "Wool's worth more with a bit of mahi in it.") | sell 3 different item types (was 5; see BACKLOG) and fill 2 orders | woolshed, benches, demand meters, patterns, creek flats, bush edge I, tūī | 11 | | 3 | True blue (Old Tom: "Now, a *blue* one. That'd turn heads at the show.") | a true-blue sheep (§2.2) and a ribbon (1st–3rd) at the A&P show | numbers, A&P show, Merino/Icelandic/Drysdale, loom, kākā, ruru, rare-gene screen | 18 | | 4 | Fresh blood and rare wool (Barry: "Reckon you'll never beat my Romneys.") | shear your first fantasy fleece and win 1st in any show class | family tree, visiting rams (incl. "from down south"), hill paddock, kiwi | 27 | | 5 | The Golden Fleece (the show committee's letter) | win the Golden Fleece (§10.2) | signature knit, high country, kea; afterwards endless mode | 36 | diff --git a/packages/game/src/core/acts.test.ts b/packages/game/src/core/acts.test.ts index 9a48096..6da0b50 100644 --- a/packages/game/src/core/acts.test.ts +++ b/packages/game/src/core/acts.test.ts @@ -64,14 +64,14 @@ describe("acts", () => { expect(checkActAdvance(g)).toBeNull(); }); - it("ch2: five item types sold and two orders filled, both needed", () => { + it("ch2: three item types sold and two orders filled, both needed", () => { const g = newGame(24); enterAct(g, 2); - g.stats.itemTypesSold = ["a", "b", "c", "d"]; + g.stats.itemTypesSold = ["a", "b"]; g.stats.ordersFilled += 2; - expect(checkActAdvance(g)).toBeNull(); // four kinds - expect(currentAct(g).progressText).toBe("Four of five kinds sold · Two of two orders filled."); - g.stats.itemTypesSold.push("e"); + expect(checkActAdvance(g)).toBeNull(); // two kinds + expect(currentAct(g).progressText).toBe("Two of three kinds sold · Two of two orders filled."); + g.stats.itemTypesSold.push("c"); g.stats.ordersFilled = g.actStart.ordersFilled + 1; expect(checkActAdvance(g)).toBeNull(); // one order is short g.stats.ordersFilled += 1; diff --git a/packages/game/src/core/acts.ts b/packages/game/src/core/acts.ts index ce80c2e..c4cd8ef 100644 --- a/packages/game/src/core/acts.ts +++ b/packages/game/src/core/acts.ts @@ -1,6 +1,6 @@ /** Story acts: goals, progress, unlocks and the ending. */ import { - ACTS, ORDERS_CARRIED, REGISTRY_BLUES, REGISTRY_MAX_INBREEDING, REGISTRY_MICRONS, + ACTS, ITEM_TYPES_FOR_CH2, ORDERS_CARRIED, ORDERS_FOR_CH2, REGISTRY_BLUES, REGISTRY_MAX_INBREEDING, REGISTRY_MICRONS, } from "./config.js"; import { addLog, flockSheep } from "./state.js"; import { woolOf } from "./colour.js"; @@ -41,9 +41,6 @@ export function act2Orders(state: GameState): number { /** Shearings that must be sold for chapter 1. */ const SHEARINGS_FOR_CH1 = 3; -/** Different item kinds sold, and orders filled, for chapter 2. */ -const ITEM_TYPES_FOR_CH2 = 5; -const ORDERS_FOR_CH2 = 2; /** Intensity at which a lamb's colour counts as visible (DESIGN-v3 §10.1 ch1). */ const VISIBLE_COLOUR_INTENSITY = 0.3; /** Show placings that count as a ribbon. */ diff --git a/packages/game/src/core/config.ts b/packages/game/src/core/config.ts index aeba0de..c3d09b9 100644 --- a/packages/game/src/core/config.ts +++ b/packages/game/src/core/config.ts @@ -258,7 +258,7 @@ export const ACTS: ActDef[] = [ }, { act: 2, title: "The woolshed", line: "Wool's worth more with a bit of mahi in it.", - goalText: "Sell five different kinds of item, and fill two orders.", unlocks: ["craft"], flockCap: 12, + goalText: "Sell three different kinds of item, and fill two orders.", unlocks: ["craft"], flockCap: 12, }, { act: 3, title: "True blue", line: "Now, a blue one. That'd turn heads at the show.", @@ -277,6 +277,9 @@ export const ACTS: ActDef[] = [ export const REGISTRY_BLUES = 6; export const REGISTRY_MICRONS = 28; export const REGISTRY_MAX_INBREEDING = 0.125; +/** Chapter 2 goal: different item kinds sold (DESIGN-v3 §10.1 says 5; 3 so the woolshed, open from season 7, doesn't hold chapter 3 back), and orders filled. */ +export const ITEM_TYPES_FOR_CH2 = 3; +export const ORDERS_FOR_CH2 = 2; /** Orders filled before act 2 that count toward it (at most). */ export const ORDERS_CARRIED = 2; /** How far raw-wool targets swing with the time of year (warm wools up in autumn, fine up in spring). */