@maka/maka-cli 5.119.0 → 5.121.0
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/bundle/typescript/package.json +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/ask.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js +31 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/attack.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.d.ts +10 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js +17 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/bypass-command.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/cast.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.d.ts +0 -7
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js +39 -3
- package/bundle/typescript/src/commands/game/sideQuest/commands/catalog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js +28 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/equipment.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/fit.d.ts +29 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/fit.js +85 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/fit.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js +4 -4
- package/bundle/typescript/src/commands/game/sideQuest/commands/haggle.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js +16 -5
- package/bundle/typescript/src/commands/game/sideQuest/commands/look.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pan.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.d.ts +34 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js +81 -12
- package/bundle/typescript/src/commands/game/sideQuest/commands/pick.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +5 -2
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.d.ts +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js +29 -1
- package/bundle/typescript/src/commands/game/sideQuest/engine-version.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js +4 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/repro-scene.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +7 -0
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/game.js +12 -7
- package/bundle/typescript/src/commands/game/sideQuest/game.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/device.d.ts +72 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js +89 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/device.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/item.d.ts +134 -45
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js +448 -104
- package/bundle/typescript/src/commands/game/sideQuest/models/item.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +7 -5
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/player.d.ts +31 -3
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js +171 -47
- package/bundle/typescript/src/commands/game/sideQuest/models/player.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.d.ts +8 -0
- package/bundle/typescript/src/commands/game/sideQuest/types/repro.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/save-file.d.ts +4 -1
- package/bundle/typescript/src/commands/game/sideQuest/types/seed/device-seed.d.ts +17 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/affordances.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/barrier-combat.d.ts +38 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/barrier-combat.js +67 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/barrier-combat.js.map +1 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.d.ts +279 -4
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js +221 -212
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog-data.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.d.ts +24 -5
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js +50 -17
- package/bundle/typescript/src/commands/game/sideQuest/utilities/catalog.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.d.ts +6 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js +28 -11
- package/bundle/typescript/src/commands/game/sideQuest/utilities/combat-exchange.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js +16 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/condition-report.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js +3 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/first-aid.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js +6 -2
- package/bundle/typescript/src/commands/game/sideQuest/utilities/persistence.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/planes.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.d.ts +19 -13
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js +77 -34
- package/bundle/typescript/src/commands/game/sideQuest/utilities/range.js.map +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.d.ts +2 -0
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js +22 -3
- package/bundle/typescript/src/commands/game/sideQuest/utilities/web-character-generator.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,11 +20,211 @@
|
|
|
20
20
|
* gear -- these strings are what the player reads, and what an NPC's
|
|
21
21
|
* swag briefing quotes.
|
|
22
22
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
import type { SkillName } from '../models/player.js';
|
|
24
|
+
import type { AugBonusKind } from '../augmentations.js';
|
|
25
|
+
export declare const CATALOG_VERSION = 13;
|
|
26
|
+
export type CatalogKind = 'gear' | 'quality' | 'spell' | 'augmentation' | 'metatype';
|
|
27
|
+
/** The skill a weapon is fired or swung with. The last four have no engine
|
|
28
|
+
* skill yet (SkillName); the engine falls back per models/player.ts. */
|
|
29
|
+
export type WeaponSkill = 'pistols' | 'automatics' | 'longarms' | 'archery' | 'blades' | 'clubs' | 'unarmed' | 'heavy-weapons' | 'throwing-weapons' | 'exotic-melee' | 'exotic-ranged';
|
|
30
|
+
/** The p.185 Range Table rows (utilities/range.ts carries the metres). */
|
|
31
|
+
export type WeaponRange = 'taser' | 'holdout' | 'light-pistol' | 'heavy-pistol' | 'machine-pistol' | 'smg' | 'assault-rifle' | 'shotgun' | 'sniper' | 'lmg' | 'mmg' | 'bow' | 'light-crossbow' | 'medium-crossbow' | 'heavy-crossbow' | 'thrown-knife' | 'grenade' | 'melee';
|
|
32
|
+
export type FireMode = 'SS' | 'SA' | 'BF' | 'FA';
|
|
33
|
+
export type AmmoFeed = 'c' | 'm' | 'cy' | 'b' | 'd' | 'ml' | 'belt';
|
|
34
|
+
/** SR5 p.417-418, p.432: hold-outs have no mounts; tasers top only;
|
|
35
|
+
* pistols, machine pistols and SMGs top + barrel; rifles, shotguns and
|
|
36
|
+
* heavy weapons all three. One accessory per mount. */
|
|
37
|
+
export type MountPoint = 'top' | 'under' | 'barrel';
|
|
38
|
+
/** A weapon's combat values, the book's table row (p.421-431, p.435). */
|
|
39
|
+
export interface ICatalogWeapon {
|
|
40
|
+
skill: WeaponSkill;
|
|
41
|
+
/** The BARE number, never the smartlink/laser parenthetical (the shooter
|
|
42
|
+
* supplies those -- Player.getAttackLimit). 'physical' is the table's own
|
|
43
|
+
* word for "use the Physical limit" (shock gloves, throwing knives). */
|
|
44
|
+
accuracy: number | 'physical';
|
|
45
|
+
/** The flat part of the DV: 8 for "8P", 2 for "(STR+2)P". */
|
|
46
|
+
dv: number;
|
|
47
|
+
/** Melee: DV = this attribute + dv. */
|
|
48
|
+
dvAttribute?: 'strength';
|
|
49
|
+
damageType: 'P' | 'S';
|
|
50
|
+
/** "(e)": electricity, Stun by canon (p.170-171). */
|
|
51
|
+
electric?: true;
|
|
52
|
+
/** Armor penetration, <= 0 for the usual, > 0 where the book prints "+". 0 for "--". */
|
|
53
|
+
ap: number;
|
|
54
|
+
reach?: number;
|
|
55
|
+
modes?: FireMode[];
|
|
56
|
+
/** Recoil compensation as the table prints it ("RC (1)" -> 1). Data until
|
|
57
|
+
* a recoil model exists. */
|
|
58
|
+
rc?: number;
|
|
59
|
+
ammo?: {
|
|
60
|
+
rounds: number;
|
|
61
|
+
feed: AmmoFeed;
|
|
62
|
+
};
|
|
63
|
+
range?: WeaponRange;
|
|
64
|
+
/** Grenades: the blast falls off this much per metre. */
|
|
65
|
+
blast?: number;
|
|
66
|
+
/** The accessory seats this gun has. Absent = none (hold-outs). */
|
|
67
|
+
mounts?: MountPoint[];
|
|
68
|
+
/** Accessories fitted at the factory, by identifier. They occupy no
|
|
69
|
+
* mount. Identifiers, not slugs: 'smartgun-internal', 'laser-sight',
|
|
70
|
+
* 'silencer', 'gas-vent-2', 'folding-stock', 'shock-pad',
|
|
71
|
+
* 'imaging-scope', 'grenade-launcher'. */
|
|
72
|
+
builtIn?: string[];
|
|
73
|
+
}
|
|
74
|
+
/** Ammunition (p.433-434): how a loaded round shifts the gun's line. */
|
|
75
|
+
export interface ICatalogAmmo {
|
|
76
|
+
dvMod: number;
|
|
77
|
+
apMod: number;
|
|
78
|
+
/** Stun rounds. Absent = the gun's own damage type. */
|
|
79
|
+
damageType?: 'S';
|
|
80
|
+
electric?: true;
|
|
81
|
+
note?: string;
|
|
82
|
+
}
|
|
83
|
+
export type ModKind = 'vision' | 'audio' | 'armor' | 'trodes' | 'weapon';
|
|
84
|
+
/** Something worn: armor (p.436-438) and/or capacity for mods (p.443-445). */
|
|
85
|
+
export interface ICatalogWearable {
|
|
86
|
+
/** The piece's own Armor rating. Only the highest worn piece counts (p.169). */
|
|
87
|
+
armor?: number;
|
|
88
|
+
/** A "+" accessory (helmet, shield): adds to the worn piece, capped by
|
|
89
|
+
* Strength (p.169, p.438). */
|
|
90
|
+
armorBonus?: number;
|
|
91
|
+
/** How much it holds (goggles 4, helmet 6). */
|
|
92
|
+
capacity?: number;
|
|
93
|
+
/** What may be fitted into it. */
|
|
94
|
+
holds?: ModKind[];
|
|
95
|
+
/** Concealability modifier for what is worn under it (lined coat -2).
|
|
96
|
+
* Data only: the engine has no concealment test yet. */
|
|
97
|
+
concealment?: number;
|
|
98
|
+
}
|
|
99
|
+
/** A Matrix device (p.438-439). Device Rating is NUMERIC. */
|
|
100
|
+
export interface ICatalogDevice {
|
|
101
|
+
deviceRating: number;
|
|
102
|
+
/** Cyberdecks: the p.227 attribute array, highest first as the book prints it. */
|
|
103
|
+
attack?: number;
|
|
104
|
+
sleaze?: number;
|
|
105
|
+
dataProcessing?: number;
|
|
106
|
+
firewall?: number;
|
|
107
|
+
/** Running-program limit (p.227). */
|
|
108
|
+
programs?: number;
|
|
109
|
+
}
|
|
110
|
+
/** A drone or vehicle (SR5 p.466, Rigger 5.0 p.126-149). A value stays a
|
|
111
|
+
* string only where the book prints two figures ("4/2" on/off-road,
|
|
112
|
+
* "1G/1W" two travel modes, "--" for an immobile frame). */
|
|
113
|
+
export interface ICatalogVehicle {
|
|
114
|
+
handling: number | string;
|
|
115
|
+
speed: number | string;
|
|
116
|
+
acceleration: number | string;
|
|
117
|
+
body: number;
|
|
118
|
+
armor: number;
|
|
119
|
+
pilot: number;
|
|
120
|
+
sensor: number;
|
|
121
|
+
seats?: number;
|
|
122
|
+
/** A weapon mount: the drone can be armed (Player.droneArmed). */
|
|
123
|
+
mount?: 'standard' | 'heavy';
|
|
124
|
+
/** Rigger 5.0 p.145: an anthroform's monitor is 8 + (Body/2). */
|
|
125
|
+
anthro?: boolean;
|
|
126
|
+
}
|
|
127
|
+
/** A modification that is FITTED into something else (fit.ts). */
|
|
128
|
+
export interface ICatalogMod {
|
|
129
|
+
kind: ModKind;
|
|
130
|
+
/** Wearable capacity it uses (vision/audio/armor/trodes, p.444-445). */
|
|
131
|
+
capacityCost?: number;
|
|
132
|
+
/** Weapon accessories: the mounts it may take (p.432). */
|
|
133
|
+
mount?: MountPoint[];
|
|
134
|
+
/** An accessory that itself holds mods (imaging scope: Capacity 3). */
|
|
135
|
+
capacity?: number;
|
|
136
|
+
/** Weapon classes it refuses: a silencer fits no revolver or shotgun (p.432). */
|
|
137
|
+
excludes?: ('shotgun' | 'revolver')[];
|
|
138
|
+
}
|
|
139
|
+
export type EffectPool = AugBonusKind | 'pan-defense' | 'matrix-soak' | 'biofeedback' | 'toxin' | 'climbing';
|
|
140
|
+
export type EffectLimit = 'physical' | 'mental' | 'social' | 'accuracy';
|
|
141
|
+
export type EffectAttribute = 'body' | 'agility' | 'reaction' | 'strength' | 'willpower' | 'logic' | 'intuition' | 'charisma' | 'edge' | 'magic' | 'resonance' | 'reach' | 'armor-bonus';
|
|
142
|
+
export type EffectMatrixAttribute = 'attack' | 'sleaze' | 'dataProcessing' | 'firewall' | 'damage';
|
|
143
|
+
/** A capability is a flag the engine asks for by key (Player.hasCapability). */
|
|
144
|
+
export type EffectCapability = 'dni' | 'smartlink' | 'smartgun' | 'low-light' | 'thermographic' | 'no-fog' | 'silenced' | 'full-body' | 'autopicker' | 'maglock-opposed';
|
|
145
|
+
/**
|
|
146
|
+
* A modifier the row grants while it applies. `value` is a NUMBER, never a
|
|
147
|
+
* string: every reader adds it, and a string would need parsing at each
|
|
148
|
+
* one and would drift in the web's seed. `scaleBy` multiplies it by the
|
|
149
|
+
* row's `ratingValue` (rating), the cast Force (force) or the hits of a
|
|
150
|
+
* sustained spell (hits). `when` defaults by kind: a wearable's effects
|
|
151
|
+
* apply worn, a weapon's held, a program's running, a data soft's stored,
|
|
152
|
+
* a mod's fitted, an augmentation's installed, a quality's held.
|
|
153
|
+
*/
|
|
154
|
+
export type ICatalogEffect = {
|
|
155
|
+
type: 'dice';
|
|
156
|
+
category: 'skills';
|
|
157
|
+
property: SkillName;
|
|
158
|
+
value: number;
|
|
159
|
+
scaleBy?: EffectScale;
|
|
160
|
+
when?: EffectWhen;
|
|
161
|
+
only?: string;
|
|
162
|
+
} | {
|
|
163
|
+
type: 'dice';
|
|
164
|
+
category: 'pools';
|
|
165
|
+
property: EffectPool;
|
|
166
|
+
value: number;
|
|
167
|
+
scaleBy?: EffectScale;
|
|
168
|
+
when?: EffectWhen;
|
|
169
|
+
only?: string;
|
|
170
|
+
} | {
|
|
171
|
+
type: 'limit';
|
|
172
|
+
category: 'limits';
|
|
173
|
+
property: EffectLimit;
|
|
174
|
+
value: number;
|
|
175
|
+
scaleBy?: EffectScale;
|
|
176
|
+
when?: EffectWhen;
|
|
177
|
+
only?: string;
|
|
178
|
+
} | {
|
|
179
|
+
type: 'attribute';
|
|
180
|
+
category: 'attributes';
|
|
181
|
+
property: EffectAttribute;
|
|
182
|
+
value: number;
|
|
183
|
+
scaleBy?: EffectScale;
|
|
184
|
+
when?: EffectWhen;
|
|
185
|
+
only?: string;
|
|
186
|
+
} | {
|
|
187
|
+
type: 'attribute';
|
|
188
|
+
category: 'matrix';
|
|
189
|
+
property: EffectMatrixAttribute;
|
|
190
|
+
value: number;
|
|
191
|
+
scaleBy?: EffectScale;
|
|
192
|
+
when?: EffectWhen;
|
|
193
|
+
only?: string;
|
|
194
|
+
} | {
|
|
195
|
+
type: 'initiative';
|
|
196
|
+
category: 'pools';
|
|
197
|
+
property: 'dice' | 'score';
|
|
198
|
+
value: number;
|
|
199
|
+
scaleBy?: EffectScale;
|
|
200
|
+
when?: EffectWhen;
|
|
201
|
+
only?: string;
|
|
202
|
+
} | {
|
|
203
|
+
type: 'flag';
|
|
204
|
+
category: 'capability';
|
|
205
|
+
property: EffectCapability;
|
|
206
|
+
value: number;
|
|
207
|
+
scaleBy?: EffectScale;
|
|
208
|
+
when?: EffectWhen;
|
|
209
|
+
only?: string;
|
|
210
|
+
};
|
|
211
|
+
export type EffectScale = 'rating' | 'force' | 'hits';
|
|
212
|
+
export type EffectWhen = 'worn' | 'held' | 'carried' | 'running' | 'stored' | 'fitted' | 'installed' | 'held-quality' | 'sustained';
|
|
213
|
+
/** Every kind shares this. */
|
|
214
|
+
export interface ICatalogBase {
|
|
215
|
+
/** Absent = 'gear'. */
|
|
216
|
+
kind?: CatalogKind;
|
|
217
|
+
/** Unique across the whole collection, every kind. Qualities, spells,
|
|
218
|
+
* augmentations and metatypes use their existing `key`. */
|
|
25
219
|
slug: string;
|
|
26
220
|
name: string;
|
|
27
221
|
description: string;
|
|
222
|
+
page?: string;
|
|
223
|
+
approx?: boolean;
|
|
224
|
+
effects?: ICatalogEffect[];
|
|
225
|
+
}
|
|
226
|
+
export interface ICatalogItem extends ICatalogBase {
|
|
227
|
+
kind?: 'gear';
|
|
28
228
|
category: string;
|
|
29
229
|
rating: string;
|
|
30
230
|
size: string;
|
|
@@ -34,9 +234,84 @@ export interface ICatalogItem {
|
|
|
34
234
|
weight: number;
|
|
35
235
|
price: number;
|
|
36
236
|
availability: number;
|
|
37
|
-
page?: string;
|
|
38
|
-
approx?: boolean;
|
|
39
237
|
legality?: 'R' | 'F';
|
|
40
238
|
stats?: string;
|
|
239
|
+
/** The SR5 Rating / Force / Capacity the NAME carries ("Medkit (Rating 3)"
|
|
240
|
+
* -> 3). What `scaleBy: 'rating'` multiplies by. */
|
|
241
|
+
ratingValue?: number;
|
|
242
|
+
weapon?: ICatalogWeapon;
|
|
243
|
+
ammo?: ICatalogAmmo;
|
|
244
|
+
wearable?: ICatalogWearable;
|
|
245
|
+
device?: ICatalogDevice;
|
|
246
|
+
vehicle?: ICatalogVehicle;
|
|
247
|
+
mod?: ICatalogMod;
|
|
248
|
+
/**
|
|
249
|
+
* WHAT "use" SHOULD SAY when the generic "Nothing special happens." would
|
|
250
|
+
* read as broken (user, 2026-09-03: a Lockpick Set at a pickable door
|
|
251
|
+
* giving that line is confusing, not a shrug). Only for gear whose NAME
|
|
252
|
+
* implies a specific action that lives at a DIFFERENT verb -- a Lockpick
|
|
253
|
+
* Set means "pick", not "use". Absent = the generic line stays; most
|
|
254
|
+
* gear needs no hint at all. Read by Item.use() (models/item.ts).
|
|
255
|
+
*/
|
|
256
|
+
useHint?: string;
|
|
257
|
+
}
|
|
258
|
+
export type Metatype = 'human' | 'elf' | 'dwarf' | 'ork' | 'troll';
|
|
259
|
+
export interface ICatalogQuality extends ICatalogBase {
|
|
260
|
+
kind: 'quality';
|
|
261
|
+
quality: {
|
|
262
|
+
polarity: 'positive' | 'negative';
|
|
263
|
+
karma: number;
|
|
264
|
+
maxRating?: number;
|
|
265
|
+
retired?: string;
|
|
266
|
+
requires?: 'awakened' | 'mundane' | 'caster-or-technomancer';
|
|
267
|
+
requiresQuality?: string;
|
|
268
|
+
requiresMetatype?: Metatype[];
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
export interface ICatalogSpell extends ICatalogBase {
|
|
272
|
+
kind: 'spell';
|
|
273
|
+
spell: {
|
|
274
|
+
category: 'Combat' | 'Detection' | 'Health' | 'Illusion' | 'Manipulation';
|
|
275
|
+
type: 'mana' | 'physical';
|
|
276
|
+
range: 'LOS' | 'LOS(A)' | 'touch';
|
|
277
|
+
duration: 'I' | 'S' | 'P';
|
|
278
|
+
drainOffset: number;
|
|
279
|
+
soak?: 'willpower' | 'body' | 'armor';
|
|
280
|
+
stun?: boolean;
|
|
281
|
+
area?: boolean;
|
|
282
|
+
touch?: boolean;
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
export interface ICatalogAugmentation extends ICatalogBase {
|
|
286
|
+
kind: 'augmentation';
|
|
287
|
+
augmentation: {
|
|
288
|
+
ware: 'cyberware' | 'bioware';
|
|
289
|
+
essence: number;
|
|
290
|
+
cost: number;
|
|
291
|
+
wakeLine: string;
|
|
292
|
+
excludes?: string[];
|
|
293
|
+
avail?: number;
|
|
294
|
+
legality?: 'R' | 'F';
|
|
295
|
+
canonCost?: number;
|
|
296
|
+
canonEssence?: number;
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
export interface ICatalogMetatype extends ICatalogBase {
|
|
300
|
+
kind: 'metatype';
|
|
301
|
+
metatype: {
|
|
302
|
+
attributes: Record<string, {
|
|
303
|
+
min: number;
|
|
304
|
+
max: number;
|
|
305
|
+
}>;
|
|
306
|
+
sprintMetersPerHit: 1 | 2;
|
|
307
|
+
lifestyleCostMult?: number;
|
|
308
|
+
};
|
|
41
309
|
}
|
|
310
|
+
export type ICatalogRow = ICatalogItem | ICatalogQuality | ICatalogSpell | ICatalogAugmentation | ICatalogMetatype;
|
|
311
|
+
/** Gear or not -- the discriminator every consumer of the gear list uses. */
|
|
312
|
+
export declare function isGearRow(r: ICatalogRow): r is ICatalogItem;
|
|
42
313
|
export declare const CATALOG_ITEMS: ICatalogItem[];
|
|
314
|
+
/** THE WHOLE SEED, every kind. Gear today; qualities, spells, augmentations
|
|
315
|
+
* and metatypes join it in v14. The loader (utilities/catalog.ts) weighs
|
|
316
|
+
* THIS against the server and the cache. */
|
|
317
|
+
export declare const CATALOG_ROWS: ICatalogRow[];
|