@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.
- package/dist/bounty.d.ts +66 -0
- package/dist/bounty.d.ts.map +1 -0
- package/dist/bounty.js +136 -0
- package/dist/bounty.js.map +1 -0
- package/dist/constants.d.ts +31 -3
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +114 -10
- package/dist/constants.js.map +1 -1
- package/dist/cooking.d.ts.map +1 -1
- package/dist/cooking.js +4 -0
- package/dist/cooking.js.map +1 -1
- package/dist/equipment.d.ts.map +1 -1
- package/dist/equipment.js +3 -0
- package/dist/equipment.js.map +1 -1
- package/dist/groundItems.d.ts.map +1 -1
- package/dist/groundItems.js +6 -0
- package/dist/groundItems.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/landmarks.d.ts +166 -0
- package/dist/landmarks.d.ts.map +1 -1
- package/dist/landmarks.js +308 -0
- package/dist/landmarks.js.map +1 -1
- package/dist/messages.d.ts +79 -5
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +4 -0
- package/dist/messages.js.map +1 -1
- package/dist/spiderCave.d.ts +53 -0
- package/dist/spiderCave.d.ts.map +1 -0
- package/dist/spiderCave.js +68 -0
- package/dist/spiderCave.js.map +1 -0
- package/dist/timedAccess.d.ts +62 -0
- package/dist/timedAccess.d.ts.map +1 -0
- package/dist/timedAccess.js +77 -0
- package/dist/timedAccess.js.map +1 -0
- package/dist/woodwork.d.ts +30 -0
- package/dist/woodwork.d.ts.map +1 -1
- package/dist/woodwork.js +42 -0
- package/dist/woodwork.js.map +1 -1
- package/package.json +1 -1
package/dist/bounty.d.ts
ADDED
|
@@ -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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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -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 =
|
|
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. */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -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 =
|
|
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
|
|
419
|
-
*
|
|
420
|
-
*
|
|
421
|
-
*
|
|
422
|
-
*
|
|
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) ||
|
|
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) ||
|
|
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;
|