@dreadwood-types/types 0.1.8 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Bounty Hunter - repeatable kill contracts handed out at the Bounty Board on the
3
+ * Crossroads by Bruce. Completing one trains the Bounty Hunter skill (XP is granted
4
+ * per counted kill, equal to that NPC's normal kill XP) and pays a Small Satchel.
5
+ *
6
+ * Tiers are gated by the player's Combat level. Bruce only ever offers the single
7
+ * highest tier the player has unlocked, so lower-tier targets stop being offered as
8
+ * the hunter grows (seagull / crab contracts vanish once Combat reaches 8).
9
+ */
10
+ /** Bounty targets - all reuse an existing NpcKind. */
11
+ export type BountyTargetKind = 'seagull' | 'crab' | 'rabbit' | 'fox' | 'bandit' | 'soldier' | 'goblin' | 'amazon';
12
+ export type BountyOffer = {
13
+ target: BountyTargetKind;
14
+ count: number;
15
+ /**
16
+ * Representative creature level used only for the Small Satchel gold roll. Fixed
17
+ * per offer rather than read from the NPC's rolled level so a bounty always pays
18
+ * the same band.
19
+ */
20
+ rewardLevel: number;
21
+ };
22
+ export type BountyTier = {
23
+ /** Minimum Combat level to be offered this tier. */
24
+ minCombat: number;
25
+ offers: BountyOffer[];
26
+ };
27
+ /** Ordered low to high; the last entry whose `minCombat` a player meets is theirs. */
28
+ export declare const BOUNTY_TIERS: readonly BountyTier[];
29
+ /** The offers Bruce shows a player at this Combat level (empty below tier 1). */
30
+ export declare function bountyTierForCombat(combatLevel: number): BountyOffer[];
31
+ export declare function isBountyTargetKind(value: unknown): value is BountyTargetKind;
32
+ /** Find the offer for a target at the player's tier, or null if not currently offered. */
33
+ export declare function bountyOfferFor(combatLevel: number, target: BountyTargetKind): BountyOffer | null;
34
+ export type ActiveBounty = {
35
+ target: BountyTargetKind;
36
+ count: number;
37
+ killed: number;
38
+ /** Creature level for the Small Satchel gold roll when the reward is claimed. */
39
+ rewardLevel: number;
40
+ };
41
+ export declare function normalizeActiveBounty(raw: unknown): ActiveBounty | null;
42
+ export declare function isBountyComplete(bounty: ActiveBounty | null | undefined): boolean;
43
+ /** Plural creature name for chat and panel copy ("30 seagulls"). */
44
+ export declare const BOUNTY_TARGET_NAME: Record<BountyTargetKind, string>;
45
+ export declare function bountyTargetDisplayName(target: BountyTargetKind): string;
46
+ export declare const SATCHEL_GOLD_MIN_MULT = 20;
47
+ export declare const SATCHEL_GOLD_MAX_MULT = 60;
48
+ /** 0.1% chance the satchel also holds one poplar / spruce item. */
49
+ export declare const SATCHEL_RARE_CHANCE = 0.001;
50
+ /** 5% chance the satchel also holds a bundle of Birch Arrows. */
51
+ export declare const SATCHEL_ARROW_CHANCE = 0.05;
52
+ export declare const SATCHEL_ARROW_MIN = 10;
53
+ export declare const SATCHEL_ARROW_MAX = 100;
54
+ export type SatchelPoolEntry = {
55
+ kind: string;
56
+ minQty: number;
57
+ maxQty: number;
58
+ };
59
+ /** One of these is picked when the rare roll hits. */
60
+ export declare const SATCHEL_RARE_POOL: readonly SatchelPoolEntry[];
61
+ /** Gold band a satchel for this creature level can pay. */
62
+ export declare function satchelGoldRange(rewardLevel: number): {
63
+ min: number;
64
+ max: number;
65
+ };
66
+ //# sourceMappingURL=bounty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounty.d.ts","sourceRoot":"","sources":["../src/bounty.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EA2CpC,CAAC;AAEX,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAOtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAW5E;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,gBAAgB,GACvB,WAAW,GAAG,IAAI,CAEpB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAavE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAEjF;AAED,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAS/D,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAExE;AAMD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,iEAAiE;AACjE,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EAO/C,CAAC;AAEX,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAGlF"}
package/dist/bounty.js ADDED
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Bounty Hunter - repeatable kill contracts handed out at the Bounty Board on the
3
+ * Crossroads by Bruce. Completing one trains the Bounty Hunter skill (XP is granted
4
+ * per counted kill, equal to that NPC's normal kill XP) and pays a Small Satchel.
5
+ *
6
+ * Tiers are gated by the player's Combat level. Bruce only ever offers the single
7
+ * highest tier the player has unlocked, so lower-tier targets stop being offered as
8
+ * the hunter grows (seagull / crab contracts vanish once Combat reaches 8).
9
+ */
10
+ /** Ordered low to high; the last entry whose `minCombat` a player meets is theirs. */
11
+ export const BOUNTY_TIERS = [
12
+ {
13
+ minCombat: 1,
14
+ offers: [
15
+ { target: 'seagull', count: 30, rewardLevel: 1 },
16
+ { target: 'crab', count: 30, rewardLevel: 2 },
17
+ ],
18
+ },
19
+ {
20
+ minCombat: 3,
21
+ offers: [
22
+ { target: 'rabbit', count: 35, rewardLevel: 3 },
23
+ { target: 'seagull', count: 30, rewardLevel: 1 },
24
+ { target: 'crab', count: 30, rewardLevel: 2 },
25
+ ],
26
+ },
27
+ {
28
+ minCombat: 8,
29
+ offers: [{ target: 'fox', count: 10, rewardLevel: 5 }],
30
+ },
31
+ {
32
+ minCombat: 12,
33
+ offers: [
34
+ { target: 'soldier', count: 20, rewardLevel: 8 },
35
+ { target: 'fox', count: 10, rewardLevel: 5 },
36
+ { target: 'bandit', count: 5, rewardLevel: 5 },
37
+ ],
38
+ },
39
+ {
40
+ minCombat: 15,
41
+ offers: [
42
+ { target: 'goblin', count: 20, rewardLevel: 12 },
43
+ { target: 'soldier', count: 30, rewardLevel: 8 },
44
+ ],
45
+ },
46
+ {
47
+ minCombat: 18,
48
+ offers: [
49
+ { target: 'soldier', count: 40, rewardLevel: 8 },
50
+ { target: 'goblin', count: 40, rewardLevel: 12 },
51
+ { target: 'amazon', count: 25, rewardLevel: 15 },
52
+ ],
53
+ },
54
+ ];
55
+ /** The offers Bruce shows a player at this Combat level (empty below tier 1). */
56
+ export function bountyTierForCombat(combatLevel) {
57
+ const level = Math.floor(combatLevel);
58
+ let chosen = [];
59
+ for (const tier of BOUNTY_TIERS) {
60
+ if (level >= tier.minCombat)
61
+ chosen = tier.offers.slice();
62
+ }
63
+ return chosen;
64
+ }
65
+ export function isBountyTargetKind(value) {
66
+ return (value === 'seagull' ||
67
+ value === 'crab' ||
68
+ value === 'rabbit' ||
69
+ value === 'fox' ||
70
+ value === 'bandit' ||
71
+ value === 'soldier' ||
72
+ value === 'goblin' ||
73
+ value === 'amazon');
74
+ }
75
+ /** Find the offer for a target at the player's tier, or null if not currently offered. */
76
+ export function bountyOfferFor(combatLevel, target) {
77
+ return bountyTierForCombat(combatLevel).find((o) => o.target === target) ?? null;
78
+ }
79
+ export function normalizeActiveBounty(raw) {
80
+ if (!raw || typeof raw !== 'object')
81
+ return null;
82
+ const r = raw;
83
+ if (!isBountyTargetKind(r.target))
84
+ return null;
85
+ const count = typeof r.count === 'number' && Number.isFinite(r.count) ? Math.max(1, Math.floor(r.count)) : 0;
86
+ if (count <= 0)
87
+ return null;
88
+ const killed = typeof r.killed === 'number' && Number.isFinite(r.killed) ? Math.max(0, Math.floor(r.killed)) : 0;
89
+ const rewardLevel = typeof r.rewardLevel === 'number' && Number.isFinite(r.rewardLevel)
90
+ ? Math.max(1, Math.floor(r.rewardLevel))
91
+ : 1;
92
+ return { target: r.target, count, killed: Math.min(killed, count), rewardLevel };
93
+ }
94
+ export function isBountyComplete(bounty) {
95
+ return Boolean(bounty && bounty.killed >= bounty.count);
96
+ }
97
+ /** Plural creature name for chat and panel copy ("30 seagulls"). */
98
+ export const BOUNTY_TARGET_NAME = {
99
+ seagull: 'seagulls',
100
+ crab: 'crabs',
101
+ rabbit: 'rabbits',
102
+ fox: 'foxes',
103
+ bandit: 'bandits',
104
+ soldier: 'soldiers',
105
+ goblin: 'goblins',
106
+ amazon: 'Amazonian warriors',
107
+ };
108
+ export function bountyTargetDisplayName(target) {
109
+ return BOUNTY_TARGET_NAME[target] ?? target;
110
+ }
111
+ /* ------------------------------------------------------------------ *
112
+ * Small Satchel - the reward for any completed bounty.
113
+ * ------------------------------------------------------------------ */
114
+ export const SATCHEL_GOLD_MIN_MULT = 20;
115
+ export const SATCHEL_GOLD_MAX_MULT = 60;
116
+ /** 0.1% chance the satchel also holds one poplar / spruce item. */
117
+ export const SATCHEL_RARE_CHANCE = 0.001;
118
+ /** 5% chance the satchel also holds a bundle of Birch Arrows. */
119
+ export const SATCHEL_ARROW_CHANCE = 0.05;
120
+ export const SATCHEL_ARROW_MIN = 10;
121
+ export const SATCHEL_ARROW_MAX = 100;
122
+ /** One of these is picked when the rare roll hits. */
123
+ export const SATCHEL_RARE_POOL = [
124
+ { kind: 'poplarhelmet', minQty: 1, maxQty: 1 },
125
+ { kind: 'poplarbody', minQty: 1, maxQty: 1 },
126
+ { kind: 'poplarlegs', minQty: 1, maxQty: 1 },
127
+ { kind: 'poplarspear', minQty: 1, maxQty: 1 },
128
+ { kind: 'sprucearrow', minQty: 10, maxQty: 30 },
129
+ { kind: 'sprucewood', minQty: 10, maxQty: 20 },
130
+ ];
131
+ /** Gold band a satchel for this creature level can pay. */
132
+ export function satchelGoldRange(rewardLevel) {
133
+ const level = Math.max(1, Math.floor(rewardLevel));
134
+ return { min: level * SATCHEL_GOLD_MIN_MULT, max: level * SATCHEL_GOLD_MAX_MULT };
135
+ }
136
+ //# sourceMappingURL=bounty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounty.js","sourceRoot":"","sources":["../src/bounty.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export declare function playerNameError(name: string): string | null;
17
17
  export declare const CHUNK_SIZE = 32;
18
18
  export declare const FARMLAND_CHUNKS_X = 8;
19
19
  export declare const VILLAGE_CHUNKS_X = 2;
20
- export declare const EASTLAND_CHUNKS_X = 14;
20
+ export declare const EASTLAND_CHUNKS_X = 17;
21
21
  export declare const PLAYABLE_CHUNKS_X: number;
22
22
  export declare const PLAYABLE_CHUNKS_Z = 3;
23
23
  export declare const FARMLAND_WIDTH: number;
@@ -77,8 +77,10 @@ export declare enum TileType {
77
77
  Sand = 4,
78
78
  Ash = 5
79
79
  }
80
- export type EntityKind = 'tree' | 'rock' | 'shell' | 'seaweed' | 'wormcast' | 'beachhut' | 'farmhut' | 'table' | 'gardenfork' | 'woodennet' | 'bucket' | 'egg' | 'milkbucket' | 'fence' | 'tradingcart' | 'signpost' | 'feather' | 'crabmeat' | 'burrow' | 'rawrabbit' | 'brokenpier' | 'abandonedboat' | 'ship' | 'campfire' | 'cookedcrab' | 'cookedrabbit' | 'cookedchicken' | 'lugworm' | 'maggot' | 'earthworm' | 'earthwormcast' | 'rottenmeat' | 'fishingline' | 'fishinghook' | 'fishingfloat' | 'coins' | 'lilypad' | 'reeds' | 'jetty' | 'rawbass' | 'cookedbass' | 'rawperch' | 'cookedperch' | 'rawtench' | 'cookedtench' | 'frog' | 'cookedfroglegs' | 'crops' | 'smallfishingrod' | 'mudhut' | 'fortwall' | 'archertower' | 'barbedwire' | 'barricade' | 'haybale' | 'horse' | 'trough' | 'barrel' | 'well' | 'farmcart' | 'scarecrow' | 'logpile' | 'flowers' | 'lantern' | 'bench' | 'compost' | 'farmtool' | 'ranchgate' | 'milestone' | 'tent' | 'cargo' | 'bush' | 'workbench' | 'workshop' | 'nettles' | 'sharprock' | 'storagehut' | 'bankchest' | 'birchwood' | 'woodenclub' | 'livoniapineclub' | 'leatherboots' | 'poplarhelmet' | 'poplarbody' | 'poplarlegs' | 'poplarspear' | 'pineshield' | 'hay' | 'caveentrance' | 'rattail' | 'ratteeth' | 'brokensaw' | 'bronzechest' | 'bronzechestkey' | 'goblincavekey' | 'goblinprisonkey' | 'blacksmithinghammer' | 'blacksmithingtongs' | 'copper' | 'tin' | 'iron' | 'bridge' | 'hatchet' | 'foldingsaw' | 'woolygloves' | 'woolyboots' | 'carvingknife' | 'pinebow' | 'apple' | 'wheat' | 'poplarwood' | 'pinewood' | 'sprucewood' | 'bircharrow' | 'sprucearrow' | 'stone' | 'grapes' | 'orange' | 'dungeondoor' | 'bones' | 'unlitbirchtorch' | 'litbirchtorch' | 'ratnest' | 'glowfungus' | 'silo' | 'grainmill' | 'pumpwindmill' | 'watertower' | 'packbarn' | 'packcoop' | 'packstable' | 'foxtracks' | 'foxtail' | 'rabbithutch';
81
- export type NpcKind = 'seagull' | 'crab' | 'seabass' | 'beagle' | 'trader' | 'woody' | 'rabbit' | 'petrabbit' | 'forbes' | 'jobless' | 'driver' | 'duck' | 'angler' | 'wilson' | 'pig' | 'cow' | 'chicken' | 'sheep' | 'clark' | 'clarksson' | 'stablemaster' | 'ranger' | 'debbie' | 'anne' | 'wallarcher' | 'hijacker' | 'pony' | 'rat' | 'soldier' | 'captain' | 'goblin' | 'grem' | 'spineless' | 'john' | 'nicholas' | 'robin' | 'kyle' | 'banker' | 'bandit' | 'amazon' | 'liv' | 'fox' | 'rimdel';
80
+ export type EntityKind = 'tree' | 'rock' | 'shell' | 'seaweed' | 'wormcast' | 'beachhut' | 'farmhut' | 'table' | 'gardenfork' | 'woodennet' | 'bucket' | 'egg' | 'milkbucket' | 'fence' | 'tradingcart' | 'signpost' | 'feather' | 'crabmeat' | 'burrow' | 'rawrabbit' | 'brokenpier' | 'abandonedboat' | 'ship' | 'campfire' | 'cookedcrab' | 'cookedrabbit' | 'cookedchicken' | 'lugworm' | 'maggot' | 'earthworm' | 'earthwormcast' | 'rottenmeat' | 'fishingline' | 'fishinghook' | 'fishingfloat' | 'coins' | 'lilypad' | 'reeds' | 'jetty' | 'rawbass' | 'cookedbass' | 'rawperch' | 'cookedperch' | 'rawtench' | 'cookedtench' | 'frog' | 'cookedfroglegs' | 'crops' | 'smallfishingrod' | 'mudhut' | 'fortwall' | 'archertower' | 'barbedwire' | 'barricade' | 'haybale' | 'horse' | 'trough' | 'barrel' | 'well' | 'farmcart' | 'scarecrow' | 'logpile' | 'flowers' | 'lantern' | 'bench' | 'compost' | 'farmtool' | 'ranchgate' | 'milestone' | 'tent' | 'cargo' | 'bush' | 'workbench' | 'workshop' | 'nettles' | 'sharprock' | 'storagehut' | 'bankchest' | 'birchwood' | 'woodenclub' | 'livoniapineclub' | 'leatherboots' | 'poplarhelmet' | 'poplarbody' | 'poplarlegs' | 'poplarspear' | 'pineshield' | 'hay' | 'caveentrance' | 'rattail' | 'ratteeth' | 'brokensaw' | 'bronzechest' | 'bronzechestkey' | 'goblincavekey' | 'goblinprisonkey' | 'blacksmithinghammer' | 'blacksmithingtongs' | 'copper' | 'tin' | 'iron' | 'bridge' | 'hatchet' | 'foldingsaw' | 'woolygloves' | 'woolyboots' | 'peasantclothes' | 'rangerclothes' | 'carvingknife' | 'pinebow' | 'apple' | 'wheat' | 'poplarwood' | 'pinewood' | 'sprucewood' | 'bircharrow' | 'sprucearrow' | 'stone' | 'grapes' | 'orange' | 'dungeondoor' | 'bones' | 'unlitbirchtorch' | 'litbirchtorch' | 'ratnest' | 'glowfungus' | 'silo' | 'grainmill' | 'pumpwindmill' | 'watertower' | 'packbarn' | 'packcoop' | 'packstable' | 'foxtracks' | 'foxtail' | 'rabbithutch' | 'bountyboard' | 'smallsatchel' | 'stonehouse' | 'townwall' | 'towngate' | 'marketstall' | 'fishingpeg' | 'ashwood' | 'flyfishingrod' | 'flyhook' | 'rawtrout' | 'cookedtrout' | 'cobweb' | 'webveil' | 'spideregg' | 'spidersilk' | 'wolffang';
81
+ export type NpcKind = 'seagull' | 'crab' | 'seabass' | 'beagle' | 'trader' | 'woody' | 'rabbit' | 'petrabbit' | 'forbes' | 'jobless' | 'driver' | 'duck' | 'angler' | 'wilson' | 'pig' | 'cow' | 'chicken' | 'sheep' | 'clark' | 'clarksson' | 'stablemaster' | 'ranger' | 'debbie' | 'anne' | 'wallarcher' | 'hijacker' | 'pony' | 'rat' | 'soldier' | 'captain' | 'goblin' | 'grem' | 'spineless' | 'john' | 'nicholas' | 'robin' | 'kyle' | 'banker' | 'victoria' | 'bob' | 'spider' | 'arana' | 'bandit' | 'amazon' | 'liv' | 'fox' | 'rimdel' | 'bruce' | 'wolf'
82
+ /** Takes the entry fee at the Trout Fishery gate and sells fly tackle. */
83
+ | 'fisheryguard';
82
84
  export type ChunkCoord = {
83
85
  cx: number;
84
86
  cz: number;
@@ -179,6 +181,27 @@ export type BuildingFootprint = {
179
181
  * radiusX follows the mesh half-width (walls align with the visual ends).
180
182
  * Z stays on the bracket so the south wall stays north of horse-pen gates.
181
183
  */
184
+ export type StoneHouseVariant = 'cottage' | 'house' | 'shop' | 'inn' | 'pub' | 'potion' | 'kitchen' | 'clothes' | 'bank' | 'hall';
185
+ /**
186
+ * Tile ring radius per variant, so a building covers (2r + 1) squared tiles.
187
+ *
188
+ * Every one of these went up a step: the town read as a model village at the
189
+ * old sizes next to a 4.2-high wall. The pub and the hall are 11x11, which is
190
+ * as large as the plan takes without the streets losing their shape.
191
+ */
192
+ export declare const STONE_HOUSE_RADIUS: Record<StoneHouseVariant, number>;
193
+ /** Style is `<variant>-<facing>`, e.g. `pub-n`. */
194
+ export declare function stoneHouseVariant(style: string | undefined): StoneHouseVariant;
195
+ /**
196
+ * Which way the door looks, as a world-space facing.
197
+ *
198
+ * Local +Z is the door before the model is turned, and a yaw of t maps local
199
+ * +Z to (sin t, cos t): 0 -> +Z, +90 -> +X, 180 -> -Z, -90 -> -X. The letters
200
+ * are compass directions with +X east and +Z south, so this table and the
201
+ * asset's yaw table have to agree or a building faces the wrong way and its
202
+ * doorway is cut in the wrong wall.
203
+ */
204
+ export declare function stoneHouseDoorFacing(style: string | undefined): BuildingDoorFacing;
182
205
  export declare function buildingFootprintExtents(kind: EntityKind, scale: number | undefined, style?: string): BuildingFootprint;
183
206
  /** West tack-room lean-to tiles beyond the stable's main wall ring. */
184
207
  export declare function visitStableLeanToBlockedOffsets(scale: number | undefined, visit: (dx: number, dz: number) => void): void;
@@ -191,6 +214,11 @@ export declare function boulderFootprintRadius(style: string | undefined, scale:
191
214
  export declare function blockingFootprintRadius(kind: EntityKind, style: string | undefined, scale: number | undefined): number;
192
215
  export declare function isCaveTunnelExitStyle(style: string | undefined): boolean;
193
216
  export declare function isGoblinCaveStyle(style: string | undefined): boolean;
217
+ export declare function isSpiderCaveStyle(style: string | undefined): boolean;
218
+ /** Wolf den mouth in the woods around Calverton. */
219
+ export declare function isWolfDenStyle(style: string | undefined): boolean;
220
+ /** Crawl-out hole inside a wolf den cavern. */
221
+ export declare function isWolfDenExitStyle(style: string | undefined): boolean;
194
222
  /** Tiny animal-dug hole in the woods - not the Base Camp Suspicious hole. */
195
223
  export declare function isAnimalDenStyle(style: string | undefined): boolean;
196
224
  /** Crawl-out hole inside a forest den cavern. */
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -44,7 +44,7 @@ export function playerNameError(name) {
44
44
  export const CHUNK_SIZE = 32;
45
45
  export const FARMLAND_CHUNKS_X = 8;
46
46
  export const VILLAGE_CHUNKS_X = 2;
47
- export const EASTLAND_CHUNKS_X = 14;
47
+ export const EASTLAND_CHUNKS_X = 17;
48
48
  export const PLAYABLE_CHUNKS_X = FARMLAND_CHUNKS_X + VILLAGE_CHUNKS_X + EASTLAND_CHUNKS_X;
49
49
  export const PLAYABLE_CHUNKS_Z = 3;
50
50
  export const FARMLAND_WIDTH = CHUNK_SIZE * FARMLAND_CHUNKS_X;
@@ -179,6 +179,15 @@ export function entityBlocksWalk(kind) {
179
179
  kind === 'fence' ||
180
180
  kind === 'tradingcart' ||
181
181
  kind === 'signpost' ||
182
+ kind === 'bountyboard' ||
183
+ // Calverton: the wall is solid, the market stalls are solid, and the
184
+ // houses are solid only around their wall ring (see the hollow-building
185
+ // branch of visitBlockedWalkOffsets - they are walk-in). `towngate` is
186
+ // deliberately absent: it is an arch you walk under, and the client
187
+ // predicts movement from this function, so listing it would desync.
188
+ kind === 'stonehouse' ||
189
+ kind === 'townwall' ||
190
+ kind === 'marketstall' ||
182
191
  kind === 'brokenpier' ||
183
192
  kind === 'abandonedboat' ||
184
193
  kind === 'ship' ||
@@ -213,7 +222,8 @@ export function entityBlocksWalk(kind) {
213
222
  kind === 'packbarn' ||
214
223
  kind === 'packcoop' ||
215
224
  kind === 'packstable' ||
216
- kind === 'rabbithutch');
225
+ kind === 'rabbithutch' ||
226
+ kind === 'webveil');
217
227
  }
218
228
  /** Dungeon room-gate visual states - mirrors ranch gate open/closed styling. */
219
229
  export function isDungeonDoorOpen(style) {
@@ -415,13 +425,69 @@ function buildingScaleBracketRadius(scale) {
415
425
  return 1;
416
426
  }
417
427
  /**
418
- * Tile wall-ring size for beach/farm/storage huts.
419
- * Most styles use a square from scale brackets. The farm `stable` is a long
420
- * barn whose mesh (×1.15 render scale) is wider than the scale bracket, so
421
- * radiusX follows the mesh half-width (walls align with the visual ends).
422
- * Z stays on the bracket so the south wall stays north of horse-pen gates.
428
+ * Tile ring radius per variant, so a building covers (2r + 1) squared tiles.
429
+ *
430
+ * Every one of these went up a step: the town read as a model village at the
431
+ * old sizes next to a 4.2-high wall. The pub and the hall are 11x11, which is
432
+ * as large as the plan takes without the streets losing their shape.
433
+ */
434
+ export const STONE_HOUSE_RADIUS = {
435
+ cottage: 3,
436
+ house: 4,
437
+ shop: 4,
438
+ inn: 5,
439
+ pub: 5,
440
+ potion: 4,
441
+ kitchen: 4,
442
+ clothes: 4,
443
+ bank: 4,
444
+ hall: 5,
445
+ };
446
+ const STONE_HOUSE_VARIANT_NAMES = new Set([
447
+ 'cottage',
448
+ 'house',
449
+ 'shop',
450
+ 'inn',
451
+ 'pub',
452
+ 'potion',
453
+ 'kitchen',
454
+ 'clothes',
455
+ 'bank',
456
+ 'hall',
457
+ ]);
458
+ /** Style is `<variant>-<facing>`, e.g. `pub-n`. */
459
+ export function stoneHouseVariant(style) {
460
+ const raw = style ?? '';
461
+ const dash = raw.lastIndexOf('-');
462
+ const name = dash > 0 ? raw.slice(0, dash) : raw;
463
+ return STONE_HOUSE_VARIANT_NAMES.has(name) ? name : 'house';
464
+ }
465
+ /**
466
+ * Which way the door looks, as a world-space facing.
467
+ *
468
+ * Local +Z is the door before the model is turned, and a yaw of t maps local
469
+ * +Z to (sin t, cos t): 0 -> +Z, +90 -> +X, 180 -> -Z, -90 -> -X. The letters
470
+ * are compass directions with +X east and +Z south, so this table and the
471
+ * asset's yaw table have to agree or a building faces the wrong way and its
472
+ * doorway is cut in the wrong wall.
423
473
  */
474
+ export function stoneHouseDoorFacing(style) {
475
+ const raw = style ?? '';
476
+ const dash = raw.lastIndexOf('-');
477
+ const facing = dash > 0 ? raw.slice(dash + 1) : 's';
478
+ if (facing === 'n')
479
+ return 'negZ';
480
+ if (facing === 'e')
481
+ return 'posX';
482
+ if (facing === 'w')
483
+ return 'negX';
484
+ return 'posZ';
485
+ }
424
486
  export function buildingFootprintExtents(kind, scale, style) {
487
+ if (kind === 'stonehouse') {
488
+ const r = STONE_HOUSE_RADIUS[stoneHouseVariant(style)];
489
+ return { radiusX: r, radiusZ: r };
490
+ }
425
491
  if (kind !== 'beachhut' && kind !== 'farmhut' && kind !== 'storagehut' && kind !== 'workshop') {
426
492
  return { radiusX: 0, radiusZ: 0 };
427
493
  }
@@ -568,6 +634,10 @@ const CAVE_ENTRANCE_HALF_WIDTH = 4;
568
634
  function caveEntranceFacing(style) {
569
635
  if (style === 'goblin-return-north')
570
636
  return { fx: 0, fz: -1, sx: 1, sz: 0 };
637
+ if (style === 'spider-return-south')
638
+ return { fx: 0, fz: 1, sx: 1, sz: 0 };
639
+ if (style === 'spider-burrow')
640
+ return { fx: -1, fz: 0, sx: 0, sz: 1 };
571
641
  if (isGoblinCaveStyle(style))
572
642
  return { fx: 1, fz: 0, sx: 0, sz: 1 };
573
643
  const dir = style?.includes('west')
@@ -591,6 +661,17 @@ export function isCaveTunnelExitStyle(style) {
591
661
  export function isGoblinCaveStyle(style) {
592
662
  return style === 'goblin-burrow' || style?.startsWith('goblin-return') === true;
593
663
  }
664
+ export function isSpiderCaveStyle(style) {
665
+ return style === 'spider-burrow' || style?.startsWith('spider-return') === true;
666
+ }
667
+ /** Wolf den mouth in the woods around Calverton. */
668
+ export function isWolfDenStyle(style) {
669
+ return typeof style === 'string' && style.startsWith('wolfden-') && !style.startsWith('wolfdenexit');
670
+ }
671
+ /** Crawl-out hole inside a wolf den cavern. */
672
+ export function isWolfDenExitStyle(style) {
673
+ return typeof style === 'string' && style.startsWith('wolfdenexit');
674
+ }
594
675
  /** Tiny animal-dug hole in the woods - not the Base Camp Suspicious hole. */
595
676
  export function isAnimalDenStyle(style) {
596
677
  return typeof style === 'string' && style.startsWith('den-');
@@ -601,7 +682,13 @@ export function isDenExitStyle(style) {
601
682
  }
602
683
  export function caveEntranceApproachOffset(style) {
603
684
  const { fx, fz } = caveEntranceFacing(style);
604
- const compact = isCaveTunnelExitStyle(style) || isAnimalDenStyle(style) || isDenExitStyle(style) || isGoblinCaveStyle(style);
685
+ const compact = isCaveTunnelExitStyle(style) ||
686
+ isAnimalDenStyle(style) ||
687
+ isDenExitStyle(style) ||
688
+ isGoblinCaveStyle(style) ||
689
+ isSpiderCaveStyle(style) ||
690
+ isWolfDenStyle(style) ||
691
+ isWolfDenExitStyle(style);
605
692
  const dist = compact ? 2 : CAVE_ENTRANCE_FORWARD + 1;
606
693
  return { dx: dist * fx, dz: dist * fz };
607
694
  }
@@ -625,9 +712,26 @@ export function visitCaveEntranceBlockedOffsets(style, visit) {
625
712
  }
626
713
  return;
627
714
  }
715
+ if (style === 'spider-burrow') {
716
+ // West-facing hillside: throat toward town, rock behind the door to the east.
717
+ for (let dx = -2; dx <= 4; dx++) {
718
+ for (let dz = -5; dz <= 5; dz++) {
719
+ if (dx >= 0 || Math.abs(dz) >= 2)
720
+ visit(dx, dz);
721
+ }
722
+ }
723
+ return;
724
+ }
725
+ if (style === 'spider-return-south') {
726
+ visit(0, 0);
727
+ return;
728
+ }
628
729
  const { fx, fz, sx, sz } = caveEntranceFacing(style);
629
- const den = isAnimalDenStyle(style);
630
- const compact = isCaveTunnelExitStyle(style) || den || isDenExitStyle(style);
730
+ const den = isAnimalDenStyle(style) || isWolfDenStyle(style);
731
+ const compact = isCaveTunnelExitStyle(style) ||
732
+ den ||
733
+ isDenExitStyle(style) ||
734
+ isWolfDenExitStyle(style);
631
735
  const forwardMax = compact ? 1 : CAVE_ENTRANCE_FORWARD;
632
736
  const backMax = compact ? 0 : CAVE_ENTRANCE_BACK;
633
737
  const halfW = den ? 2 : compact ? 1 : CAVE_ENTRANCE_HALF_WIDTH;