@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,7 +20,11 @@
|
|
|
20
20
|
* gear -- these strings are what the player reads, and what an NPC's
|
|
21
21
|
* swag briefing quotes.
|
|
22
22
|
*/
|
|
23
|
-
export const CATALOG_VERSION =
|
|
23
|
+
export const CATALOG_VERSION = 13;
|
|
24
|
+
/** Gear or not -- the discriminator every consumer of the gear list uses. */
|
|
25
|
+
export function isGearRow(r) {
|
|
26
|
+
return r.kind === undefined || r.kind === 'gear';
|
|
27
|
+
}
|
|
24
28
|
const row = (slug, name, category, price, availability, description, extra = {}) => ({
|
|
25
29
|
slug, name, category, price, availability, description,
|
|
26
30
|
rating: extra.rating ?? (price >= 5000 ? 'Rare' : price >= 500 ? 'Standard' : 'Common'),
|
|
@@ -33,70 +37,71 @@ const row = (slug, name, category, price, availability, description, extra = {})
|
|
|
33
37
|
});
|
|
34
38
|
export const CATALOG_ITEMS = [
|
|
35
39
|
// ---- Melee (p.423) ----
|
|
36
|
-
row('combat-knife', 'Combat Knife', 'MeleeWeapon', 300, 4, 'Mil-spec steel that holds an edge through anything.', { page: 'p.423', shape: 'blade', stats: 'Acc 6, DV (STR+2)P, AP -3' }),
|
|
37
|
-
row('sword', 'Sword', 'MeleeWeapon', 500, 5, 'A proper length of sharpened argument.', { page: 'p.423', shape: 'blade', size: 'Medium', weight: 1.5, legality: 'R', stats: 'Acc 6, Reach 1, DV (STR+3)P, AP -2' }),
|
|
38
|
-
row('katana', 'Katana', 'MeleeWeapon', 1000, 9, 'Folded steel and folded history. Restricted, naturally.', { page: 'p.423', shape: 'blade', size: 'Medium', weight: 1.2, rating: 'Rare', legality: 'R', stats: 'Acc 7, Reach 1, DV (STR+3)P, AP -3' }),
|
|
39
|
-
row('pole-arm', 'Pole Arm', 'MeleeWeapon', 1000, 6, 'Three meters of reach and a very old idea about crowd control.', { page: 'p.423', shape: 'polearm', size: 'Large', weight: 3, rating: 'Standard', legality: 'R', stats: 'Acc 5, Reach 3, DV (STR+3)P, AP -2' }),
|
|
40
|
-
row('club', 'Club', 'MeleeWeapon', 30, 0, 'The oldest tool in the world, still in production.', { page: 'p.423', shape: 'club', size: 'Medium', weight: 2, stats: 'Acc 4, Reach 1, DV (STR+3)P, AP --' }),
|
|
41
|
-
row('sap', 'Sap', 'MeleeWeapon', 30, 2, 'Lead shot in a leather sock. Quiet, deniable, effective.', { page: 'p.423', shape: 'sap', size: 'Tiny', weight: 0.5, texture: 'leather', stats: 'Acc 5, DV (STR+2)P, AP --' }),
|
|
42
|
-
row('stun-baton', 'Stun Baton', 'MeleeWeapon', 750, 6, 'Collapsible shock stick -- the polite end of crowd control.', { page: 'p.423', shape: 'baton', legality: 'R', stats: 'Acc 4, Reach 1, DV 9S(e), AP -5' }),
|
|
43
|
-
row('shock-gloves', 'Shock Gloves', 'MeleeWeapon', 550, 6, 'Capacitor plates across the knuckles. A crackling non-lethal argument.', { page: 'p.423', shape: 'gloves', weight: 0.5, texture: 'insulated weave', legality: 'R', stats: 'DV 8S(e), AP -5 (Unarmed Combat)' }),
|
|
44
|
-
row('monofilament-whip', 'Monofilament Whip', 'MeleeWeapon', 10000, 12, 'A thread that cuts bone like warm butter -- yours included, on a bad roll.', { page: 'p.423', shape: 'whip', size: 'Tiny', weight: 0.5, rating: 'Legendary', legality: 'F', stats: 'Acc 5 (7), Reach 2, DV 12P, AP -8 (Exotic Melee)' }),
|
|
45
|
-
row('staff', 'Staff', 'MeleeWeapon', 100, 3, 'Two meters of reach and no questions at checkpoints.', {
|
|
40
|
+
row('combat-knife', 'Combat Knife', 'MeleeWeapon', 300, 4, 'Mil-spec steel that holds an edge through anything.', { page: 'p.423', shape: 'blade', stats: 'Acc 6, DV (STR+2)P, AP -3', weapon: { skill: 'blades', accuracy: 6, dv: 2, dvAttribute: 'strength', damageType: 'P', ap: -3, range: 'melee' } }),
|
|
41
|
+
row('sword', 'Sword', 'MeleeWeapon', 500, 5, 'A proper length of sharpened argument.', { page: 'p.423', shape: 'blade', size: 'Medium', weight: 1.5, legality: 'R', stats: 'Acc 6, Reach 1, DV (STR+3)P, AP -2', weapon: { skill: 'blades', accuracy: 6, dv: 3, dvAttribute: 'strength', damageType: 'P', ap: -2, range: 'melee', reach: 1 } }),
|
|
42
|
+
row('katana', 'Katana', 'MeleeWeapon', 1000, 9, 'Folded steel and folded history. Restricted, naturally.', { page: 'p.423', shape: 'blade', size: 'Medium', weight: 1.2, rating: 'Rare', legality: 'R', stats: 'Acc 7, Reach 1, DV (STR+3)P, AP -3', weapon: { skill: 'blades', accuracy: 7, dv: 3, dvAttribute: 'strength', damageType: 'P', ap: -3, range: 'melee', reach: 1 } }),
|
|
43
|
+
row('pole-arm', 'Pole Arm', 'MeleeWeapon', 1000, 6, 'Three meters of reach and a very old idea about crowd control.', { page: 'p.423', shape: 'polearm', size: 'Large', weight: 3, rating: 'Standard', legality: 'R', stats: 'Acc 5, Reach 3, DV (STR+3)P, AP -2', weapon: { skill: 'blades', accuracy: 5, dv: 3, dvAttribute: 'strength', damageType: 'P', ap: -2, range: 'melee', reach: 3 } }),
|
|
44
|
+
row('club', 'Club', 'MeleeWeapon', 30, 0, 'The oldest tool in the world, still in production.', { page: 'p.423', shape: 'club', size: 'Medium', weight: 2, stats: 'Acc 4, Reach 1, DV (STR+3)P, AP --', weapon: { skill: 'clubs', accuracy: 4, dv: 3, dvAttribute: 'strength', damageType: 'P', ap: 0, range: 'melee', reach: 1 } }),
|
|
45
|
+
row('sap', 'Sap', 'MeleeWeapon', 30, 2, 'Lead shot in a leather sock. Quiet, deniable, effective.', { page: 'p.423', shape: 'sap', size: 'Tiny', weight: 0.5, texture: 'leather', stats: 'Acc 5, DV (STR+2)P, AP --', weapon: { skill: 'clubs', accuracy: 5, dv: 2, dvAttribute: 'strength', damageType: 'P', ap: 0, range: 'melee' } }),
|
|
46
|
+
row('stun-baton', 'Stun Baton', 'MeleeWeapon', 750, 6, 'Collapsible shock stick -- the polite end of crowd control.', { page: 'p.423', shape: 'baton', legality: 'R', stats: 'Acc 4, Reach 1, DV 9S(e), AP -5', weapon: { skill: 'clubs', accuracy: 4, dv: 9, damageType: 'S', electric: true, ap: -5, reach: 1, range: 'melee' } }),
|
|
47
|
+
row('shock-gloves', 'Shock Gloves', 'MeleeWeapon', 550, 6, 'Capacitor plates across the knuckles. A crackling non-lethal argument.', { page: 'p.423', shape: 'gloves', weight: 0.5, texture: 'insulated weave', legality: 'R', stats: 'DV 8S(e), AP -5 (Unarmed Combat)', weapon: { skill: 'unarmed', accuracy: 'physical', dv: 8, damageType: 'S', electric: true, ap: -5, range: 'melee' } }),
|
|
48
|
+
row('monofilament-whip', 'Monofilament Whip', 'MeleeWeapon', 10000, 12, 'A thread that cuts bone like warm butter -- yours included, on a bad roll.', { page: 'p.423', shape: 'whip', size: 'Tiny', weight: 0.5, rating: 'Legendary', legality: 'F', stats: 'Acc 5 (7), Reach 2, DV 12P, AP -8 (Exotic Melee)', weapon: { skill: 'exotic-melee', accuracy: 5, dv: 12, damageType: 'P', ap: -8, reach: 2, range: 'melee' } }),
|
|
49
|
+
row('staff', 'Staff', 'MeleeWeapon', 100, 3, 'Two meters of reach and no questions at checkpoints.', { page: 'p.423', shape: 'staff', size: 'Large', weight: 2, stats: 'Acc 6, Reach 2, DV (STR+3)P, AP --', weapon: { skill: 'clubs', accuracy: 6, dv: 3, dvAttribute: 'strength', damageType: 'P', ap: 0, range: 'melee', reach: 2 } }),
|
|
46
50
|
// ---- Projectile (p.424) ----
|
|
47
|
-
row('medium-crossbow', 'Medium Crossbow', 'RangedWeapon', 500, 4, 'Silent, reusable, and legal in more places than it should be.', { page: 'p.424', shape: 'crossbow', size: 'Medium', weight: 3, legality: 'R', stats: 'Acc 6, DV 7P, AP -2, 4 (m)' }),
|
|
48
|
-
row('throwing-knives', 'Throwing Knives (set)', 'MeleeWeapon', 25, 4, 'Balanced steel that solves problems across a room.', { page: 'p.424', shape: 'blades', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'DV (STR+1)P, AP -1 (Throwing Weapons)' }),
|
|
51
|
+
row('medium-crossbow', 'Medium Crossbow', 'RangedWeapon', 500, 4, 'Silent, reusable, and legal in more places than it should be.', { page: 'p.424', shape: 'crossbow', size: 'Medium', weight: 3, legality: 'R', stats: 'Acc 6, DV 7P, AP -2, 4 (m)', weapon: { skill: 'archery', accuracy: 6, dv: 7, damageType: 'P', ap: -2, ammo: { rounds: 4, feed: 'm' }, range: 'medium-crossbow' } }),
|
|
52
|
+
row('throwing-knives', 'Throwing Knives (set)', 'MeleeWeapon', 25, 4, 'Balanced steel that solves problems across a room.', { page: 'p.424', shape: 'blades', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'DV (STR+1)P, AP -1 (Throwing Weapons)', weapon: { skill: 'throwing-weapons', accuracy: 'physical', dv: 1, dvAttribute: 'strength', damageType: 'P', ap: -1, range: 'thrown-knife' } }),
|
|
49
53
|
// ---- Tasers & hold-outs (p.426) ----
|
|
50
|
-
row('yamaha-pulsar', 'Yamaha Pulsar', 'RangedWeapon', 180, 0, 'A taser that ends arguments without ending anyone.', { page: 'p.426', shape: 'taser', weight: 0.7, stats: 'Acc 5, DV 7S(e), AP -5, SA, 4 (m)' }),
|
|
51
|
-
row('walther-palm-pistol', 'Walther Palm Pistol', 'RangedWeapon', 180, 4, 'Two shots that fit in a closed fist. Ask no more of it.', { page: 'p.426', shape: 'holdout', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'Acc 4, DV 7P, AP --, SS/BF, 2 (b)' }),
|
|
54
|
+
row('yamaha-pulsar', 'Yamaha Pulsar', 'RangedWeapon', 180, 0, 'A taser that ends arguments without ending anyone.', { page: 'p.426', shape: 'taser', weight: 0.7, stats: 'Acc 5, DV 7S(e), AP -5, SA, 4 (m)', weapon: { skill: 'pistols', accuracy: 5, dv: 7, damageType: 'S', electric: true, ap: -5, modes: ['SA'], ammo: { rounds: 4, feed: 'm' }, range: 'taser', mounts: ['top'] } }),
|
|
55
|
+
row('walther-palm-pistol', 'Walther Palm Pistol', 'RangedWeapon', 180, 4, 'Two shots that fit in a closed fist. Ask no more of it.', { page: 'p.426', shape: 'holdout', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'Acc 4, DV 7P, AP --, SS/BF, 2 (b)', weapon: { skill: 'pistols', accuracy: 4, dv: 7, damageType: 'P', ap: 0, modes: ['SS', 'BF'], ammo: { rounds: 2, feed: 'b' }, range: 'holdout' } }),
|
|
52
56
|
// ---- Sidearms & long guns (p.426-p.430) ----
|
|
53
|
-
row('ares-light-fire-70', 'Ares Light Fire 70', 'RangedWeapon', 200, 3, 'The quiet one: a light pistol built around the silencer everyone bolts onto it.', { page: 'p.426', shape: 'pistol', legality: 'R', stats: 'Acc 7, DV 6P, AP --, SA, 16 (c)' }),
|
|
54
|
-
row('beretta-201t', 'Beretta 201T', 'RangedWeapon', 210, 7, 'A burst-capable light pistol with a folding trigger and a temper.', { page: 'p.426', shape: 'pistol', legality: 'R', stats: 'Acc 6, DV 6P, AP --, SA/BF, RC (1), 21 (c)' }),
|
|
55
|
-
row('colt-america-l36', 'Colt America L36', 'RangedWeapon', 320, 4, 'A light pistol as common as rain and twice as honest.', { page: 'p.426', shape: 'pistol', legality: 'R', stats: 'Acc 7, DV 7P, AP --, SA, 11 (c)' }),
|
|
56
|
-
row('taurus-omni-6', 'Taurus Omni-6', 'RangedWeapon', 300, 3, 'A revolver that swaps cylinders: light rounds or heavy, your night, your call.', { page: 'p.426', shape: 'revolver', weight: 1.2, legality: 'R', stats: 'Acc 5 (6), DV 6P/7P, AP 0/-1, SA/SS, 6 (cy)' }),
|
|
57
|
-
row('ares-predator-v', 'Ares Predator V', 'RangedWeapon', 725, 5, 'THE heavy pistol. Smartgun system built in, reputation included.', { page: 'p.426', shape: 'pistol', weight: 1.2, legality: 'R', stats: 'Acc 5 (7), DV 8P, AP -1, SA, 15 (c)' }),
|
|
58
|
-
row('browning-ultra-power', 'Browning Ultra-Power', 'RangedWeapon', 640, 4, 'A working professional\'s heavy pistol, with an integral laser sight.', { page: 'p.426', shape: 'pistol', weight: 1.2, legality: 'R', stats: 'Acc 5 (6), DV 8P, AP -1, SA, 10 (c)' }),
|
|
59
|
-
row('ruger-super-warhawk', 'Ruger Super Warhawk', 'RangedWeapon', 400, 4, 'A revolver with opinions. Loud ones.', { page: 'p.426', shape: 'revolver', weight: 1.4, legality: 'R', stats: 'Acc 5, DV 9P, AP -2, SS, 6 (cy)' }),
|
|
60
|
-
row('remington-roomsweeper', 'Remington Roomsweeper', 'RangedWeapon', 250, 6, 'A heavy pistol that thinks it is a shotgun. It is not wrong.', { page: 'p.426', shape: 'pistol', weight: 1.5, legality: 'R', stats: 'Acc 4, DV 7P, AP -1, SA, 8 (m)' }),
|
|
61
|
-
row('ceska-black-scorpion', 'Ceska Black Scorpion', 'RangedWeapon', 270, 6, 'A machine pistol with a folding stock and no manners at all.', { page: 'p.427', shape: 'machine pistol', weight: 1.4, legality: 'R', stats: 'Acc 5, DV 6P, AP --, SA/BF, RC (1), 35 (c)' }),
|
|
62
|
-
row('uzi-iv', 'Uzi IV', 'RangedWeapon', 450, 4, 'An old name that still writes checks in three-round bursts.', { page: 'p.427', shape: 'smg', size: 'Medium', weight: 2.5, legality: 'R', stats: 'Acc 4 (5), DV 7P, AP --, BF, RC (1), 24 (c)' }),
|
|
63
|
-
row('ingram-smartgun-x', 'Ingram Smartgun X', 'RangedWeapon', 800, 6, 'The runner\'s SMG: smartlink, gas vent, and a silencer already fitted.', { page: 'p.427', shape: 'smg', size: 'Medium', weight: 2.5, legality: 'R', stats: 'Acc 4 (6), DV 8P, AP --, BF/FA, RC 2, 32 (c)' }),
|
|
64
|
-
row('fn-p93-praetor', 'FN P93 Praetor', 'RangedWeapon', 900, 11, 'A bullpup SMG built for corp security. Forbidden, and it shows.', { page: 'p.427', shape: 'smg', size: 'Medium', weight: 3, legality: 'F', stats: 'Acc 6, DV 8P, AP --, SA/BF/FA, RC 1 (2), 50 (c)' }),
|
|
65
|
-
row('ak-97', 'AK-97', 'RangedWeapon', 950, 4, 'A century of design maturity: it always, always fires.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4, legality: 'R', stats: 'Acc 5, DV 10P, AP -2, SA/BF/FA, 38 (c)' }),
|
|
66
|
-
row('colt-m23', 'Colt M23', 'RangedWeapon', 550, 4, 'Cheap, mass-produced, no frills -- the gangbanger\'s rifle and the gunsmith\'s canvas.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4, legality: 'R', stats: 'Acc 4, DV 9P, AP -2, SA/BF/FA, 40 (c)' }),
|
|
67
|
-
row('fn-har', 'FN HAR', 'RangedWeapon', 1500, 8, 'Corporate threat-response hardware: laser sight, gas-vent 2, no apologies.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.2, rating: 'Standard', legality: 'R', stats: 'Acc 5 (6), DV 10P, AP -2, SA/BF/FA, RC 2, 35 (c)' }),
|
|
68
|
-
row('ares-alpha', 'Ares Alpha', 'RangedWeapon', 2650, 11, 'The assault rifle with the grenade launcher. Forbidden, and worth it.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.5, rating: 'MilitaryGrade', legality: 'F', stats: 'Acc 5 (7), DV 11P, AP -2, SA/BF/FA, RC 2, 42 (c) + grenade launcher' }),
|
|
69
|
-
row('yamaha-raiden', 'Yamaha Raiden', 'RangedWeapon', 2600, 14, 'Electronic firing, state of the art, and utterly illegal to be caught with.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.5, rating: 'MilitaryGrade', legality: 'F', stats: 'Acc 6 (8), DV 11P, AP -2, BF/FA, RC 1, 60 (c)' }),
|
|
70
|
-
row('ruger-100', 'Ruger 100', 'RangedWeapon', 1300, 4, 'A hunting rifle that does not care what you are hunting.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.5, rating: 'Standard', legality: 'R', stats: 'Acc 6, DV 11P, AP -3, SA, RC (1), 8 (m)' }),
|
|
71
|
-
row('ares-desert-strike', 'Ares Desert Strike', 'RangedWeapon', 17500, 10, 'A sniper rifle built to work after a week in the sand. Forbidden everywhere.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 6, rating: 'Legendary', legality: 'F', stats: 'Acc 7, DV 13P, AP -4, SA, RC (1), 14 (c)' }),
|
|
72
|
-
row('ranger-arms-sm-5', 'Ranger Arms SM-5', 'RangedWeapon', 28000, 16, 'The assassin\'s rifle: silenced, scoped, and it breaks down into a briefcase.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 6, rating: 'Legendary', legality: 'F', stats: 'Acc 8, DV 14P, AP -5, SA, RC (1), 15 (c)' }),
|
|
73
|
-
row('defiance-t-250', 'Defiance T-250', 'RangedWeapon', 450, 4, 'A pump shotgun with all the subtlety the name implies.', { page: 'p.429', shape: 'shotgun', size: 'Large', weight: 3.5, legality: 'R', stats: 'Acc 4, DV 10P, AP -1, SS/SA, 5 (m)' }),
|
|
74
|
-
row('enfield-as-7', 'Enfield AS-7', 'RangedWeapon', 1100, 12, 'A military assault shotgun. Universally feared, for excellent reasons.', { page: 'p.429', shape: 'shotgun', size: 'Large', weight: 4.5, rating: 'Standard', legality: 'F', stats: 'Acc 4 (5), DV 13P, AP -1, SA/BF, 10 (c) or 24 (d)' }),
|
|
75
|
-
row('stoner-ares-m202', 'Stoner-Ares M202', 'RangedWeapon', 7000, 12, 'A medium machine gun. If you are buying this, the plan already failed.', { page: 'p.430', shape: 'machine gun', size: 'Large', weight: 9, rating: 'MilitaryGrade', legality: 'F', stats: 'Acc 5, DV 10P, AP -3, FA, 50 (c) or 100 (belt)' }),
|
|
57
|
+
row('ares-light-fire-70', 'Ares Light Fire 70', 'RangedWeapon', 200, 3, 'The quiet one: a light pistol built around the silencer everyone bolts onto it.', { page: 'p.426', shape: 'pistol', legality: 'R', stats: 'Acc 7, DV 6P, AP --, SA, 16 (c)', weapon: { skill: 'pistols', accuracy: 7, dv: 6, damageType: 'P', ap: 0, modes: ['SA'], ammo: { rounds: 16, feed: 'c' }, range: 'light-pistol', mounts: ['top', 'barrel'] } }),
|
|
58
|
+
row('beretta-201t', 'Beretta 201T', 'RangedWeapon', 210, 7, 'A burst-capable light pistol with a folding trigger and a temper.', { page: 'p.426', shape: 'pistol', legality: 'R', stats: 'Acc 6, DV 6P, AP --, SA/BF, RC (1), 21 (c)', weapon: { skill: 'pistols', accuracy: 6, dv: 6, damageType: 'P', ap: 0, modes: ['SA', 'BF'], ammo: { rounds: 21, feed: 'c' }, range: 'light-pistol', mounts: ['top', 'barrel'], rc: 1, builtIn: ['folding-stock', 'laser-sight'] } }),
|
|
59
|
+
row('colt-america-l36', 'Colt America L36', 'RangedWeapon', 320, 4, 'A light pistol as common as rain and twice as honest.', { page: 'p.426', shape: 'pistol', legality: 'R', stats: 'Acc 7, DV 7P, AP --, SA, 11 (c)', weapon: { skill: 'pistols', accuracy: 7, dv: 7, damageType: 'P', ap: 0, modes: ['SA'], ammo: { rounds: 11, feed: 'c' }, range: 'light-pistol', mounts: ['top', 'barrel'] } }),
|
|
60
|
+
row('taurus-omni-6', 'Taurus Omni-6', 'RangedWeapon', 300, 3, 'A revolver that swaps cylinders: light rounds or heavy, your night, your call.', { page: 'p.426', shape: 'revolver', weight: 1.2, legality: 'R', stats: 'Acc 5 (6), DV 6P/7P, AP 0/-1, SA/SS, 6 (cy)', weapon: { skill: 'pistols', accuracy: 5, dv: 7, damageType: 'P', ap: -1, modes: ['SA', 'SS'], ammo: { rounds: 6, feed: 'cy' }, range: 'heavy-pistol', mounts: ['top', 'barrel'], builtIn: ['laser-sight'] } }),
|
|
61
|
+
row('ares-predator-v', 'Ares Predator V', 'RangedWeapon', 725, 5, 'THE heavy pistol. Smartgun system built in, reputation included.', { page: 'p.426', shape: 'pistol', weight: 1.2, legality: 'R', stats: 'Acc 5 (7), DV 8P, AP -1, SA, 15 (c)', weapon: { skill: 'pistols', accuracy: 5, dv: 8, damageType: 'P', ap: -1, modes: ['SA'], ammo: { rounds: 15, feed: 'c' }, range: 'heavy-pistol', mounts: ['top', 'barrel'], builtIn: ['smartgun-internal'] } }),
|
|
62
|
+
row('browning-ultra-power', 'Browning Ultra-Power', 'RangedWeapon', 640, 4, 'A working professional\'s heavy pistol, with an integral laser sight.', { page: 'p.426', shape: 'pistol', weight: 1.2, legality: 'R', stats: 'Acc 5 (6), DV 8P, AP -1, SA, 10 (c)', weapon: { skill: 'pistols', accuracy: 5, dv: 8, damageType: 'P', ap: -1, modes: ['SA'], ammo: { rounds: 10, feed: 'c' }, range: 'heavy-pistol', mounts: ['top', 'barrel'], builtIn: ['laser-sight'] } }),
|
|
63
|
+
row('ruger-super-warhawk', 'Ruger Super Warhawk', 'RangedWeapon', 400, 4, 'A revolver with opinions. Loud ones.', { page: 'p.426', shape: 'revolver', weight: 1.4, legality: 'R', stats: 'Acc 5, DV 9P, AP -2, SS, 6 (cy)', weapon: { skill: 'pistols', accuracy: 5, dv: 9, damageType: 'P', ap: -2, modes: ['SS'], ammo: { rounds: 6, feed: 'cy' }, range: 'heavy-pistol', mounts: ['top', 'barrel'] } }),
|
|
64
|
+
row('remington-roomsweeper', 'Remington Roomsweeper', 'RangedWeapon', 250, 6, 'A heavy pistol that thinks it is a shotgun. It is not wrong.', { page: 'p.426', shape: 'pistol', weight: 1.5, legality: 'R', stats: 'Acc 4, DV 7P, AP -1, SA, 8 (m)', weapon: { skill: 'pistols', accuracy: 4, dv: 7, damageType: 'P', ap: -1, modes: ['SA'], ammo: { rounds: 8, feed: 'm' }, range: 'heavy-pistol', mounts: ['top', 'barrel'] } }),
|
|
65
|
+
row('ceska-black-scorpion', 'Ceska Black Scorpion', 'RangedWeapon', 270, 6, 'A machine pistol with a folding stock and no manners at all.', { page: 'p.427', shape: 'machine pistol', weight: 1.4, legality: 'R', stats: 'Acc 5, DV 6P, AP --, SA/BF, RC (1), 35 (c)', weapon: { skill: 'automatics', accuracy: 5, dv: 6, damageType: 'P', ap: 0, modes: ['SA', 'BF'], ammo: { rounds: 35, feed: 'c' }, range: 'machine-pistol', mounts: ['top', 'barrel'], rc: 1, builtIn: ['folding-stock'] } }),
|
|
66
|
+
row('uzi-iv', 'Uzi IV', 'RangedWeapon', 450, 4, 'An old name that still writes checks in three-round bursts.', { page: 'p.427', shape: 'smg', size: 'Medium', weight: 2.5, legality: 'R', stats: 'Acc 4 (5), DV 7P, AP --, BF, RC (1), 24 (c)', weapon: { skill: 'automatics', accuracy: 4, dv: 7, damageType: 'P', ap: 0, modes: ['BF'], ammo: { rounds: 24, feed: 'c' }, range: 'smg', mounts: ['top', 'barrel'], rc: 1, builtIn: ['folding-stock', 'laser-sight'] } }),
|
|
67
|
+
row('ingram-smartgun-x', 'Ingram Smartgun X', 'RangedWeapon', 800, 6, 'The runner\'s SMG: smartlink, gas vent, and a silencer already fitted.', { page: 'p.427', shape: 'smg', size: 'Medium', weight: 2.5, legality: 'R', stats: 'Acc 4 (6), DV 8P, AP --, BF/FA, RC 2, 32 (c)', weapon: { skill: 'automatics', accuracy: 4, dv: 8, damageType: 'P', ap: 0, modes: ['BF', 'FA'], ammo: { rounds: 32, feed: 'c' }, range: 'smg', mounts: ['top', 'barrel'], rc: 2, builtIn: ['gas-vent-2', 'smartgun-internal', 'silencer'] } }),
|
|
68
|
+
row('fn-p93-praetor', 'FN P93 Praetor', 'RangedWeapon', 900, 11, 'A bullpup SMG built for corp security. Forbidden, and it shows.', { page: 'p.427', shape: 'smg', size: 'Medium', weight: 3, legality: 'F', stats: 'Acc 6, DV 8P, AP --, SA/BF/FA, RC 1 (2), 50 (c)', weapon: { skill: 'automatics', accuracy: 6, dv: 8, damageType: 'P', ap: 0, modes: ['SA', 'BF', 'FA'], ammo: { rounds: 50, feed: 'c' }, range: 'smg', mounts: ['top', 'barrel'], rc: 1, builtIn: ['folding-stock', 'smartgun-internal', 'silencer'] } }),
|
|
69
|
+
row('ak-97', 'AK-97', 'RangedWeapon', 950, 4, 'A century of design maturity: it always, always fires.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4, legality: 'R', stats: 'Acc 5, DV 10P, AP -2, SA/BF/FA, 38 (c)', weapon: { skill: 'automatics', accuracy: 5, dv: 10, damageType: 'P', ap: -2, modes: ['SA', 'BF', 'FA'], ammo: { rounds: 38, feed: 'c' }, range: 'assault-rifle', mounts: ['top', 'under', 'barrel'] } }),
|
|
70
|
+
row('colt-m23', 'Colt M23', 'RangedWeapon', 550, 4, 'Cheap, mass-produced, no frills -- the gangbanger\'s rifle and the gunsmith\'s canvas.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4, legality: 'R', stats: 'Acc 4, DV 9P, AP -2, SA/BF/FA, 40 (c)', weapon: { skill: 'automatics', accuracy: 4, dv: 9, damageType: 'P', ap: -2, modes: ['SA', 'BF', 'FA'], ammo: { rounds: 40, feed: 'c' }, range: 'assault-rifle', mounts: ['top', 'under', 'barrel'] } }),
|
|
71
|
+
row('fn-har', 'FN HAR', 'RangedWeapon', 1500, 8, 'Corporate threat-response hardware: laser sight, gas-vent 2, no apologies.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.2, rating: 'Standard', legality: 'R', stats: 'Acc 5 (6), DV 10P, AP -2, SA/BF/FA, RC 2, 35 (c)', weapon: { skill: 'automatics', accuracy: 5, dv: 10, damageType: 'P', ap: -2, modes: ['SA', 'BF', 'FA'], ammo: { rounds: 35, feed: 'c' }, range: 'assault-rifle', mounts: ['top', 'under', 'barrel'], rc: 2, builtIn: ['laser-sight', 'gas-vent-2'] } }),
|
|
72
|
+
row('ares-alpha', 'Ares Alpha', 'RangedWeapon', 2650, 11, 'The assault rifle with the grenade launcher. Forbidden, and worth it.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.5, rating: 'MilitaryGrade', legality: 'F', stats: 'Acc 5 (7), DV 11P, AP -2, SA/BF/FA, RC 2, 42 (c) + grenade launcher', weapon: { skill: 'automatics', accuracy: 5, dv: 11, damageType: 'P', ap: -2, modes: ['SA', 'BF', 'FA'], ammo: { rounds: 42, feed: 'c' }, range: 'assault-rifle', mounts: ['top', 'under', 'barrel'], rc: 2, builtIn: ['smartgun-internal', 'grenade-launcher'] } }),
|
|
73
|
+
row('yamaha-raiden', 'Yamaha Raiden', 'RangedWeapon', 2600, 14, 'Electronic firing, state of the art, and utterly illegal to be caught with.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.5, rating: 'MilitaryGrade', legality: 'F', stats: 'Acc 6 (8), DV 11P, AP -2, BF/FA, RC 1, 60 (c)', weapon: { skill: 'automatics', accuracy: 6, dv: 11, damageType: 'P', ap: -2, modes: ['BF', 'FA'], ammo: { rounds: 60, feed: 'c' }, range: 'assault-rifle', mounts: ['top', 'under', 'barrel'], rc: 1, builtIn: ['silencer', 'smartgun-internal'] } }),
|
|
74
|
+
row('ruger-100', 'Ruger 100', 'RangedWeapon', 1300, 4, 'A hunting rifle that does not care what you are hunting.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 4.5, rating: 'Standard', legality: 'R', stats: 'Acc 6, DV 11P, AP -3, SA, RC (1), 8 (m)', weapon: { skill: 'longarms', accuracy: 6, dv: 11, damageType: 'P', ap: -3, modes: ['SA'], ammo: { rounds: 8, feed: 'm' }, range: 'sniper', mounts: ['top', 'under', 'barrel'], rc: 1, builtIn: ['imaging-scope', 'shock-pad'] } }),
|
|
75
|
+
row('ares-desert-strike', 'Ares Desert Strike', 'RangedWeapon', 17500, 10, 'A sniper rifle built to work after a week in the sand. Forbidden everywhere.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 6, rating: 'Legendary', legality: 'F', stats: 'Acc 7, DV 13P, AP -4, SA, RC (1), 14 (c)', weapon: { skill: 'longarms', accuracy: 7, dv: 13, damageType: 'P', ap: -4, modes: ['SA'], ammo: { rounds: 14, feed: 'c' }, range: 'sniper', mounts: ['top', 'under', 'barrel'], rc: 1, builtIn: ['shock-pad', 'imaging-scope'] } }),
|
|
76
|
+
row('ranger-arms-sm-5', 'Ranger Arms SM-5', 'RangedWeapon', 28000, 16, 'The assassin\'s rifle: silenced, scoped, and it breaks down into a briefcase.', { page: 'p.428', shape: 'rifle', size: 'Large', weight: 6, rating: 'Legendary', legality: 'F', stats: 'Acc 8, DV 14P, AP -5, SA, RC (1), 15 (c)', weapon: { skill: 'longarms', accuracy: 8, dv: 14, damageType: 'P', ap: -5, modes: ['SA'], ammo: { rounds: 15, feed: 'c' }, range: 'sniper', mounts: ['top', 'under', 'barrel'], rc: 1, builtIn: ['silencer', 'imaging-scope', 'shock-pad'] } }),
|
|
77
|
+
row('defiance-t-250', 'Defiance T-250', 'RangedWeapon', 450, 4, 'A pump shotgun with all the subtlety the name implies.', { page: 'p.429', shape: 'shotgun', size: 'Large', weight: 3.5, legality: 'R', stats: 'Acc 4, DV 10P, AP -1, SS/SA, 5 (m)', weapon: { skill: 'longarms', accuracy: 4, dv: 10, damageType: 'P', ap: -1, modes: ['SS', 'SA'], ammo: { rounds: 5, feed: 'm' }, range: 'shotgun', mounts: ['top', 'under', 'barrel'] } }),
|
|
78
|
+
row('enfield-as-7', 'Enfield AS-7', 'RangedWeapon', 1100, 12, 'A military assault shotgun. Universally feared, for excellent reasons.', { page: 'p.429', shape: 'shotgun', size: 'Large', weight: 4.5, rating: 'Standard', legality: 'F', stats: 'Acc 4 (5), DV 13P, AP -1, SA/BF, 10 (c) or 24 (d)', weapon: { skill: 'longarms', accuracy: 4, dv: 13, damageType: 'P', ap: -1, modes: ['SA', 'BF'], ammo: { rounds: 10, feed: 'c' }, range: 'shotgun', mounts: ['top', 'under', 'barrel'], builtIn: ['laser-sight'] } }),
|
|
79
|
+
row('stoner-ares-m202', 'Stoner-Ares M202', 'RangedWeapon', 7000, 12, 'A medium machine gun. If you are buying this, the plan already failed.', { page: 'p.430', shape: 'machine gun', size: 'Large', weight: 9, rating: 'MilitaryGrade', legality: 'F', stats: 'Acc 5, DV 10P, AP -3, FA, 50 (c) or 100 (belt)', weapon: { skill: 'heavy-weapons', accuracy: 5, dv: 10, damageType: 'P', ap: -3, modes: ['FA'], ammo: { rounds: 50, feed: 'c' }, range: 'mmg', mounts: ['top', 'under', 'barrel'] } }),
|
|
76
80
|
// ---- Firearm accessories (p.432) ----
|
|
77
|
-
row('silencer', 'Silencer/Suppressor', 'Electronics', 500, 9, 'The difference between a gunshot and a rumor.', { page: 'p.432', shape: 'tube', size: 'Tiny', weight: 0.4, legality: 'F', stats: 'Barrel mount' }),
|
|
78
|
-
row('
|
|
81
|
+
row('silencer', 'Silencer/Suppressor', 'Electronics', 500, 9, 'The difference between a gunshot and a rumor.', { page: 'p.432', shape: 'tube', size: 'Tiny', weight: 0.4, legality: 'F', stats: 'Barrel mount', mod: { kind: 'weapon', mount: ['barrel'], excludes: ['shotgun', 'revolver'] } }),
|
|
82
|
+
row('smartgun-external', 'Smartgun System (external)', 'Electronics', 200, 4, 'The gun\'s half of a smartgun system, bolted on: with a smartlink in your eye it tells you where the round will land.', { page: 'p.432', shape: 'module', size: 'Tiny', weight: 0.3, legality: 'R', stats: 'Top or under mount', mod: { kind: 'weapon', mount: ['top', 'under'] }, effects: [{ type: 'flag', category: 'capability', property: 'smartgun', value: 1, when: 'fitted' }] }),
|
|
83
|
+
row('laser-sight', 'Laser Sight', 'Electronics', 125, 2, 'A red dot that argues with your shaking hands.', { page: 'p.432', shape: 'sight', size: 'Tiny', weight: 0.2, stats: 'Top or under mount, +1 Accuracy', mod: { kind: 'weapon', mount: ['top', 'under'] }, effects: [{ type: 'limit', category: 'limits', property: 'accuracy', value: 1, when: 'fitted' }] }),
|
|
79
84
|
row('quick-draw-holster', 'Quick-Draw Holster', 'Electronics', 175, 4, 'Spring-loaded rig for people whose first shot has to be first.', { page: 'p.432', shape: 'holster', size: 'Tiny', weight: 0.3, texture: 'synthleather' }),
|
|
80
85
|
row('hidden-arm-slide', 'Hidden Arm Slide', 'Electronics', 350, 4, 'A sleeve rig that puts a pistol in your palm mid-handshake.', { page: 'p.432', shape: 'slide', size: 'Tiny', weight: 0.3, legality: 'R' }),
|
|
81
86
|
row('spare-clip', 'Spare Clip', 'Ammunition', 5, 4, 'Because reloading from a box is how people die.', { page: 'p.432', shape: 'clip', size: 'Tiny', weight: 0.2, color: 'gunmetal' }),
|
|
82
87
|
// ---- Ammunition, per 10 rounds (p.433) ----
|
|
83
|
-
row('regular-ammo', 'Regular Ammo (box)', 'Ammunition', 20, 2, 'Ten clean rounds, serial numbers politely absent.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, color: 'brass', texture: 'metal', legality: 'R', stats: 'DV --, AP --' }),
|
|
84
|
-
row('gel-rounds', 'Gel Rounds', 'Ammunition', 25, 2, 'Riot-control jelly slugs: they drop people who have to wake up later.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV +0S, AP +1, -2 target Physical limit vs knockdown' }),
|
|
85
|
-
row('tracer-rounds', 'Tracer Rounds', 'Ammunition', 60, 6, 'Burning tails that walk your fire onto the target -- and back to you.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV --, AP --, +1 die on FA bursts' }),
|
|
86
|
-
row('flechette-rounds', 'Flechette Rounds', 'Ammunition', 65, 6, 'A cloud of steel needles. Murder on flesh, useless on plate.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV +2, AP +5' }),
|
|
87
|
-
row('hollow-points', 'Hollow Point Rounds', 'Ammunition', 70, 4, 'Rounds that open on impact. Forbidden for the obvious reason.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'F', stats: 'DV +1, AP +2' }),
|
|
88
|
-
row('injection-darts', 'Injection Darts', 'Ammunition', 75, 4, 'Delivery system in search of a payload. Bring your own chemistry.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'Payload: one dose, injection vector' }),
|
|
89
|
-
row('stick-n-shock', 'Stick-n-Shock Rounds', 'Ammunition', 80, 6, 'Taser slugs -- for when you want them down, not gone.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV -2S(e), AP -5' }),
|
|
90
|
-
row('explosive-rounds', 'Explosive Rounds', 'Ammunition', 80, 9, 'Shaped charges in a casing. They misfire on a critical glitch. Enjoy.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'F', stats: 'DV +1, AP -1' }),
|
|
91
|
-
row('apds', 'APDS Rounds', 'Ammunition', 120, 12, 'Armor-piercing discarding sabot. Very forbidden. Very effective.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, rating: 'MilitaryGrade', legality: 'F', stats: 'DV --, AP -4' }),
|
|
88
|
+
row('regular-ammo', 'Regular Ammo (box)', 'Ammunition', 20, 2, 'Ten clean rounds, serial numbers politely absent.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, color: 'brass', texture: 'metal', legality: 'R', stats: 'DV --, AP --', ammo: { dvMod: 0, apMod: 0 } }),
|
|
89
|
+
row('gel-rounds', 'Gel Rounds', 'Ammunition', 25, 2, 'Riot-control jelly slugs: they drop people who have to wake up later.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV +0S, AP +1, -2 target Physical limit vs knockdown', ammo: { dvMod: 0, apMod: 1, damageType: 'S' } }),
|
|
90
|
+
row('tracer-rounds', 'Tracer Rounds', 'Ammunition', 60, 6, 'Burning tails that walk your fire onto the target -- and back to you.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV --, AP --, +1 die on FA bursts', ammo: { dvMod: 0, apMod: 0, note: '+1 die on FA bursts (no burst model yet)' } }),
|
|
91
|
+
row('flechette-rounds', 'Flechette Rounds', 'Ammunition', 65, 6, 'A cloud of steel needles. Murder on flesh, useless on plate.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV +2, AP +5', ammo: { dvMod: 2, apMod: 5 } }),
|
|
92
|
+
row('hollow-points', 'Hollow Point Rounds', 'Ammunition', 70, 4, 'Rounds that open on impact. Forbidden for the obvious reason.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'F', stats: 'DV +1, AP +2', ammo: { dvMod: 1, apMod: 2 } }),
|
|
93
|
+
row('injection-darts', 'Injection Darts', 'Ammunition', 75, 4, 'Delivery system in search of a payload. Bring your own chemistry.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'Payload: one dose, injection vector', ammo: { dvMod: 0, apMod: 0, note: 'delivers one dose' } }),
|
|
94
|
+
row('stick-n-shock', 'Stick-n-Shock Rounds', 'Ammunition', 80, 6, 'Taser slugs -- for when you want them down, not gone.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'DV -2S(e), AP -5', ammo: { dvMod: -2, apMod: -5, damageType: 'S', electric: true } }),
|
|
95
|
+
row('explosive-rounds', 'Explosive Rounds', 'Ammunition', 80, 9, 'Shaped charges in a casing. They misfire on a critical glitch. Enjoy.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, legality: 'F', stats: 'DV +1, AP -1', ammo: { dvMod: 1, apMod: -1 } }),
|
|
96
|
+
row('apds', 'APDS Rounds', 'Ammunition', 120, 12, 'Armor-piercing discarding sabot. Very forbidden. Very effective.', { page: 'p.433', shape: 'box', size: 'Tiny', weight: 0.5, rating: 'MilitaryGrade', legality: 'F', stats: 'DV --, AP -4', ammo: { dvMod: 0, apMod: -4 } }),
|
|
92
97
|
// ---- Grenades (p.435) ----
|
|
93
98
|
row('smoke-grenade', 'Smoke Grenade', 'Explosive', 40, 4, 'Portable weather for tactical withdrawals.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.3, legality: 'R', stats: '10m radius smoke' }),
|
|
94
99
|
row('thermal-smoke-grenade', 'Thermal Smoke Grenade', 'Explosive', 60, 6, 'Smoke that blinds thermographic eyes too. Worth the extra twenty.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.3, legality: 'R', stats: '10m radius, blocks thermographic' }),
|
|
95
|
-
row('flash-bang', 'Flash-Bang Grenade', 'Explosive', 100, 6, 'A very loud argument for leaving.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.3, legality: 'R', stats: 'DV 10S, AP -4, 10m radius' }),
|
|
100
|
+
row('flash-bang', 'Flash-Bang Grenade', 'Explosive', 100, 6, 'A very loud argument for leaving.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.3, legality: 'R', stats: 'DV 10S, AP -4, 10m radius', weapon: { skill: 'throwing-weapons', accuracy: 'physical', dv: 10, damageType: 'S', ap: -4, range: 'grenade' } }),
|
|
96
101
|
row('flash-pak', 'Flash-Pak', 'Explosive', 125, 4, 'A strobe that ruins low-light and thermo optics without hurting a soul.', { page: 'p.435', shape: 'strobe', size: 'Tiny', weight: 0.3, stats: 'Special: blinds vision enhancements' }),
|
|
97
|
-
row('frag-grenade', 'Fragmentation Grenade', 'Explosive', 100, 11, 'Steel rain in a can. Nothing subtle survives it, including you.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.4, legality: 'F', stats: 'DV 18P(f), AP +5, -1/m blast' }),
|
|
98
|
-
row('he-grenade', 'High-Explosive Grenade', 'Explosive', 100, 11, 'The one that takes the wall with it.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.4, legality: 'F', stats: 'DV 16P, AP -2, -2/m blast' }),
|
|
99
|
-
row('plastic-explosive', 'Plastic Explosive (Rating 10)', 'Explosive', 1000, 16, 'Grey putty that opens doors, vaults, and criminal careers.', { page: 'p.436', shape: 'brick', size: 'Tiny', weight: 1, rating: 'Rare', legality: 'F', stats: 'Rating 10, DV by rating' }),
|
|
102
|
+
row('frag-grenade', 'Fragmentation Grenade', 'Explosive', 100, 11, 'Steel rain in a can. Nothing subtle survives it, including you.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.4, legality: 'F', stats: 'DV 18P(f), AP +5, -1/m blast', weapon: { skill: 'throwing-weapons', accuracy: 'physical', dv: 18, damageType: 'P', ap: 5, range: 'grenade', blast: 1 } }),
|
|
103
|
+
row('he-grenade', 'High-Explosive Grenade', 'Explosive', 100, 11, 'The one that takes the wall with it.', { page: 'p.435', shape: 'grenade', size: 'Tiny', weight: 0.4, legality: 'F', stats: 'DV 16P, AP -2, -2/m blast', weapon: { skill: 'throwing-weapons', accuracy: 'physical', dv: 16, damageType: 'P', ap: -2, range: 'grenade', blast: 2 } }),
|
|
104
|
+
row('plastic-explosive', 'Plastic Explosive (Rating 10)', 'Explosive', 1000, 16, 'Grey putty that opens doors, vaults, and criminal careers.', { page: 'p.436', shape: 'brick', size: 'Tiny', weight: 1, rating: 'Rare', legality: 'F', stats: 'Rating 10, DV by rating', ratingValue: 10 }),
|
|
100
105
|
row('detonator-cap', 'Detonator Cap', 'Explosive', 75, 8, 'The small piece that makes the big piece matter.', { page: 'p.436', shape: 'cap', size: 'Tiny', weight: 0.1, legality: 'R' }),
|
|
101
106
|
// ---- Clothing (p.436) -- what fills the torso's `clothing` slot and
|
|
102
107
|
// the mundane-wear slots around it. Equipping keys on CATEGORY alone
|
|
@@ -106,8 +111,8 @@ export const CATALOG_ITEMS = [
|
|
|
106
111
|
// specific street pieces below cite p.436 and carry `approx` for the
|
|
107
112
|
// price point chosen within that range. None of them add soak: boots,
|
|
108
113
|
// gloves, and limb trim are deliberately 0 armor (getArmorValue).
|
|
109
|
-
row('street-clothing', 'Street Clothing', 'Clothing', 50, 0, 'Layers the sprawl stops looking at. The most useful thing you can wear.', { page: 'p.436', shape: 'clothing', size: 'Medium', weight: 1, color: 'faded black', texture: 'synthweave', stats: 'Armor 0' }),
|
|
110
|
-
row('synthleather-jacket', 'Synthleather Jacket', 'ArmorClothing', 200, 0, 'A jacket with enough hide in the weave to argue with a knife.', { page: 'p.436', shape: 'jacket', size: 'Medium', weight: 1.5, color: 'oxblood', texture: 'synthleather', stats: 'Armor 4' }),
|
|
114
|
+
row('street-clothing', 'Street Clothing', 'Clothing', 50, 0, 'Layers the sprawl stops looking at. The most useful thing you can wear.', { page: 'p.436', shape: 'clothing', size: 'Medium', weight: 1, color: 'faded black', texture: 'synthweave', stats: 'Armor 0', wearable: { armor: 0 } }),
|
|
115
|
+
row('synthleather-jacket', 'Synthleather Jacket', 'ArmorClothing', 200, 0, 'A jacket with enough hide in the weave to argue with a knife.', { page: 'p.436', shape: 'jacket', size: 'Medium', weight: 1.5, color: 'oxblood', texture: 'synthleather', stats: 'Armor 4', wearable: { armor: 4 } }),
|
|
111
116
|
row('electrochromic-clothing', 'Electrochromic Clothing', 'Clothing', 500, 2, 'Colour and pattern on command -- a different person leaves than the one who walked in.', { page: 'p.436', shape: 'clothing', size: 'Medium', weight: 1, color: 'whatever you tell it', rating: 'Standard', stats: 'Clothing modification, +2 avail' }),
|
|
112
117
|
row('feedback-clothing', 'Feedback Clothing', 'Clothing', 500, 8, 'Haptic weave that lets AR touch you back. Riggers and simsense junkies swear by it.', { page: 'p.436', shape: 'clothing', size: 'Medium', weight: 1, rating: 'Standard', stats: 'Clothing modification' }),
|
|
113
118
|
row('synthleather-boots', 'Synthleather Boots', 'Boots', 100, 0, 'Resoled twice, waterproof on the third try. They will outlast the job.', { page: 'p.436', approx: true, shape: 'boots', weight: 1, color: 'brown-black', texture: 'synthleather' }),
|
|
@@ -116,136 +121,136 @@ export const CATALOG_ITEMS = [
|
|
|
116
121
|
row('knit-cap', 'Knit Cap', 'Hat', 25, 0, 'Pulled low, it takes half your face out of every camera in the district.', { page: 'p.436', approx: true, shape: 'cap', size: 'Tiny', weight: 0.2, color: 'charcoal', texture: 'wool' }),
|
|
117
122
|
row('armored-pants', 'Armored Pants', 'LegArmor', 300, 4, 'Reinforced at the knee and thigh for people who take cover the hard way.', { page: 'p.436', approx: true, shape: 'pants', size: 'Medium', weight: 1.5, texture: 'ballistic weave' }),
|
|
118
123
|
row('forearm-guards', 'Forearm Guards', 'ArmArmor', 200, 4, 'Bracers under the sleeves -- what you raise when the blade is already moving.', { page: 'p.436', approx: true, shape: 'bracers', size: 'Small', weight: 1 }),
|
|
119
|
-
row('smartwatch', 'Smartwatch', 'Wristband', 200, 0, 'Wrist-worn commlink peripheral: time, vitals, and a very small screen of bad news.', { approx: true, shape: 'watch', size: 'Tiny', weight: 0.1, stats: 'Device Rating 2' }),
|
|
124
|
+
row('smartwatch', 'Smartwatch', 'Wristband', 200, 0, 'Wrist-worn commlink peripheral: time, vitals, and a very small screen of bad news.', { approx: true, shape: 'watch', size: 'Tiny', weight: 0.1, stats: 'Device Rating 2', device: { deviceRating: 2 } }),
|
|
120
125
|
// ---- Armor (p.436-p.438) ----
|
|
121
|
-
row('armor-clothing', 'Armor Clothing', 'ArmorClothing', 450, 2, 'Boardroom-passable protection.', { page: 'p.436', shape: 'clothing', size: 'Medium', weight: 2, stats: 'Armor 6' }),
|
|
122
|
-
row('armor-vest', 'Armor Vest', 'BodyArmor', 500, 4, 'Concealable ballistic weave. The difference between a bad night and a last one.', { page: 'p.437', shape: 'vest', size: 'Medium', weight: 3, stats: 'Armor 9' }),
|
|
123
|
-
row('urban-explorer', 'Urban Explorer Jumpsuit', 'ArmorClothing', 650, 8, 'Armored athletic wear for the parkour-inclined professional.', { page: 'p.436', shape: 'jumpsuit', size: 'Medium', weight: 2, stats: 'Armor 9' }),
|
|
124
|
-
row('lined-coat', 'Lined Coat', 'BodyArmor', 900, 4, 'Duster-length armor with room for everything underneath.', { page: 'p.437', shape: 'coat', size: 'Medium', weight: 3, stats: 'Armor 9, -2 Concealability for what is under it' }),
|
|
125
|
-
row('armor-jacket', 'Armor Jacket', 'BodyArmor', 1000, 2, 'The runner standard: looks like a jacket, works like a wall.', { page: 'p.436', shape: 'jacket', size: 'Medium', weight: 3, texture: 'ballistic weave', stats: 'Armor 12' }),
|
|
126
|
-
row('actioneer-business-clothes', 'Actioneer Business Clothes', 'ArmorClothing', 1500, 8, 'A power suit with a concealable holster and a lawyer\'s alibi.', { page: 'p.437', shape: 'suit', size: 'Medium', weight: 2, color: 'charcoal', rating: 'Standard', stats: 'Armor 8, concealable holster' }),
|
|
127
|
-
row('chameleon-suit', 'Chameleon Suit', 'ArmorClothing', 1700, 10, 'Ruthenium weave that drinks the light around it.', { page: 'p.436', shape: 'suit', size: 'Medium', weight: 2, color: 'shifting gray', rating: 'Rare', legality: 'R', stats: 'Armor 9, +ruthenium polymer' }),
|
|
128
|
-
row('full-body-armor', 'Full Body Armor', 'BodyArmor', 2000, 14, 'Impossible to conceal, styled to intimidate, built for heavy ops.', { page: 'p.437', shape: 'hardsuit', size: 'Large', weight: 8, rating: 'Rare', legality: 'R', stats: 'Armor 15' }),
|
|
129
|
-
row('helmet', 'Helmet', 'Helmet', 100, 0, 'A hard shell for the soft parts that matter most.', { page: 'p.437', shape: 'helmet', weight: 1, stats: 'Armor +2, Capacity 6' }),
|
|
130
|
-
row('full-helmet', 'Full Helmet', 'Helmet', 500, 0, 'Sealed faceplate. Nobody reads your expression, nobody reads your face.', { page: 'p.436', shape: 'helmet', weight: 1.5, rating: 'Standard', stats: 'Armor +3 (full body armor)' }),
|
|
131
|
-
row('ballistic-shield', 'Ballistic Shield', 'Shield', 1200, 12, 'A door you carry into rooms that need one.', { page: 'p.438', shape: 'shield', size: 'Large', weight: 7, rating: 'Rare', legality: 'R', stats: 'Armor +6' }),
|
|
126
|
+
row('armor-clothing', 'Armor Clothing', 'ArmorClothing', 450, 2, 'Boardroom-passable protection.', { page: 'p.436', shape: 'clothing', size: 'Medium', weight: 2, stats: 'Armor 6', wearable: { armor: 6 } }),
|
|
127
|
+
row('armor-vest', 'Armor Vest', 'BodyArmor', 500, 4, 'Concealable ballistic weave. The difference between a bad night and a last one.', { page: 'p.437', shape: 'vest', size: 'Medium', weight: 3, stats: 'Armor 9', wearable: { armor: 9 } }),
|
|
128
|
+
row('urban-explorer', 'Urban Explorer Jumpsuit', 'ArmorClothing', 650, 8, 'Armored athletic wear for the parkour-inclined professional.', { page: 'p.436', shape: 'jumpsuit', size: 'Medium', weight: 2, stats: 'Armor 9', wearable: { armor: 9 } }),
|
|
129
|
+
row('lined-coat', 'Lined Coat', 'BodyArmor', 900, 4, 'Duster-length armor with room for everything underneath.', { page: 'p.437', shape: 'coat', size: 'Medium', weight: 3, stats: 'Armor 9, -2 Concealability for what is under it', wearable: { armor: 9, concealment: -2 } }),
|
|
130
|
+
row('armor-jacket', 'Armor Jacket', 'BodyArmor', 1000, 2, 'The runner standard: looks like a jacket, works like a wall.', { page: 'p.436', shape: 'jacket', size: 'Medium', weight: 3, texture: 'ballistic weave', stats: 'Armor 12', wearable: { armor: 12 } }),
|
|
131
|
+
row('actioneer-business-clothes', 'Actioneer Business Clothes', 'ArmorClothing', 1500, 8, 'A power suit with a concealable holster and a lawyer\'s alibi.', { page: 'p.437', shape: 'suit', size: 'Medium', weight: 2, color: 'charcoal', rating: 'Standard', stats: 'Armor 8, concealable holster', wearable: { armor: 8 } }),
|
|
132
|
+
row('chameleon-suit', 'Chameleon Suit', 'ArmorClothing', 1700, 10, 'Ruthenium weave that drinks the light around it.', { page: 'p.436', shape: 'suit', size: 'Medium', weight: 2, color: 'shifting gray', rating: 'Rare', legality: 'R', stats: 'Armor 9, +ruthenium polymer', wearable: { armor: 9 } }),
|
|
133
|
+
row('full-body-armor', 'Full Body Armor', 'BodyArmor', 2000, 14, 'Impossible to conceal, styled to intimidate, built for heavy ops.', { page: 'p.437', shape: 'hardsuit', size: 'Large', weight: 8, rating: 'Rare', legality: 'R', stats: 'Armor 15', wearable: { armor: 15 } }),
|
|
134
|
+
row('helmet', 'Helmet', 'Helmet', 100, 0, 'A hard shell for the soft parts that matter most.', { page: 'p.437', shape: 'helmet', weight: 1, stats: 'Armor +2, Capacity 6', wearable: { armorBonus: 2, capacity: 6, holds: ['vision', 'audio', 'trodes', 'armor'] } }),
|
|
135
|
+
row('full-helmet', 'Full Helmet', 'Helmet', 500, 0, 'Sealed faceplate. Nobody reads your expression, nobody reads your face.', { page: 'p.436', shape: 'helmet', weight: 1.5, rating: 'Standard', stats: 'Armor +3 (full body armor)', wearable: { armorBonus: 3 } }),
|
|
136
|
+
row('ballistic-shield', 'Ballistic Shield', 'Shield', 1200, 12, 'A door you carry into rooms that need one.', { page: 'p.438', shape: 'shield', size: 'Large', weight: 7, rating: 'Rare', legality: 'R', stats: 'Armor +6', wearable: { armorBonus: 6 } }),
|
|
132
137
|
// ---- Commlinks (p.438) ----
|
|
133
|
-
row('meta-link', 'Meta Link', 'Commlink', 100, 2, 'The squatter special. It makes calls. Usually.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, stats: 'Device Rating 1' }),
|
|
134
|
-
row('sony-emperor', 'Sony Emperor', 'Commlink', 700, 4, 'A solid mid-shelf commlink with a name bigger than its specs.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, stats: 'Device Rating 2' }),
|
|
135
|
-
row('renraku-sensei', 'Renraku Sensei', 'Commlink', 1000, 6, 'A businessman\'s link: discreet, capable, forgettable on purpose.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, stats: 'Device Rating 3' }),
|
|
136
|
-
row('erika-elite', 'Erika Elite', 'Commlink', 2500, 8, 'The decker\'s daily driver when the deck stays home.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, rating: 'Standard', stats: 'Device Rating 4' }),
|
|
137
|
-
row('hermes-ikon', 'Hermes Ikon', 'Commlink', 3000, 10, 'Serious hardware for people whose calls matter.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.3, rating: 'Rare', stats: 'Device Rating 5' }),
|
|
138
|
-
row('transys-avalon', 'Transys Avalon', 'Commlink', 5000, 12, 'Executive-grade signal discipline in a slab of brushed ceramic.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.3, rating: 'Rare', stats: 'Device Rating 6' }),
|
|
139
|
-
row('fairlight-caliban', 'Fairlight Caliban', 'Commlink', 8000, 14, 'The commlink executives get assassinated for.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.3, rating: 'Legendary', stats: 'Device Rating 7' }),
|
|
138
|
+
row('meta-link', 'Meta Link', 'Commlink', 100, 2, 'The squatter special. It makes calls. Usually.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, stats: 'Device Rating 1', device: { deviceRating: 1 } }),
|
|
139
|
+
row('sony-emperor', 'Sony Emperor', 'Commlink', 700, 4, 'A solid mid-shelf commlink with a name bigger than its specs.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, stats: 'Device Rating 2', device: { deviceRating: 2 } }),
|
|
140
|
+
row('renraku-sensei', 'Renraku Sensei', 'Commlink', 1000, 6, 'A businessman\'s link: discreet, capable, forgettable on purpose.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, stats: 'Device Rating 3', device: { deviceRating: 3 } }),
|
|
141
|
+
row('erika-elite', 'Erika Elite', 'Commlink', 2500, 8, 'The decker\'s daily driver when the deck stays home.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.2, rating: 'Standard', stats: 'Device Rating 4', device: { deviceRating: 4 } }),
|
|
142
|
+
row('hermes-ikon', 'Hermes Ikon', 'Commlink', 3000, 10, 'Serious hardware for people whose calls matter.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.3, rating: 'Rare', stats: 'Device Rating 5', device: { deviceRating: 5 } }),
|
|
143
|
+
row('transys-avalon', 'Transys Avalon', 'Commlink', 5000, 12, 'Executive-grade signal discipline in a slab of brushed ceramic.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.3, rating: 'Rare', stats: 'Device Rating 6', device: { deviceRating: 6 } }),
|
|
144
|
+
row('fairlight-caliban', 'Fairlight Caliban', 'Commlink', 8000, 14, 'The commlink executives get assassinated for.', { page: 'p.438', shape: 'slab', size: 'Tiny', weight: 0.3, rating: 'Legendary', stats: 'Device Rating 7', device: { deviceRating: 7 } }),
|
|
140
145
|
row('sim-module', 'Sim Module (hot-sim modified)', 'Electronics', 100, 0, 'The chip that turns a commlink into a doorway. Modified, of course.', { page: 'p.438', shape: 'chip', size: 'Tiny', weight: 0.1, stats: '+100 nuyen add-on; hot sim is the illegal part' }),
|
|
141
146
|
// ---- Cyberdecks (p.439) -- the aspirational end of the catalog: a
|
|
142
147
|
// Cyber-5 costs more than a Super-Platinum DocWagon year. Rating maps
|
|
143
148
|
// the book's Device Rating onto the engine's quality tiers (deck
|
|
144
149
|
// boxes and pools ride qualityBonus).
|
|
145
|
-
row('erika-mcd-1', 'Erika MCD-1', 'Cyberdeck', 49500, 3, 'The learner\'s cyberdeck -- "entry-level" meaning a year of rent.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Common', legality: 'R', stats: 'DR 1, A/S/D/F 4 3 2 1, 1 program' }),
|
|
146
|
-
row('microdeck-summit', 'Microdeck Summit', 'Cyberdeck', 58000, 3, 'Device Rating 1: a real deck, barely. Every decker\'s first love.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Common', legality: 'R', stats: 'DR 1, A/S/D/F 4 3 3 1, 1 program' }),
|
|
147
|
-
row('microtronica-azteca-200', 'Microtronica Azteca 200', 'Cyberdeck', 110250, 6, 'Aztechnology\'s starter deck. It works. Somebody is always watching it work.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Standard', legality: 'R', stats: 'DR 2, A/S/D/F 5 4 3 2, 2 programs' }),
|
|
148
|
-
row('hermes-chariot', 'Hermes Chariot', 'Cyberdeck', 123000, 6, 'Device Rating 2: the working professional\'s ride through the grid.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Standard', legality: 'R', stats: 'DR 2, A/S/D/F 5 4 4 2, 2 programs' }),
|
|
149
|
-
row('novatech-navigator', 'Novatech Navigator', 'Cyberdeck', 205750, 9, 'A deck that finds the seams in a host and remembers them.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2.5, rating: 'Rare', legality: 'R', stats: 'DR 3, A/S/D/F 6 5 4 3, 3 programs' }),
|
|
150
|
-
row('renraku-tsurugi', 'Renraku Tsurugi', 'Cyberdeck', 214125, 9, 'Device Rating 3: a sword, as the name says -- corp-grade ice-cutting.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2.5, rating: 'Rare', legality: 'R', stats: 'DR 3, A/S/D/F 6 5 5 3, 3 programs' }),
|
|
151
|
-
row('sony-ciy-720', 'Sony CIY-720', 'Cyberdeck', 345000, 12, 'The deck you buy when the job pays in corporate secrets.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 3, rating: 'Legendary', legality: 'R', stats: 'DR 4, A/S/D/F 7 6 5 4, 4 programs' }),
|
|
152
|
-
row('shiawase-cyber-5', 'Shiawase Cyber-5', 'Cyberdeck', 549375, 15, 'Device Rating 5: the deck legends retire on. Or die holding.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 3, rating: 'Legendary', legality: 'R', stats: 'DR 5, A/S/D/F 8 7 6 5, 5 programs' }),
|
|
153
|
-
row('fairlight-excalibur', 'Fairlight Excalibur', 'Cyberdeck', 823250, 18, 'Device Rating 6. There is no rung above this one, only rumors.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 3, rating: 'Legendary', legality: 'R', stats: 'DR 6, A/S/D/F 9 8 7 6, 6 programs' }),
|
|
150
|
+
row('erika-mcd-1', 'Erika MCD-1', 'Cyberdeck', 49500, 3, 'The learner\'s cyberdeck -- "entry-level" meaning a year of rent.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Common', legality: 'R', stats: 'DR 1, A/S/D/F 4 3 2 1, 1 program', device: { deviceRating: 1, attack: 4, sleaze: 3, dataProcessing: 2, firewall: 1, programs: 1 } }),
|
|
151
|
+
row('microdeck-summit', 'Microdeck Summit', 'Cyberdeck', 58000, 3, 'Device Rating 1: a real deck, barely. Every decker\'s first love.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Common', legality: 'R', stats: 'DR 1, A/S/D/F 4 3 3 1, 1 program', device: { deviceRating: 1, attack: 4, sleaze: 3, dataProcessing: 3, firewall: 1, programs: 1 } }),
|
|
152
|
+
row('microtronica-azteca-200', 'Microtronica Azteca 200', 'Cyberdeck', 110250, 6, 'Aztechnology\'s starter deck. It works. Somebody is always watching it work.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Standard', legality: 'R', stats: 'DR 2, A/S/D/F 5 4 3 2, 2 programs', device: { deviceRating: 2, attack: 5, sleaze: 4, dataProcessing: 3, firewall: 2, programs: 2 } }),
|
|
153
|
+
row('hermes-chariot', 'Hermes Chariot', 'Cyberdeck', 123000, 6, 'Device Rating 2: the working professional\'s ride through the grid.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2, rating: 'Standard', legality: 'R', stats: 'DR 2, A/S/D/F 5 4 4 2, 2 programs', device: { deviceRating: 2, attack: 5, sleaze: 4, dataProcessing: 4, firewall: 2, programs: 2 } }),
|
|
154
|
+
row('novatech-navigator', 'Novatech Navigator', 'Cyberdeck', 205750, 9, 'A deck that finds the seams in a host and remembers them.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2.5, rating: 'Rare', legality: 'R', stats: 'DR 3, A/S/D/F 6 5 4 3, 3 programs', device: { deviceRating: 3, attack: 6, sleaze: 5, dataProcessing: 4, firewall: 3, programs: 3 } }),
|
|
155
|
+
row('renraku-tsurugi', 'Renraku Tsurugi', 'Cyberdeck', 214125, 9, 'Device Rating 3: a sword, as the name says -- corp-grade ice-cutting.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 2.5, rating: 'Rare', legality: 'R', stats: 'DR 3, A/S/D/F 6 5 5 3, 3 programs', device: { deviceRating: 3, attack: 6, sleaze: 5, dataProcessing: 5, firewall: 3, programs: 3 } }),
|
|
156
|
+
row('sony-ciy-720', 'Sony CIY-720', 'Cyberdeck', 345000, 12, 'The deck you buy when the job pays in corporate secrets.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 3, rating: 'Legendary', legality: 'R', stats: 'DR 4, A/S/D/F 7 6 5 4, 4 programs', device: { deviceRating: 4, attack: 7, sleaze: 6, dataProcessing: 5, firewall: 4, programs: 4 } }),
|
|
157
|
+
row('shiawase-cyber-5', 'Shiawase Cyber-5', 'Cyberdeck', 549375, 15, 'Device Rating 5: the deck legends retire on. Or die holding.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 3, rating: 'Legendary', legality: 'R', stats: 'DR 5, A/S/D/F 8 7 6 5, 5 programs', device: { deviceRating: 5, attack: 8, sleaze: 7, dataProcessing: 6, firewall: 5, programs: 5 } }),
|
|
158
|
+
row('fairlight-excalibur', 'Fairlight Excalibur', 'Cyberdeck', 823250, 18, 'Device Rating 6. There is no rung above this one, only rumors.', { page: 'p.439', shape: 'deck', size: 'Small', weight: 3, rating: 'Legendary', legality: 'R', stats: 'DR 6, A/S/D/F 9 8 7 6, 6 programs', device: { deviceRating: 6, attack: 9, sleaze: 8, dataProcessing: 7, firewall: 6, programs: 6 } }),
|
|
154
159
|
// ---- Deck software (p.442) -- "load <program>" runs a carried
|
|
155
160
|
// chip. Common programs are unrestricted at 80 nuyen; hacking
|
|
156
161
|
// programs are 250 nuyen at 6R; agents are rating x 2,000, avail
|
|
157
162
|
// rating x 3.
|
|
158
|
-
row('browse-program', 'Browse Program', 'Software', 80, 0, 'Purpose-built search routines: +2 dice on Matrix Search.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program' }),
|
|
159
|
-
row('toolbox-program', 'Toolbox Program', 'Software', 80, 0, 'Utility suite that keeps your persona thinking: +1 Data Processing.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program' }),
|
|
160
|
-
row('encryption-program', 'Encryption Program', 'Software', 80, 0, 'Wraps your traffic in ciphertext: +1 Firewall.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program' }),
|
|
161
|
-
row('signal-scrub-program', 'Signal Scrub Program', 'Software', 80, 0, 'Cleans your noise floor: +1 die defending your PAN.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program' }),
|
|
162
|
-
row('armor-program', 'Armor Program', 'Software', 250, 6, 'Structural integrity for your icon: +2 dice to resist Matrix damage.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program' }),
|
|
163
|
-
row('biofeedback-filter-program', 'Biofeedback Filter Program', 'Software', 250, 6, 'A firewall for your sim module: +2 dice against biofeedback and dumpshock.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program' }),
|
|
164
|
-
row('exploit-program', 'Exploit Program', 'Software', 250, 6, 'Scans targets for Firewall weaknesses: +2 Sleaze when cracking.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program' }),
|
|
165
|
-
row('sneak-program', 'Sneak Program', 'Software', 250, 6, 'Misroutes anyone hunting your icon: +2 dice defending a silent PAN.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program' }),
|
|
166
|
-
row('hammer-program', 'Hammer Program', 'Software', 250, 6, 'Brute-force payload: +2 Matrix damage on your attack programs.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program' }),
|
|
167
|
-
row('decryption-program', 'Decryption Program', 'Software', 250, 6, 'Rips ciphers apart in realtime: +2 Attack in Matrix combat.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program' }),
|
|
168
|
-
row('agent-rating-4', 'Agent Rating 4', 'Software', 8000, 12, 'Autonomous pilot program, rating 4 -- a sharper mind for your deck than the bundled dog-brain ("agent" deploys it).', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, rating: 'Rare', stats: 'Agent 4: rating x 2,000 nuyen, avail rating x 3' }),
|
|
169
|
-
row('agent-rating-6', 'Agent Rating 6', 'Software', 12000, 18, 'Top-shelf autonomous agent, rating 6 -- near-sapient, and priced like it knows.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, rating: 'Legendary', stats: 'Agent 6: rating x 2,000 nuyen, avail rating x 3' }),
|
|
163
|
+
row('browse-program', 'Browse Program', 'Software', 80, 0, 'Purpose-built search routines: +2 dice on Matrix Search.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program', effects: [{ type: 'dice', category: 'skills', property: 'computer', value: 2, when: 'running', only: 'matrix-search' }] }),
|
|
164
|
+
row('toolbox-program', 'Toolbox Program', 'Software', 80, 0, 'Utility suite that keeps your persona thinking: +1 Data Processing.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program', effects: [{ type: 'attribute', category: 'matrix', property: 'dataProcessing', value: 1, when: 'running' }] }),
|
|
165
|
+
row('encryption-program', 'Encryption Program', 'Software', 80, 0, 'Wraps your traffic in ciphertext: +1 Firewall.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program', effects: [{ type: 'attribute', category: 'matrix', property: 'firewall', value: 1, when: 'running' }] }),
|
|
166
|
+
row('signal-scrub-program', 'Signal Scrub Program', 'Software', 80, 0, 'Cleans your noise floor: +1 die defending your PAN.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'Common program', effects: [{ type: 'dice', category: 'pools', property: 'pan-defense', value: 1, when: 'running' }] }),
|
|
167
|
+
row('armor-program', 'Armor Program', 'Software', 250, 6, 'Structural integrity for your icon: +2 dice to resist Matrix damage.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program', effects: [{ type: 'dice', category: 'pools', property: 'matrix-soak', value: 2, when: 'running' }] }),
|
|
168
|
+
row('biofeedback-filter-program', 'Biofeedback Filter Program', 'Software', 250, 6, 'A firewall for your sim module: +2 dice against biofeedback and dumpshock.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program', effects: [{ type: 'dice', category: 'pools', property: 'biofeedback', value: 2, when: 'running' }] }),
|
|
169
|
+
row('exploit-program', 'Exploit Program', 'Software', 250, 6, 'Scans targets for Firewall weaknesses: +2 Sleaze when cracking.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program', effects: [{ type: 'attribute', category: 'matrix', property: 'sleaze', value: 2, when: 'running' }] }),
|
|
170
|
+
row('sneak-program', 'Sneak Program', 'Software', 250, 6, 'Misroutes anyone hunting your icon: +2 dice defending a silent PAN.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program', effects: [{ type: 'dice', category: 'pools', property: 'pan-defense', value: 2, when: 'running', only: 'silent' }] }),
|
|
171
|
+
row('hammer-program', 'Hammer Program', 'Software', 250, 6, 'Brute-force payload: +2 Matrix damage on your attack programs.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program', effects: [{ type: 'attribute', category: 'matrix', property: 'damage', value: 2, when: 'running' }] }),
|
|
172
|
+
row('decryption-program', 'Decryption Program', 'Software', 250, 6, 'Rips ciphers apart in realtime: +2 Attack in Matrix combat.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Hacking program', effects: [{ type: 'attribute', category: 'matrix', property: 'attack', value: 2, when: 'running' }] }),
|
|
173
|
+
row('agent-rating-4', 'Agent Rating 4', 'Software', 8000, 12, 'Autonomous pilot program, rating 4 -- a sharper mind for your deck than the bundled dog-brain ("agent" deploys it).', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, rating: 'Rare', stats: 'Agent 4: rating x 2,000 nuyen, avail rating x 3', ratingValue: 4 }),
|
|
174
|
+
row('agent-rating-6', 'Agent Rating 6', 'Software', 12000, 18, 'Top-shelf autonomous agent, rating 6 -- near-sapient, and priced like it knows.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, rating: 'Legendary', stats: 'Agent 6: rating x 2,000 nuyen, avail rating x 3', ratingValue: 6 }),
|
|
170
175
|
// SKILLSOFTS ARE OFF THE SHELF (2026-09-02): an Activesoft needs skillwires
|
|
171
176
|
// and a Knowsoft/Linguasoft a skilljack (p.442), and neither exists in the
|
|
172
177
|
// augmentation catalog yet -- a shop must not sell what nothing can run.
|
|
173
178
|
// Restore refunds one already bought (utilities/persistence.ts). Datasoft
|
|
174
179
|
// waits for a Knowledge test to land its Mental-limit bonus on.
|
|
175
|
-
row('mapsoft', 'Mapsoft', 'Software', 100, 4, 'Every alley, service tunnel, and dead end in the sprawl. Mostly current.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'district map, no fog' }),
|
|
176
|
-
row('shopsoft', 'Shopsoft', 'Software', 150, 4, 'Knows what a thing is worth before the fixer opens his mouth: +1 Social limit on haggle.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1 }),
|
|
177
|
-
row('autosoft-3', 'Autosoft (Rating 3)', 'Software', 1500, 6, 'Drone brains in a chip: targeting, evasion, or clearsight, pick one.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, rating: 'Standard' }),
|
|
180
|
+
row('mapsoft', 'Mapsoft', 'Software', 100, 4, 'Every alley, service tunnel, and dead end in the sprawl. Mostly current.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, stats: 'district map, no fog', effects: [{ type: 'flag', category: 'capability', property: 'no-fog', value: 1, when: 'stored' }] }),
|
|
181
|
+
row('shopsoft', 'Shopsoft', 'Software', 150, 4, 'Knows what a thing is worth before the fixer opens his mouth: +1 Social limit on haggle.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, effects: [{ type: 'limit', category: 'limits', property: 'social', value: 1, when: 'stored', only: 'haggle' }] }),
|
|
182
|
+
row('autosoft-3', 'Autosoft (Rating 3)', 'Software', 1500, 6, 'Drone brains in a chip: targeting, evasion, or clearsight, pick one.', { page: 'p.442', shape: 'chip', size: 'Tiny', weight: 0.1, rating: 'Standard', ratingValue: 3 }),
|
|
178
183
|
// ---- Comms & countermeasures (p.441) ----
|
|
179
184
|
row('microtransceiver', 'Microtransceiver', 'Electronics', 100, 2, 'Ear-canal comms for jobs where commlinks are too loud.', { page: 'p.441', shape: 'earpiece', size: 'Tiny', weight: 0.1 }),
|
|
180
|
-
row('subvocal-mic', 'Subvocal Microphone', 'Electronics', 50, 4, 'Stage-whisper at any range: -4 to anyone trying to overhear you.', { page: 'p.440', shape: 'patch', size: 'Tiny', weight: 0.1, stats: 'Device Rating 3' }),
|
|
181
|
-
row('white-noise-generator', 'White Noise Generator (Rating 6)', 'Electronics', 300, 6, 'A bubble of privacy in a city of ears.', { page: 'p.441', shape: 'puck', size: 'Tiny', weight: 0.3, stats: 'Rating 6: rating x 50 nuyen, avail rating' }),
|
|
185
|
+
row('subvocal-mic', 'Subvocal Microphone', 'Electronics', 50, 4, 'Stage-whisper at any range: -4 to anyone trying to overhear you.', { page: 'p.440', shape: 'patch', size: 'Tiny', weight: 0.1, stats: 'Device Rating 3', device: { deviceRating: 3 } }),
|
|
186
|
+
row('white-noise-generator', 'White Noise Generator (Rating 6)', 'Electronics', 300, 6, 'A bubble of privacy in a city of ears.', { page: 'p.441', shape: 'puck', size: 'Tiny', weight: 0.3, stats: 'Rating 6: rating x 50 nuyen, avail rating', ratingValue: 6 }),
|
|
182
187
|
row('data-tap', 'Data Tap', 'Electronics', 300, 6, 'Clamps a hardline and copies everything through it, quietly.', { page: 'p.441', shape: 'clamp', size: 'Tiny', weight: 0.2, legality: 'R' }),
|
|
183
188
|
row('tag-eraser', 'Tag Eraser', 'Electronics', 450, 6, 'Kills RFID at contact range: ten boxes of Matrix damage, one charge.', { page: 'p.441', shape: 'wand', size: 'Tiny', weight: 0.3, legality: 'R' }),
|
|
184
|
-
row('directional-jammer', 'Directional Jammer (Rating 6)', 'Electronics', 1200, 12, 'A cone of silence you can aim. Everything in front goes deaf.', { page: 'p.441', shape: 'horn', weight: 1, rating: 'Rare', legality: 'F', stats: 'Rating 6: rating x 200 nuyen, avail (rating x 2)F' }),
|
|
185
|
-
row('area-jammer', 'Area Jammer (Rating 6)', 'Electronics', 1200, 18, 'Kills every wireless signal in the room, yours included.', { page: 'p.441', shape: 'box', weight: 1, rating: 'Rare', legality: 'F', stats: 'Rating 6: rating x 200 nuyen, avail (rating x 3)F' }),
|
|
186
|
-
row('stealth-tags', 'Stealth RFID Tags (per 10)', 'Electronics', 10, 7, 'Tags that do not answer when the wrong people ask.', { page: 'p.440', shape: 'tags', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Device Rating 3' }),
|
|
187
|
-
row('biometric-reader', 'Biometric Reader', 'Electronics', 200, 4, 'Prints, retinas, voice, tongue -- everything but DNA.', { page: 'p.440', shape: 'pad', size: 'Tiny', weight: 0.3, stats: 'Device Rating 3' }),
|
|
188
|
-
row('trodes', 'Trodes', 'Electronics', 70, 0, 'A cheap headband doorway to VR. Everybody\'s first ride.', { page: 'p.440', shape: 'headband', size: 'Tiny', weight: 0.1, stats: 'Device Rating 3' }),
|
|
189
|
+
row('directional-jammer', 'Directional Jammer (Rating 6)', 'Electronics', 1200, 12, 'A cone of silence you can aim. Everything in front goes deaf.', { page: 'p.441', shape: 'horn', weight: 1, rating: 'Rare', legality: 'F', stats: 'Rating 6: rating x 200 nuyen, avail (rating x 2)F', ratingValue: 6 }),
|
|
190
|
+
row('area-jammer', 'Area Jammer (Rating 6)', 'Electronics', 1200, 18, 'Kills every wireless signal in the room, yours included.', { page: 'p.441', shape: 'box', weight: 1, rating: 'Rare', legality: 'F', stats: 'Rating 6: rating x 200 nuyen, avail (rating x 3)F', ratingValue: 6 }),
|
|
191
|
+
row('stealth-tags', 'Stealth RFID Tags (per 10)', 'Electronics', 10, 7, 'Tags that do not answer when the wrong people ask.', { page: 'p.440', shape: 'tags', size: 'Tiny', weight: 0.1, legality: 'R', stats: 'Device Rating 3', device: { deviceRating: 3 } }),
|
|
192
|
+
row('biometric-reader', 'Biometric Reader', 'Electronics', 200, 4, 'Prints, retinas, voice, tongue -- everything but DNA.', { page: 'p.440', shape: 'pad', size: 'Tiny', weight: 0.3, stats: 'Device Rating 3', device: { deviceRating: 3 } }),
|
|
193
|
+
row('trodes', 'Trodes', 'Electronics', 70, 0, 'A cheap headband doorway to VR. Everybody\'s first ride.', { page: 'p.440', shape: 'headband', size: 'Tiny', weight: 0.1, stats: 'Device Rating 3', device: { deviceRating: 3 }, effects: [{ type: 'flag', category: 'capability', property: 'dni', value: 1, when: 'worn' }] }),
|
|
189
194
|
// ---- Optics & audio (p.444-445) ----
|
|
190
|
-
row('goggles', 'Goggles (Capacity 4)', 'Glasses', 200, 0, 'Four slots of whatever you need your eyes to do tonight.', { page: 'p.444', shape: 'goggles', size: 'Tiny', weight: 0.3, stats: 'Capacity 4: capacity x 50 nuyen' }),
|
|
191
|
-
row('glasses', 'Glasses (Capacity 3)', 'Glasses', 300, 0, 'Ordinary frames, extraordinary optics. Nobody looks twice.', { page: 'p.444', shape: 'glasses', size: 'Tiny', weight: 0.1, stats: 'Capacity 3: capacity x 100 nuyen' }),
|
|
195
|
+
row('goggles', 'Goggles (Capacity 4)', 'Glasses', 200, 0, 'Four slots of whatever you need your eyes to do tonight.', { page: 'p.444', shape: 'goggles', size: 'Tiny', weight: 0.3, stats: 'Capacity 4: capacity x 50 nuyen', ratingValue: 4, wearable: { capacity: 4, holds: ['vision'] } }),
|
|
196
|
+
row('glasses', 'Glasses (Capacity 3)', 'Glasses', 300, 0, 'Ordinary frames, extraordinary optics. Nobody looks twice.', { page: 'p.444', shape: 'glasses', size: 'Tiny', weight: 0.1, stats: 'Capacity 3: capacity x 100 nuyen', ratingValue: 3, wearable: { capacity: 3, holds: ['vision'] } }),
|
|
192
197
|
row('binoculars', 'Binoculars', 'Electronics', 50, 0, 'Distance, made someone else\'s problem.', { page: 'p.444', shape: 'binoculars', size: 'Tiny', weight: 0.5, stats: 'Built-in vision magnification' }),
|
|
193
198
|
row('micro-camera', 'Micro-Camera', 'Electronics', 100, 0, 'A lens the size of a coat button, and it never blinks.', { page: 'p.444', shape: 'lens', size: 'Tiny', weight: 0.1, stats: 'Capacity 1' }),
|
|
194
199
|
row('mage-sight-goggles', 'Mage Sight Goggles', 'Glasses', 3000, 12, 'Borrowed astral vision -- a mage sees what the lenses see.', { page: 'p.444', shape: 'goggles', size: 'Tiny', weight: 0.4, rating: 'Rare', legality: 'R' }),
|
|
195
|
-
row('smartlink', 'Smartlink (external)', 'Electronics', 2000, 4, 'The optics half of a smartgun system: +2 dice, and the gun knows it.', { page: 'p.444', shape: 'module', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R', stats: 'Vision enhancement, Capacity [1]' }),
|
|
196
|
-
row('low-light-vision-mod', 'Low-Light Vision (mod)', 'Electronics', 500, 4, 'Turns a dark alley into a gray one.', { page: 'p.444', shape: 'module', size: 'Tiny', weight: 0.1, stats: 'Vision enhancement, Capacity [1]' }),
|
|
197
|
-
row('thermographic-vision-mod', 'Thermographic Vision (mod)', 'Electronics', 500, 6, 'Heat as a picture: bodies behind doors, engines still warm.', { page: 'p.444', shape: 'module', size: 'Tiny', weight: 0.1, stats: 'Vision enhancement, Capacity [1]' }),
|
|
198
|
-
row('ear-buds', 'Ear Buds (Capacity 3)', 'Electronics', 150, 0, 'Hard to spot, harder to tell from the music kind.', { page: 'p.445', shape: 'earbuds', size: 'Tiny', weight: 0.1, stats: 'Capacity 3: capacity x 50 nuyen' }),
|
|
200
|
+
row('smartlink', 'Smartlink (external)', 'Electronics', 2000, 4, 'The optics half of a smartgun system: +2 dice, and the gun knows it.', { page: 'p.444', shape: 'module', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R', stats: 'Vision enhancement, Capacity [1]', mod: { kind: 'vision', capacityCost: 1 }, effects: [{ type: 'flag', category: 'capability', property: 'smartlink', value: 1, when: 'fitted' }] }),
|
|
201
|
+
row('low-light-vision-mod', 'Low-Light Vision (mod)', 'Electronics', 500, 4, 'Turns a dark alley into a gray one.', { page: 'p.444', shape: 'module', size: 'Tiny', weight: 0.1, stats: 'Vision enhancement, Capacity [1]', mod: { kind: 'vision', capacityCost: 1 }, effects: [{ type: 'flag', category: 'capability', property: 'low-light', value: 1, when: 'fitted' }] }),
|
|
202
|
+
row('thermographic-vision-mod', 'Thermographic Vision (mod)', 'Electronics', 500, 6, 'Heat as a picture: bodies behind doors, engines still warm.', { page: 'p.444', shape: 'module', size: 'Tiny', weight: 0.1, stats: 'Vision enhancement, Capacity [1]', mod: { kind: 'vision', capacityCost: 1 }, effects: [{ type: 'flag', category: 'capability', property: 'thermographic', value: 1, when: 'fitted' }] }),
|
|
203
|
+
row('ear-buds', 'Ear Buds (Capacity 3)', 'Electronics', 150, 0, 'Hard to spot, harder to tell from the music kind.', { page: 'p.445', shape: 'earbuds', size: 'Tiny', weight: 0.1, stats: 'Capacity 3: capacity x 50 nuyen', ratingValue: 3, wearable: { capacity: 3, holds: ['audio'] } }),
|
|
199
204
|
// SENSORS (p.445), and only the four rows the book actually SELLS.
|
|
200
205
|
// The Sensor Functions table (camera, MAD scanner, ultrasound...) is a
|
|
201
206
|
// MAX RANGE reference with no price or availability column, and Sensor
|
|
202
207
|
// Housings is a max-rating-by-platform table -- neither is a price
|
|
203
208
|
// list, so neither becomes catalog rows. A housing is what you buy;
|
|
204
209
|
// the functions are what you put in it.
|
|
205
|
-
row('sensor-housing-handheld', 'Handheld Sensor Housing (Capacity 3)', 'Sensor', 300, 0, 'A palm case with three empty sockets and a hungry look.', { page: 'p.445', shape: 'case', size: 'Tiny', weight: 0.3, stats: 'Capacity 3: capacity x 100 nuyen; holds sensors up to Rating 3' }),
|
|
206
|
-
row('sensor-housing-wall', 'Wall-Mounted Sensor Housing (Capacity 6)', 'Sensor', 1500, 0, 'Bolts to a wall and watches the room it is bolted to.', { page: 'p.445', shape: 'housing', size: 'Small', weight: 2, rating: 'Standard', stats: 'Capacity 6: capacity x 250 nuyen; holds sensors up to Rating 4' }),
|
|
207
|
-
row('sensor-array-4', 'Sensor Array (Rating 4)', 'Sensor', 4000, 7, 'Six senses in one shell, and none of them blink.', { page: 'p.445', shape: 'array', size: 'Small', weight: 1.5, rating: 'Standard', stats: 'Rating 4: rating x 1,000 nuyen, avail 7; capacity [6]' }),
|
|
208
|
-
row('single-sensor-4', 'Single Sensor (Rating 4)', 'Sensor', 400, 5, 'One sense, done properly, for when you only need the one.', { page: 'p.445', shape: 'module', size: 'Tiny', weight: 0.2, stats: 'Rating 4: rating x 100 nuyen, avail 5; capacity [1]' }),
|
|
209
|
-
row('laser-mic', 'Laser Microphone (Capacity 3)', 'Electronics', 300, 6, 'Reads a conversation off the windowpane it happened behind.', { page: 'p.445', shape: 'mic', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'Capacity 3: capacity x 100 nuyen' }),
|
|
210
|
+
row('sensor-housing-handheld', 'Handheld Sensor Housing (Capacity 3)', 'Sensor', 300, 0, 'A palm case with three empty sockets and a hungry look.', { page: 'p.445', shape: 'case', size: 'Tiny', weight: 0.3, stats: 'Capacity 3: capacity x 100 nuyen; holds sensors up to Rating 3', ratingValue: 3 }),
|
|
211
|
+
row('sensor-housing-wall', 'Wall-Mounted Sensor Housing (Capacity 6)', 'Sensor', 1500, 0, 'Bolts to a wall and watches the room it is bolted to.', { page: 'p.445', shape: 'housing', size: 'Small', weight: 2, rating: 'Standard', stats: 'Capacity 6: capacity x 250 nuyen; holds sensors up to Rating 4', ratingValue: 6 }),
|
|
212
|
+
row('sensor-array-4', 'Sensor Array (Rating 4)', 'Sensor', 4000, 7, 'Six senses in one shell, and none of them blink.', { page: 'p.445', shape: 'array', size: 'Small', weight: 1.5, rating: 'Standard', stats: 'Rating 4: rating x 1,000 nuyen, avail 7; capacity [6]', ratingValue: 4 }),
|
|
213
|
+
row('single-sensor-4', 'Single Sensor (Rating 4)', 'Sensor', 400, 5, 'One sense, done properly, for when you only need the one.', { page: 'p.445', shape: 'module', size: 'Tiny', weight: 0.2, stats: 'Rating 4: rating x 100 nuyen, avail 5; capacity [1]', ratingValue: 4 }),
|
|
214
|
+
row('laser-mic', 'Laser Microphone (Capacity 3)', 'Electronics', 300, 6, 'Reads a conversation off the windowpane it happened behind.', { page: 'p.445', shape: 'mic', size: 'Tiny', weight: 0.4, legality: 'R', stats: 'Capacity 3: capacity x 100 nuyen', ratingValue: 3 }),
|
|
210
215
|
// ---- Security, B&E, and rope (p.447-p.450) ----
|
|
211
216
|
row('plasteel-restraints', 'Plasteel Restraints', 'Electronics', 50, 6, 'Cuffs that do not care how strong you think you are.', { page: 'p.447', shape: 'cuffs', size: 'Tiny', weight: 0.3, legality: 'R' }),
|
|
212
217
|
row('containment-manacles', 'Containment Manacles', 'Electronics', 250, 6, 'For prisoners with chrome, magic, or ideas.', { page: 'p.447', shape: 'manacles', size: 'Small', weight: 1.5, legality: 'R' }),
|
|
213
|
-
row('lockpick-set', 'Lockpick Set', 'Electronics', 250, 4, 'Manual picks and a shim set, wrapped like surgeon\'s tools.', { page: 'p.448', shape: 'roll', size: 'Tiny', weight: 0.3, legality: 'R' }),
|
|
214
|
-
row('sequencer-4', 'Sequencer (Rating 4)', 'Electronics', 1000, 12, 'Brute-forces a maglock\'s passcode while you stand there looking bored.', { page: 'p.448', shape: 'dongle', size: 'Tiny', weight: 0.2, rating: 'Standard', legality: 'F', stats: 'Rating 4: rating x 250 nuyen, avail (rating x 3)F' }),
|
|
215
|
-
row('maglock-passkey-4', 'Maglock Passkey (Rating 4)', 'Electronics', 8000, 12, 'A skeleton key for cardreaders. Expensive because it works.', { page: 'p.448', shape: 'card', size: 'Tiny', weight: 0.1, rating: 'Rare', legality: 'F', stats: 'Rating 4: rating x 2,000 nuyen, avail (rating x 3)F' }),
|
|
216
|
-
row('keycard-copier-4', 'Keycard Copier (Rating 4)', 'Electronics', 2400, 8, 'Swipe once, own the door. The forged card rolls Rating x 2.', { page: 'p.448', shape: 'reader', size: 'Tiny', weight: 0.3, rating: 'Standard', legality: 'F', stats: 'Rating 4: rating x 600 nuyen, avail 8F' }),
|
|
218
|
+
row('lockpick-set', 'Lockpick Set', 'Electronics', 250, 4, 'Manual picks and a shim set, wrapped like surgeon\'s tools.', { page: 'p.448', shape: 'roll', size: 'Tiny', weight: 0.3, legality: 'R', useHint: 'These aren\'t for admiring -- "pick <door>" while you\'re at the lock.' }),
|
|
219
|
+
row('sequencer-4', 'Sequencer (Rating 4)', 'Electronics', 1000, 12, 'Brute-forces a maglock\'s passcode while you stand there looking bored.', { page: 'p.448', shape: 'dongle', size: 'Tiny', weight: 0.2, rating: 'Standard', legality: 'F', stats: 'Rating 4: rating x 250 nuyen, avail (rating x 3)F', ratingValue: 4, effects: [{ type: 'flag', category: 'capability', property: 'maglock-opposed', value: 1, when: 'carried' }], useHint: 'It only earns its keep at a lock -- "pick <door>" while you\'re carrying it.' }),
|
|
220
|
+
row('maglock-passkey-4', 'Maglock Passkey (Rating 4)', 'Electronics', 8000, 12, 'A skeleton key for cardreaders. Expensive because it works.', { page: 'p.448', shape: 'card', size: 'Tiny', weight: 0.1, rating: 'Rare', legality: 'F', stats: 'Rating 4: rating x 2,000 nuyen, avail (rating x 3)F', ratingValue: 4, effects: [{ type: 'flag', category: 'capability', property: 'maglock-opposed', value: 1, when: 'carried' }], useHint: 'It only earns its keep at a lock -- "pick <door>" while you\'re carrying it.' }),
|
|
221
|
+
row('keycard-copier-4', 'Keycard Copier (Rating 4)', 'Electronics', 2400, 8, 'Swipe once, own the door. The forged card rolls Rating x 2.', { page: 'p.448', shape: 'reader', size: 'Tiny', weight: 0.3, rating: 'Standard', legality: 'F', stats: 'Rating 4: rating x 600 nuyen, avail 8F', ratingValue: 4, effects: [{ type: 'flag', category: 'capability', property: 'maglock-opposed', value: 1, when: 'carried' }], useHint: 'Reading a card is not the same as opening the door -- "pick <door>" once you\'re carrying it.' }),
|
|
217
222
|
// Rated rows follow the shipped convention (fake-sin-N, qi-focus-N):
|
|
218
223
|
// ONE row at a concrete rating with the price and availability already
|
|
219
224
|
// computed for it, and the FORMULA kept in `stats` so a player can
|
|
220
225
|
// read off any other rating. Note the two shapes in this table --
|
|
221
226
|
// autopicker/molder/copier have a FLAT availability and scale only on
|
|
222
227
|
// cost, while passkey and sequencer scale both.
|
|
223
|
-
row('autopicker-3', 'Autopicker (Rating 3)', 'Electronics', 1500, 8, 'Reads the tumblers and turns them for you, patiently, while you watch the corridor.', { page: 'p.447', shape: 'wand', size: 'Tiny', weight: 0.3, legality: 'R', stats: 'Rating 3: rating x 500 nuyen, avail 8R' }),
|
|
224
|
-
row('cellular-glove-molder-2', 'Cellular Glove Molder (Rating 2)', 'Electronics', 1000, 12, 'Wears somebody else\'s fingerprints for as long as the scanner is looking.', { page: 'p.447', shape: 'glove', size: 'Tiny', weight: 0.2, legality: 'F', stats: 'Rating 2: rating x 500 nuyen, avail 12F' }),
|
|
228
|
+
row('autopicker-3', 'Autopicker (Rating 3)', 'Electronics', 1500, 8, 'Reads the tumblers and turns them for you, patiently, while you watch the corridor.', { page: 'p.447', shape: 'wand', size: 'Tiny', weight: 0.3, legality: 'R', stats: 'Rating 3: rating x 500 nuyen, avail 8R', ratingValue: 3, effects: [{ type: 'flag', category: 'capability', property: 'autopicker', value: 1, when: 'carried' }], useHint: 'It only earns its keep at a lock -- "pick <door>" while you\'re carrying it.' }),
|
|
229
|
+
row('cellular-glove-molder-2', 'Cellular Glove Molder (Rating 2)', 'Electronics', 1000, 12, 'Wears somebody else\'s fingerprints for as long as the scanner is looking.', { page: 'p.447', shape: 'glove', size: 'Tiny', weight: 0.2, legality: 'F', stats: 'Rating 2: rating x 500 nuyen, avail 12F', ratingValue: 2 }),
|
|
225
230
|
row('chisel-crowbar', 'Chisel/Crowbar', 'Tool', 20, 0, 'The oldest answer to a locked thing, and still the loudest.', { page: 'p.447', shape: 'bar', size: 'Small', weight: 1.5, texture: 'pitted steel' }),
|
|
226
231
|
row('miniwelder', 'Miniwelder', 'Electronics', 250, 2, 'Thirty minutes of arc: through a hinge, a bar, or a padlock.', { page: 'p.448', shape: 'torch', size: 'Small', weight: 1.5 }),
|
|
227
232
|
row('miniwelder-fuel-canister', 'Miniwelder Fuel Canister', 'Consumable', 80, 2, 'Another thirty minutes. Buy two -- doors come in pairs.', { page: 'p.447', shape: 'canister', size: 'Tiny', weight: 0.4 }),
|
|
228
233
|
row('glue-solvent', 'Glue Solvent', 'Consumable', 90, 2, 'Undoes a square metre of somebody else\'s bright idea.', { page: 'p.448', shape: 'spray can', size: 'Tiny', weight: 0.5 }),
|
|
229
234
|
row('glue-sprayer', 'Glue Sprayer', 'Consumable', 150, 2, 'A square metre of fast-drying superglue: enough to seal a door somebody else needs.', { page: 'p.448', shape: 'spray can', size: 'Tiny', weight: 0.5, stats: 'Sets in 1 Combat Turn; Body 5 / Strength 5 to force' }),
|
|
230
235
|
row('thermite-burning-bar', 'Thermite Burning Bar', 'Electronics', 500, 16, 'Burns through a vault door and everything behind it. Bring a hood.', { page: 'p.448', shape: 'bar', size: 'Medium', weight: 3, rating: 'Rare', legality: 'R' }),
|
|
231
|
-
row('monofilament-chainsaw', 'Monofilament Chainsaw', 'Electronics', 500, 8, 'A loop of monowire on a motor. It does not know what a wall is.', { page: 'p.448', shape: 'saw', size: 'Medium', weight: 3, rating: 'Standard', stats: 'Acc 3, Reach 1, DV 8P, AP -6 (Exotic Melee)' }),
|
|
236
|
+
row('monofilament-chainsaw', 'Monofilament Chainsaw', 'Electronics', 500, 8, 'A loop of monowire on a motor. It does not know what a wall is.', { page: 'p.448', shape: 'saw', size: 'Medium', weight: 3, rating: 'Standard', stats: 'Acc 3, Reach 1, DV 8P, AP -6 (Exotic Melee)', weapon: { skill: 'exotic-melee', accuracy: 3, dv: 8, damageType: 'P', ap: -6, reach: 1, range: 'melee' } }),
|
|
232
237
|
row('standard-rope', 'Standard Rope (100 m)', 'Electronics', 50, 0, 'A hundred meters of the least glamorous life insurance made.', { page: 'p.450', shape: 'coil', size: 'Medium', weight: 4, texture: 'braided' }),
|
|
233
238
|
row('stealth-rope', 'Stealth Rope (100 m)', 'Electronics', 85, 8, 'Rope that stiffens on command and goes limp when you leave it.', { page: 'p.450', shape: 'coil', size: 'Medium', weight: 3, legality: 'F' }),
|
|
234
239
|
row('myomeric-rope', 'Myomeric Rope (10 m)', 'Electronics', 200, 10, 'Rope that climbs for you. Ten meters of muscle in a coil.', { page: 'p.450', shape: 'coil', size: 'Small', weight: 2, rating: 'Standard' }),
|
|
235
240
|
// ---- Survival & entry (p.449-p.450) ----
|
|
236
|
-
row('climbing-gear', 'Climbing Gear', 'Electronics', 200, 0, 'Rope, harness, and hardware rated for your bad decisions.', { page: 'p.449', shape: 'kit', size: 'Medium', weight: 5 }),
|
|
241
|
+
row('climbing-gear', 'Climbing Gear', 'Electronics', 200, 0, 'Rope, harness, and hardware rated for your bad decisions.', { page: 'p.449', shape: 'kit', size: 'Medium', weight: 5, effects: [{ type: 'dice', category: 'pools', property: 'climbing', value: 2, when: 'carried' }] }),
|
|
237
242
|
row('flashlight', 'Flashlight', 'Electronics', 25, 0, 'Light where the city forgot to put any.', { page: 'p.449', shape: 'tube', size: 'Tiny', weight: 0.3 }),
|
|
238
243
|
row('light-stick', 'Light Stick', 'Electronics', 25, 0, 'Crack it, drop it, mark the way out.', { page: 'p.449', shape: 'stick', size: 'Tiny', weight: 0.1, color: 'chem green' }),
|
|
239
244
|
row('magnesium-torch', 'Magnesium Torch', 'Consumable', 5, 0, 'Burns white and does not care about the rain. Once.', { page: 'p.449', shape: 'torch', size: 'Tiny', weight: 0.2, color: 'grey' }),
|
|
240
245
|
row('micro-flare-launcher', 'Micro Flare Launcher', 'Electronics', 175, 0, 'Puts a hard little sun over the block for as long as anyone needs to see.', { page: 'p.449', shape: 'launcher', size: 'Small', weight: 0.6 }),
|
|
241
246
|
row('micro-flares', 'Micro Flares', 'Consumable', 25, 0, 'Reloads for the launcher. Sold by the handful, spent in seconds.', { page: 'p.449', shape: 'cartridge', size: 'Tiny', weight: 0.1 }),
|
|
242
247
|
row('gas-mask', 'Gas Mask', 'Mask', 200, 0, 'Filters the air the sprawl insists on selling you.', { page: 'p.449', shape: 'mask', size: 'Small', weight: 1 }),
|
|
243
|
-
row('respirator-4', 'Respirator (Rating 4)', 'Mask', 200, 0, 'A slim filter for smoke, dust, and whatever the plant is venting.', { page: 'p.449', shape: 'mask', size: 'Tiny', weight: 0.4, stats: 'Rating 4: rating x 50 nuyen' }),
|
|
244
|
-
row('chemsuit-4', 'Chemsuit (Rating 4)', 'Clothing', 600, 8, 'A coverall that argues with chemistry for as long as it lasts.', { page: 'p.449', shape: 'coverall', size: 'Medium', weight: 2, rating: 'Standard', stats: 'Rating 4: rating x 150 nuyen, avail rating x 2' }),
|
|
248
|
+
row('respirator-4', 'Respirator (Rating 4)', 'Mask', 200, 0, 'A slim filter for smoke, dust, and whatever the plant is venting.', { page: 'p.449', shape: 'mask', size: 'Tiny', weight: 0.4, stats: 'Rating 4: rating x 50 nuyen', ratingValue: 4 }),
|
|
249
|
+
row('chemsuit-4', 'Chemsuit (Rating 4)', 'Clothing', 600, 8, 'A coverall that argues with chemistry for as long as it lasts.', { page: 'p.449', shape: 'coverall', size: 'Medium', weight: 2, rating: 'Standard', stats: 'Rating 4: rating x 150 nuyen, avail rating x 2', ratingValue: 4 }),
|
|
245
250
|
row('gecko-tape-gloves', 'Gecko Tape Gloves', 'Gloves', 250, 12, 'Walk up the wall. Forbidden for exactly that reason.', { page: 'p.449', shape: 'gloves', size: 'Tiny', weight: 0.3, rating: 'Rare' }),
|
|
246
251
|
row('rappelling-gloves', 'Rappelling Gloves', 'Gloves', 50, 0, 'Palms that let you go down fast without leaving skin behind.', { page: 'p.449', shape: 'gloves', size: 'Tiny', weight: 0.2, texture: 'reinforced leather' }),
|
|
247
252
|
row('survival-kit', 'Survival Kit', 'Electronics', 200, 4, 'Everything the barrens forgot to provide.', { page: 'p.449', shape: 'kit', size: 'Medium', weight: 3 }),
|
|
248
|
-
row('grapple-gun', 'Grapple Gun', 'Electronics', 500, 8, 'A rooftop in one pull of a trigger. Bring the descent kit.', { page: 'p.450', shape: 'launcher', size: 'Medium', weight: 2, legality: 'R', stats: 'Acc 3, DV 7S, AP -2, SS, 1 (ml)' }),
|
|
253
|
+
row('grapple-gun', 'Grapple Gun', 'Electronics', 500, 8, 'A rooftop in one pull of a trigger. Bring the descent kit.', { page: 'p.450', shape: 'launcher', size: 'Medium', weight: 2, legality: 'R', stats: 'Acc 3, DV 7S, AP -2, SS, 1 (ml)', weapon: { skill: 'exotic-ranged', accuracy: 3, dv: 7, damageType: 'S', ap: -2, modes: ['SS'], ammo: { rounds: 1, feed: 'ml' } } }),
|
|
249
254
|
// The p.443 Tools table, all three tiers. GENERIC rows, not one per
|
|
250
255
|
// skill: canon sells a kit/shop/facility per trade, but `tool-kit`
|
|
251
256
|
// already shipped as one row that says "buy the trade separately" in
|
|
@@ -260,20 +265,20 @@ export const CATALOG_ITEMS = [
|
|
|
260
265
|
row('disposable-syringe', 'Disposable Syringe', 'Medical', 10, 3, 'One dose, one use, no questions afterward.', { page: 'p.450', shape: 'syringe', size: 'Tiny', weight: 0.1, color: 'clear' }),
|
|
261
266
|
row('biomonitor', 'Biomonitor', 'Medical', 300, 3, 'Reads your vitals and tells the world when they stop.', { page: 'p.450', shape: 'band', size: 'Tiny', weight: 0.2 }),
|
|
262
267
|
row('medkit-supplies', 'Medkit Supplies', 'Medical', 100, 0, 'Refills: sealant, patches, and the drugs that ran out last run.', { page: 'p.450', shape: 'pouch', size: 'Tiny', weight: 0.5, color: 'red' }),
|
|
263
|
-
row('medkit-3', 'Medkit (Rating 3)', 'Medical', 750, 3, 'Pocket trauma kit: sealant, stims, a diagnostic patch.', { page: 'p.450', shape: 'case', color: 'red', stats: 'Rating 3: rating x 250 nuyen, avail rating' }),
|
|
264
|
-
row('medkit-6', 'Medkit (Rating 6)', 'Medical', 1500, 6, 'A clinic in a handheld case -- the good one.', { page: 'p.450', shape: 'case', size: 'Medium', weight: 2, color: 'red', stats: 'Rating 6: rating x 250 nuyen, avail rating' }),
|
|
265
|
-
row('stim-patch', 'Stim Patch (Rating 4)', 'StimPatch', 100, 8, 'Slap-on chemical courage. The crash comes later.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'yellow', stats: 'Rating 4: rating x 25 nuyen, avail rating x 2' }),
|
|
266
|
-
row('antidote-patch-4', 'Antidote Patch (Rating 4)', 'SlapPatch', 200, 4, 'Argues with a toxin already in your blood. Sometimes it wins.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'green', stats: 'Rating 4: rating x 50 nuyen, avail rating' }),
|
|
267
|
-
row('tranq-patch-6', 'Tranq Patch (Rating 6)', 'SlapPatch', 120, 12, 'Puts someone under without putting them down.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'blue', stats: 'Rating 6: rating x 20 nuyen, avail rating x 2' }),
|
|
268
|
+
row('medkit-3', 'Medkit (Rating 3)', 'Medical', 750, 3, 'Pocket trauma kit: sealant, stims, a diagnostic patch.', { page: 'p.450', shape: 'case', color: 'red', stats: 'Rating 3: rating x 250 nuyen, avail rating', ratingValue: 3, effects: [{ type: 'dice', category: 'skills', property: 'first-aid', value: 1, when: 'carried', scaleBy: 'rating' }] }),
|
|
269
|
+
row('medkit-6', 'Medkit (Rating 6)', 'Medical', 1500, 6, 'A clinic in a handheld case -- the good one.', { page: 'p.450', shape: 'case', size: 'Medium', weight: 2, color: 'red', stats: 'Rating 6: rating x 250 nuyen, avail rating', ratingValue: 6, effects: [{ type: 'dice', category: 'skills', property: 'first-aid', value: 1, when: 'carried', scaleBy: 'rating' }] }),
|
|
270
|
+
row('stim-patch', 'Stim Patch (Rating 4)', 'StimPatch', 100, 8, 'Slap-on chemical courage. The crash comes later.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'yellow', stats: 'Rating 4: rating x 25 nuyen, avail rating x 2', ratingValue: 4 }),
|
|
271
|
+
row('antidote-patch-4', 'Antidote Patch (Rating 4)', 'SlapPatch', 200, 4, 'Argues with a toxin already in your blood. Sometimes it wins.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'green', stats: 'Rating 4: rating x 50 nuyen, avail rating', ratingValue: 4 }),
|
|
272
|
+
row('tranq-patch-6', 'Tranq Patch (Rating 6)', 'SlapPatch', 120, 12, 'Puts someone under without putting them down.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'blue', stats: 'Rating 6: rating x 20 nuyen, avail rating x 2', ratingValue: 6 }),
|
|
268
273
|
row('trauma-patch', 'Trauma Patch', 'Medical', 500, 6, 'The patch that argues with death itself. Once.', { page: 'p.451', shape: 'patch', size: 'Tiny', weight: 0.1, color: 'red', rating: 'Standard', stats: 'Stabilizes a dying patient on Body' }),
|
|
269
274
|
// ---- Magical goods (p.461) ----
|
|
270
275
|
row('reagents', 'Reagents (10 drams)', 'Focus', 200, 0, 'Alchemically potent odds and ends, jarred and labeled.', { page: 'p.461', shape: 'jar', size: 'Tiny', weight: 0.5, stats: '20 nuyen per dram' }),
|
|
271
|
-
row('lodge-materials-3', 'Magical Lodge Materials (Force 3)', 'Focus', 1500, 6, 'The candles, chalk, and silence a lodge is actually made of.', { page: 'p.461', shape: 'crate', size: 'Medium', weight: 6, rating: 'Standard', stats: 'Force 3: force x 500 nuyen, avail force x 2' }),
|
|
272
|
-
row('qi-focus-1', 'Qi Focus (Force 1)', 'Focus', 3000, 3, 'Bound to the body, not the hand -- a tattoo that hums when you do.', { page: 'p.461', shape: 'tattoo', size: 'Tiny', weight: 0, rating: 'Standard', legality: 'R', stats: 'Force 1: force x 3,000 nuyen, avail (force x 3)R' }),
|
|
273
|
-
row('spell-focus-1', 'Spell Focus (Force 1)', 'Focus', 4000, 3, 'A lens for one category of spell. Bond it or it is jewelry.', { page: 'p.461', shape: 'ring', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R', stats: 'Force 1: force x 4,000 nuyen, avail (force x 3)R' }),
|
|
274
|
-
row('spirit-focus-1', 'Spirit Focus (Force 1)', 'Focus', 4000, 3, 'Where a summoner keeps the leash.', { page: 'p.461', shape: 'talisman', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R', stats: 'Force 1: force x 4,000 nuyen, avail (force x 3)R' }),
|
|
275
|
-
row('weapon-focus-1', 'Weapon Focus (Force 1)', 'Focus', 7000, 4, 'A blade that cuts things that have never had a body.', { page: 'p.461', shape: 'blade', size: 'Medium', weight: 1.2, rating: 'Rare', legality: 'R', stats: 'Force 1: force x 7,000 nuyen, avail (force x 4)R' }),
|
|
276
|
-
row('power-focus-1', 'Power Focus (Force 1)', 'Focus', 18000, 4, 'A bound anchor for living mana. The real investment.', { page: 'p.461', shape: 'amulet', size: 'Tiny', weight: 0.2, rating: 'Rare', legality: 'R', stats: 'Force 1: force x 18,000 nuyen, avail (force x 4)R' }),
|
|
276
|
+
row('lodge-materials-3', 'Magical Lodge Materials (Force 3)', 'Focus', 1500, 6, 'The candles, chalk, and silence a lodge is actually made of.', { page: 'p.461', shape: 'crate', size: 'Medium', weight: 6, rating: 'Standard', stats: 'Force 3: force x 500 nuyen, avail force x 2', ratingValue: 3 }),
|
|
277
|
+
row('qi-focus-1', 'Qi Focus (Force 1)', 'Focus', 3000, 3, 'Bound to the body, not the hand -- a tattoo that hums when you do.', { page: 'p.461', shape: 'tattoo', size: 'Tiny', weight: 0, rating: 'Standard', legality: 'R', stats: 'Force 1: force x 3,000 nuyen, avail (force x 3)R', ratingValue: 1 }),
|
|
278
|
+
row('spell-focus-1', 'Spell Focus (Force 1)', 'Focus', 4000, 3, 'A lens for one category of spell. Bond it or it is jewelry.', { page: 'p.461', shape: 'ring', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R', stats: 'Force 1: force x 4,000 nuyen, avail (force x 3)R', ratingValue: 1, effects: [{ type: 'dice', category: 'skills', property: 'spellcasting', value: 1, when: 'carried', scaleBy: 'rating' }] }),
|
|
279
|
+
row('spirit-focus-1', 'Spirit Focus (Force 1)', 'Focus', 4000, 3, 'Where a summoner keeps the leash.', { page: 'p.461', shape: 'talisman', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R', stats: 'Force 1: force x 4,000 nuyen, avail (force x 3)R', ratingValue: 1, effects: [{ type: 'dice', category: 'skills', property: 'summoning', value: 1, when: 'carried', scaleBy: 'rating' }] }),
|
|
280
|
+
row('weapon-focus-1', 'Weapon Focus (Force 1)', 'Focus', 7000, 4, 'A blade that cuts things that have never had a body.', { page: 'p.461', shape: 'blade', size: 'Medium', weight: 1.2, rating: 'Rare', legality: 'R', stats: 'Force 1: force x 7,000 nuyen, avail (force x 4)R', ratingValue: 1 }),
|
|
281
|
+
row('power-focus-1', 'Power Focus (Force 1)', 'Focus', 18000, 4, 'A bound anchor for living mana. The real investment.', { page: 'p.461', shape: 'amulet', size: 'Tiny', weight: 0.2, rating: 'Rare', legality: 'R', stats: 'Force 1: force x 18,000 nuyen, avail (force x 4)R', ratingValue: 1, effects: [{ type: 'dice', category: 'skills', property: 'spellcasting', value: 1, when: 'carried', scaleBy: 'rating' }] }),
|
|
277
282
|
row('detection-spell-formula', 'Detection Spell Formula', 'SpellFormula', 500, 4, 'The notation for seeing what is not on offer. Bring talent.', { page: 'p.461', shape: 'scroll', size: 'Tiny', weight: 0.1, legality: 'R' }),
|
|
278
283
|
row('health-spell-formula', 'Health Spell Formula', 'SpellFormula', 500, 4, 'Mending, written down. Cheaper than a street doc, harder to learn.', { page: 'p.461', shape: 'scroll', size: 'Tiny', weight: 0.1, legality: 'R' }),
|
|
279
284
|
row('illusion-spell-formula', 'Illusion Spell Formula', 'SpellFormula', 1000, 8, 'How to lie to eyes, ears, and sensors at the same time.', { page: 'p.461', shape: 'scroll', size: 'Tiny', weight: 0.1, rating: 'Standard', legality: 'R' }),
|
|
@@ -287,12 +292,12 @@ export const CATALOG_ITEMS = [
|
|
|
287
292
|
// 8 + (Body/2) rather than the usual, and enough metahuman shape to
|
|
288
293
|
// use metahuman clothing, weapons and tools. The 'G' on Speed is the
|
|
289
294
|
// book's own ground-speed notation and is kept verbatim.
|
|
290
|
-
row('horizon-little-buddy', 'Horizon Little Buddy', 'Drone', 2000, 4, 'A five-year-old sized nanny that never sleeps and never raises its voice.', { page: 'Rigger 5.0 p.146', shape: 'anthroform', size: 'Small', weight: 20, color: 'nursery yellow', stats: 'Handl 2, Spd 1G, Acc 1, Bod 1, Arm 0, Pilot 2, Sen 2; anthro: arms and legs, Physical 8 + (Bod/2)' }),
|
|
291
|
-
row('aztechnology-criado-juan', 'Aztechnology Criado Juan', 'Drone', 8000, 2, 'The cheap Azzie houseservant from the ad campaign nobody can unhear.', { page: 'Rigger 5.0 p.145', shape: 'anthroform', size: 'Medium', weight: 45, rating: 'Standard', stats: 'Handl 2, Spd 2G, Acc 1, Bod 2, Arm 0, Pilot 2, Sen 2; anthro: arms and legs, Physical 8 + (Bod/2)' }),
|
|
292
|
-
row('mct-kenchiku-kikai', 'MCT Kenchiku-Kikai', 'Drone', 20000, 8, 'The oldest anthroform still on the job, and it has been on the job a long time.', { page: 'Rigger 5.0 p.146', shape: 'anthroform', size: 'Large', weight: 120, rating: 'Rare', legality: 'R', stats: 'Handl 2, Spd 2G, Acc 1, Bod 5, Arm 3, Pilot 2, Sen 2; anthro: arms and legs, Physical 8 + (Bod/2)' }),
|
|
293
|
-
row('shiawase-i-doll', 'Shiawase I-Doll', 'Drone', 20000, 4, 'A domestic servant built to be customised, and customised by everyone who buys one.', { page: 'Rigger 5.0 p.148', shape: 'anthroform', size: 'Medium', weight: 55, rating: 'Rare', stats: 'Handl 3, Spd 3G, Acc 1, Bod 3, Arm 0, Pilot 3, Sen 3; anthro: arms and legs, Physical 8 + (Bod/2)' }),
|
|
294
|
-
row('sk-direktionssekretar', 'S-K Direktionssekretar', 'Drone', 40000, 12, 'A corporate secretary that files, schedules, and is armoured for a reason.', { page: 'Rigger 5.0 p.148', shape: 'anthroform', size: 'Medium', weight: 60, rating: 'Rare', legality: 'R', stats: 'Handl 4, Spd 4G, Acc 2, Bod 4, Arm 3, Pilot 4, Sen 4; anthro: arms and legs, Physical 8 + (Bod/2)' }),
|
|
295
|
-
row('neonet-juggernaught', 'NeoNET Juggernaught', 'Drone', 100000, 14, 'Heavy artillery in a person-shaped chassis, sold to people who wanted exactly that.', { page: 'Rigger 5.0 p.147', shape: 'anthroform', size: 'Large', weight: 300, rating: 'Rare', legality: 'R', stats: 'Handl 3, Spd 4G, Acc 1, Bod 6, Arm 12, Pilot 3, Sen 3; anthro: arms and legs, Physical 8 + (Bod/2)' }),
|
|
295
|
+
row('horizon-little-buddy', 'Horizon Little Buddy', 'Drone', 2000, 4, 'A five-year-old sized nanny that never sleeps and never raises its voice.', { page: 'Rigger 5.0 p.146', shape: 'anthroform', size: 'Small', weight: 20, color: 'nursery yellow', stats: 'Handl 2, Spd 1G, Acc 1, Bod 1, Arm 0, Pilot 2, Sen 2; anthro: arms and legs, Physical 8 + (Bod/2)', vehicle: { handling: 2, speed: '1G', acceleration: 1, body: 1, armor: 0, pilot: 2, sensor: 2, anthro: true } }),
|
|
296
|
+
row('aztechnology-criado-juan', 'Aztechnology Criado Juan', 'Drone', 8000, 2, 'The cheap Azzie houseservant from the ad campaign nobody can unhear.', { page: 'Rigger 5.0 p.145', shape: 'anthroform', size: 'Medium', weight: 45, rating: 'Standard', stats: 'Handl 2, Spd 2G, Acc 1, Bod 2, Arm 0, Pilot 2, Sen 2; anthro: arms and legs, Physical 8 + (Bod/2)', vehicle: { handling: 2, speed: '2G', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2, anthro: true } }),
|
|
297
|
+
row('mct-kenchiku-kikai', 'MCT Kenchiku-Kikai', 'Drone', 20000, 8, 'The oldest anthroform still on the job, and it has been on the job a long time.', { page: 'Rigger 5.0 p.146', shape: 'anthroform', size: 'Large', weight: 120, rating: 'Rare', legality: 'R', stats: 'Handl 2, Spd 2G, Acc 1, Bod 5, Arm 3, Pilot 2, Sen 2; anthro: arms and legs, Physical 8 + (Bod/2)', vehicle: { handling: 2, speed: '2G', acceleration: 1, body: 5, armor: 3, pilot: 2, sensor: 2, anthro: true } }),
|
|
298
|
+
row('shiawase-i-doll', 'Shiawase I-Doll', 'Drone', 20000, 4, 'A domestic servant built to be customised, and customised by everyone who buys one.', { page: 'Rigger 5.0 p.148', shape: 'anthroform', size: 'Medium', weight: 55, rating: 'Rare', stats: 'Handl 3, Spd 3G, Acc 1, Bod 3, Arm 0, Pilot 3, Sen 3; anthro: arms and legs, Physical 8 + (Bod/2)', vehicle: { handling: 3, speed: '3G', acceleration: 1, body: 3, armor: 0, pilot: 3, sensor: 3, anthro: true } }),
|
|
299
|
+
row('sk-direktionssekretar', 'S-K Direktionssekretar', 'Drone', 40000, 12, 'A corporate secretary that files, schedules, and is armoured for a reason.', { page: 'Rigger 5.0 p.148', shape: 'anthroform', size: 'Medium', weight: 60, rating: 'Rare', legality: 'R', stats: 'Handl 4, Spd 4G, Acc 2, Bod 4, Arm 3, Pilot 4, Sen 4; anthro: arms and legs, Physical 8 + (Bod/2)', vehicle: { handling: 4, speed: '4G', acceleration: 2, body: 4, armor: 3, pilot: 4, sensor: 4, anthro: true } }),
|
|
300
|
+
row('neonet-juggernaught', 'NeoNET Juggernaught', 'Drone', 100000, 14, 'Heavy artillery in a person-shaped chassis, sold to people who wanted exactly that.', { page: 'Rigger 5.0 p.147', shape: 'anthroform', size: 'Large', weight: 300, rating: 'Rare', legality: 'R', stats: 'Handl 3, Spd 4G, Acc 1, Bod 6, Arm 12, Pilot 3, Sen 3; anthro: arms and legs, Physical 8 + (Bod/2)', vehicle: { handling: 3, speed: '4G', acceleration: 1, body: 6, armor: 12, pilot: 3, sensor: 3, anthro: true } }),
|
|
296
301
|
// THE REST OF RIGGER 5.0 (p.126-148). The core p.466 table and the six
|
|
297
302
|
// anthroforms shipped earlier; this is the remaining lineup -- micro,
|
|
298
303
|
// mini, small, medium, large, huge, and one drone that is a missile.
|
|
@@ -309,83 +314,87 @@ export const CATALOG_ITEMS = [
|
|
|
309
314
|
// p.124). "P" is left unexpanded on purpose: the retrieval was explicit
|
|
310
315
|
// that it could not say what P stands for, and a guess in a stat line
|
|
311
316
|
// reads exactly like a fact.
|
|
312
|
-
row('horizon-noizquito', 'Horizon "Noizquito"', 'Drone', 2000, 10, 'A mosquito with a microphone, sold to people who want to hear a room they are not in.', { page: 'Rigger 5.0 p.128', shape: 'insect', size: 'Tiny', weight: 0.2, legality: 'R', stats: 'Handl 4, Spd 3R, Acc 2, Bod 1, Arm 0, Pilot 3, Sen 3' }),
|
|
313
|
-
row('sony-goldfish', 'Sony Goldfish', 'Drone', 500, 6, 'A toy that swims, watches, and costs less than dinner.', { page: 'Rigger 5.0 p.128', shape: 'insect', size: 'Tiny', weight: 0.2, stats: 'Handl 2/4, Spd 1W, Acc 1, Bod 0, Arm 0, Pilot 2, Sen 2' }),
|
|
314
|
-
row('aerodesigns-condor', 'Aerodesigns Condor', 'Drone', 4000, 6, 'A glider that rides thermals all day and reports what it saw at dusk.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'Handl 2, Spd 0R, Acc 0, Bod 1(1), Arm 0, Pilot 2, Sen 4' }),
|
|
315
|
-
row('aztechnology-hedgehog', 'Aztechnology Hedgehog', 'Drone', 8000, 8, 'Small, spiny, and disinclined to be picked up by anyone it does not know.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, legality: 'F', stats: 'Handl 3, Spd 1G, Acc 1, Bod 1(0), Arm 0, Pilot 4, Sen 3' }),
|
|
316
|
-
row('cd-dragonfly', 'CD Dragonfly', 'Drone', 4000, 12, 'Four wings, one camera, and a knack for hovering where nobody thinks to look.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'Handl 4, Spd 2P, Acc 1, Bod 1(0), Arm 3, Pilot 3, Sen 2' }),
|
|
317
|
-
row('festo-pigeon-2-0', 'Festo Pigeon 2.0', 'Drone', 3000, 8, 'Indistinguishable from the real thing until it does not fly away.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, stats: 'Handl 4, Spd 2P, Acc 1, Bod 1(1), Arm 0, Pilot 2, Sen 2' }),
|
|
318
|
-
row('horizon-cu-3', 'Horizon CU^3', 'Drone', 3000, 4, 'A cube that follows you and films you, which is apparently what people wanted.', { page: 'Rigger 5.0 p.130', shape: 'insect', size: 'Tiny', weight: 0.5, stats: 'Handl 4, Spd 1P, Acc 1, Bod 1(1), Arm 0, Pilot 2, Sen 3' }),
|
|
319
|
-
row('renraku-gerbil', 'Renraku Gerbil', 'Drone', 2000, 4, 'Scurries under furniture and through ducts, cheerfully, for hours.', { page: 'Rigger 5.0 p.130', shape: 'insect', size: 'Tiny', weight: 0.5, stats: 'Handl 4/2, Spd 2G, Acc 1, Bod 1(1), Arm 0, Pilot 2, Sen 2' }),
|
|
320
|
-
row('ares-sentry', 'Ares Sentry', 'Drone', 4000, 4, 'It does not move and it does not need to. It watches an arc and shoots what enters it.', { page: 'Rigger 5.0 p.130', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/--, Spd 1G, Acc 1, Bod 2(0), Arm 6, Pilot 3, Sen 2' }),
|
|
321
|
-
row('c-b-smoke-generator', 'C-B Smoke Generator', 'Drone', 4000, 8, 'Fills a room with cover on request. Everything after that is your problem.', { page: 'Rigger 5.0 p.130', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 1G, Acc 1, Bod 2(0), Arm 0, Pilot 2, Sen 2' }),
|
|
322
|
-
row('cd-wolfhound', 'CD Wolfhound', 'Drone', 30000, 12, 'A long-range hunter with a nose for signal and the patience to use it.', { page: 'Rigger 5.0 p.131', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2J, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 4' }),
|
|
323
|
-
row('evo-proletarian', 'Evo Proletarian', 'Drone', 4000, 6, 'The people\'s drone: cheap, rugged, and unbothered by dignity.', { page: 'Rigger 5.0 p.131', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4/2, Spd 2G, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2' }),
|
|
324
|
-
row('ferret-rpd-5x', 'Ferret RPD-5X', 'Drone', 4000, 8, 'A guard dog that fits under a desk and takes the job seriously.', { page: 'Rigger 5.0 p.132', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/2, Spd 1G, Acc 1, Bod 2(1), Arm 3, Pilot 3, Sen 3' }),
|
|
325
|
-
row('festo-sewer-snake', 'Festo Sewer Snake', 'Drone', 6000, 10, 'Goes where the pipes go, which is everywhere nobody wants to follow.', { page: 'Rigger 5.0 p.132', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 1G/1W, Acc 1/1, Bod 2(1), Arm 0, Pilot 2, Sen 2' }),
|
|
326
|
-
row('horizon-mini-zep', 'Horizon Mini-Zep', 'Drone', 2000, 4, 'A little airship that loiters over a crowd for as long as the crowd lasts.', { page: 'Rigger 5.0 p.131-132', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 2, Spd 0P, Acc 0, Bod 2(4), Arm 0, Pilot 2, Sen 2' }),
|
|
327
|
-
row('knight-errant-p5', 'Knight Errant P5', 'Drone', 8000, 10, 'Police pursuit in a small package. It is faster than you and it does not tire.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/2, Spd 6G, Acc 2, Bod 2(1), Arm 0, Pilot 3, Sen 2' }),
|
|
328
|
-
row('ls-castle-guard', 'LS Castle Guard', 'Drone', 10000, 8, 'Bolted to a wall with a firing arc and no imagination whatsoever.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/2, Spd 1G, Acc 1, Bod 2(0), Arm 6, Pilot 3, Sen 2' }),
|
|
329
|
-
row('mct-gun-turret', 'MCT Gun Turret', 'Drone', 4000, 4, 'It has no wheels because it is not going anywhere. Neither, ideally, are you.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl --, Spd --, Acc --, Bod 2(0), Arm 6, Pilot 3, Sen 2' }),
|
|
330
|
-
row('mct-seven-wheelie', 'MCT Seven (Wheelie)', 'Drone', 2000, 0, 'The modular Seven on two wheels -- quick, cheap, and easily replaced.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4/2, Spd 2G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
331
|
-
row('mct-seven-treads', 'MCT Seven (Treads)', 'Drone', 2000, 2, 'The modular Seven on treads, for ground that argues back.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
332
|
-
row('mct-seven-dirty', 'MCT Seven (Dirty)', 'Drone', 2000, 2, 'The modular Seven built for mud, dust, and the places between them.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 2/4, Spd 2G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
333
|
-
row('mct-seven-quad', 'MCT Seven (Quad)', 'Drone', 2000, 4, 'The modular Seven on four legs, picking its way over what wheels refuse.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 1G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
334
|
-
row('mct-seven-swims', 'MCT Seven (Swims)', 'Drone', 1000, 4, 'The modular Seven, waterproofed. The cheapest thing in the catalog that floats.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2W, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
335
|
-
row('mct-seven-hovers', 'MCT Seven (Hovers)', 'Drone', 4000, 6, 'The modular Seven on ducted fans, hovering a hand\'s width off the floor.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 1P, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
336
|
-
row('mct-seven-soars', 'MCT Seven (Soars)', 'Drone', 4000, 8, 'The modular Seven with a jet where its sense of proportion should be.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2J, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1' }),
|
|
337
|
-
row('nn-prairie-dog', 'NN Prairie Dog', 'Drone', 8000, 12, 'Pops up, looks around, drops back down. Sold to people who need exactly that.', { page: 'Rigger 5.0 p.134', shape: 'frame', size: 'Small', weight: 4, legality: 'F', stats: 'Handl 2/4, Spd 2G, Acc 1, Bod 2(0), Arm 3, Pilot 3, Sen 4' }),
|
|
338
|
-
row('p-w-sundowner', 'P&W Sundowner', 'Drone', 10000, 8, 'A high-altitude loiterer that watches a district until its batteries give out.', { page: 'Rigger 5.0 p.134', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 4P, Acc 1, Bod 2(0), Arm 0, Pilot 2, Sen 2' }),
|
|
339
|
-
row('proteus-krake', 'Proteus \'Krake\'', 'Drone', 10000, 18, 'Built for deep water and pressure that would fold anything cheaper.', { page: 'Rigger 5.0 p.134', shape: 'frame', size: 'Small', weight: 4, legality: 'F', stats: 'Handl 5, Spd 3W, Acc 4, Bod 2(0), Arm 2, Pilot 4, Sen 3' }),
|
|
340
|
-
row('s-t-bloodhound', 'S-T Bloodhound', 'Drone', 10000, 8, 'Follows a chemical trail long after a metahuman nose has given up.', { page: 'Rigger 5.0 p.136', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 1G, Acc 1, Bod 2(0), Arm 0, Pilot 2, Sen 4' }),
|
|
341
|
-
row('renraku-dove-4', 'Renraku Dove-4', 'Drone', 5000, 4, 'A courier that finds an address and does not ask what is in the package.', { page: 'Rigger 5.0 p.136', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 2P, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2' }),
|
|
342
|
-
row('renraku-jardinero', 'Renraku Jardinero', 'Drone', 2000, 4, 'A gardener drone. It trims hedges, and it has seen everything in the garden.', { page: 'Rigger 5.0 p.136', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 2/4, Spd 1G, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2' }),
|
|
343
|
-
row('renraku-job-a-mat', 'Renraku Job-A-Mat', 'Drone', 3000, 4, 'A fixed servicer that does one job forever without complaint or curiosity.', { page: 'Rigger 5.0 p.137', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl --, Spd --, Acc --, Bod 2(2), Arm 0, Pilot 2, Sen 2' }),
|
|
344
|
-
row('renraku-pelican', 'Renraku Pelican', 'Drone', 4000, 2, 'Carries more than it looks like it should, then puts it down gently.', { page: 'Rigger 5.0 p.137', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 2P, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2' }),
|
|
345
|
-
row('telestrian-shamus', 'Telestrian Shamus', 'Drone', 30000, 10, 'A private investigator with eight sensor channels and no conscience to trouble.', { page: 'Rigger 5.0 p.137', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 3G, Acc 1, Bod 4(0), Arm 4, Pilot 3, Sen 8' }),
|
|
346
|
-
row('ares-cheetah', 'Ares Cheetah', 'Drone', 14000, 12, 'Fast, armoured, and pointed at whatever is running away.', { page: 'Rigger 5.0 p.138', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 4, Spd 6G, Acc 2, Bod 2(0), Arm 6, Pilot 3, Sen 2' }),
|
|
347
|
-
row('evo-krokodil', 'Evo Krokodil', 'Drone', 12000, 8, 'Equally at home on a riverbank and in the river, and unpleasant on both.', { page: 'Rigger 5.0 p.139', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 3, Spd 2G/3W, Acc 1, Bod 3(1), Arm 6, Pilot 2, Sen 2' }),
|
|
348
|
-
row('f-b-kull', 'F-B Kull', 'Drone', 10000, 4, 'A flying brick with a payload bay, sold on capacity rather than charm.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, stats: 'Handl 3, Spd 4P, Acc 2, Bod 3(3), Arm 0, Pilot 3, Sen 2' }),
|
|
349
|
-
row('mct-tunneler', 'MCT Tunneler', 'Drone', 10000, 8, 'Goes through walls the slow way, and does not care how long that takes.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 3, Spd 0P, Acc 0, Bod 3(2), Arm 6, Pilot 2, Sen 2' }),
|
|
350
|
-
row('renraku-lebd-2', 'Renraku LEBD-2', 'Drone', 20000, 12, 'Law enforcement in drone form: armoured, watchful, and unmistakably official.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 4, Spd 2P, Acc 1, Bod 3(0), Arm 9, Pilot 4, Sen 4' }),
|
|
351
|
-
row('transys-steed', 'Transys Steed', 'Drone', 4000, 2, 'A patient hauler that follows a rigger around like a well-trained animal.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, stats: 'Handl 4/2, Spd 1G, Acc 1, Bod 3(1), Arm 0, Pilot 2, Sen 2' }),
|
|
352
|
-
row('ares-matilda', 'Ares Matilda', 'Drone', 18000, 12, 'Slow, enormously tough, and built to still be there when the shooting stops.', { page: 'Rigger 5.0 p.141', shape: 'hull', size: 'Large', weight: 90, legality: 'R', stats: 'Handl 1, Spd 2G, Acc 1, Bod 8, Arm 8, Pilot 2, Sen 1' }),
|
|
353
|
-
row('ares-mule', 'Ares Mule', 'Drone', 8000, 4, 'It carries what you cannot and complains less than anyone you could hire.', { page: 'Rigger 5.0 p.141', shape: 'hull', size: 'Large', weight: 90, stats: 'Handl 4, Spd 1G, Acc 1, Bod 4(3), Arm 6, Pilot 2, Sen 2' }),
|
|
354
|
-
row('ares-paladin', 'Ares Paladin', 'Drone', 5000, 8, 'Armour eighteen deep on a chassis that costs less than the plating suggests.', { page: 'Rigger 5.0 p.142', shape: 'hull', size: 'Large', weight: 90, legality: 'R', stats: 'Handl 5, Spd 4G, Acc 1, Bod 5(0), Arm 18, Pilot 3, Sen 2' }),
|
|
355
|
-
row('cc-medicart', 'CC \'MediCart\'', 'Drone', 10000, 6, 'A rolling clinic that reaches the wounded before the ambulance does.', { page: 'Rigger 5.0 p.142', shape: 'hull', size: 'Large', weight: 90, stats: 'Handl 5, Spd 5G, Acc 1, Bod 6(2), Arm 5, Pilot 4, Sen 4' }),
|
|
356
|
-
row('gts-tower', 'GTS Tower', 'Drone', 10000, 8, 'A mast on wheels: raises a sensor package above the skyline and holds it there.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'Large', weight: 90, stats: 'Handl 2, Spd 1P, Acc 1, Bod 4(0), Arm 6, Pilot 2, Sen 2' }),
|
|
357
|
-
row('s-k-neptune', 'S-K Neptune', 'Drone', 17500, 10, 'A submersible with a corporate budget behind it and depth to prove it.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'Large', weight: 90, legality: 'R', stats: 'Handl 2, Spd 3W, Acc 1, Bod 5(0), Arm 3, Pilot 4, Sen 3' }),
|
|
358
|
-
row('mitsuhama-malakim', 'Mitsuhama Malakim', 'Drone', 40000, 20, 'An angel by name, a gunship by build, and forbidden almost everywhere.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'Large', weight: 90, legality: 'F', stats: 'Handl 3, Spd 6P, Acc 2, Bod 4(0), Arm 9, Pilot 4, Sen 4' }),
|
|
359
|
-
row('ares-kn-y2-deimos', 'Ares KN-Y2 (Deimos)', 'Drone', 220000, 20, 'A walking weapons platform named for a moon, and about as approachable.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 2G, Acc 1, Bod 6(0), Arm 18, Pilot 5, Sen 3' }),
|
|
360
|
-
row('ares-kn-y4-eris', 'Ares KN-Y4 (Eris)', 'Drone', 270000, 24, 'The Deimos\'s bigger sibling: more of everything, including trouble.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 2G, Acc 1, Bod 6(0), Arm 18, Pilot 5, Sen 3' }),
|
|
361
|
-
row('ares-kn-y1-phobos', 'Ares KN-Y1 (Phobos)', 'Drone', 250000, 16, 'The third Ares moon: same chassis, same eighteen points of plate, a slightly kinder price.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 2G, Acc 1, Bod 6(0), Arm 18, Pilot 5, Sen 3' }),
|
|
362
|
-
row('mesametric-kodiak', 'Mesametric Kodiak', 'Drone', 40000, 12, 'A bear-sized hauler that goes over terrain rather than around it.', { page: 'Rigger 5.0 p.145', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'R', stats: 'Handl 2/4, Spd 2G, Acc 1, Bod 6(2), Arm 12, Pilot 2, Sen 2' }),
|
|
363
|
-
row('neonet-avenging-angel', 'NeoNET Avenging Angel', 'Drone', 1000000, 40, 'A million nuyen of jet-driven opinion. Availability 40 is not a typo.', { page: 'Rigger 5.0 p.145', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 6J, Acc 2, Bod 6(0), Arm 12, Pilot 6, Sen 6' }),
|
|
364
|
-
row('ares-garuda', 'Ares \'Garuda\'', 'Drone', 8500, 20, 'A drone that is also a missile, which resolves any question about its lifespan.', { page: 'Rigger 5.0 p.149', shape: 'missile', size: 'Small', weight: 15, legality: 'F', stats: 'Handl 6, Spd 3J/6J, Acc 2/4, Bod 2, Arm 2, Pilot 4, Sen 3' }),
|
|
317
|
+
row('horizon-noizquito', 'Horizon "Noizquito"', 'Drone', 2000, 10, 'A mosquito with a microphone, sold to people who want to hear a room they are not in.', { page: 'Rigger 5.0 p.128', shape: 'insect', size: 'Tiny', weight: 0.2, legality: 'R', stats: 'Handl 4, Spd 3R, Acc 2, Bod 1, Arm 0, Pilot 3, Sen 3', vehicle: { handling: 4, speed: '3R', acceleration: 2, body: 1, armor: 0, pilot: 3, sensor: 3 } }),
|
|
318
|
+
row('sony-goldfish', 'Sony Goldfish', 'Drone', 500, 6, 'A toy that swims, watches, and costs less than dinner.', { page: 'Rigger 5.0 p.128', shape: 'insect', size: 'Tiny', weight: 0.2, stats: 'Handl 2/4, Spd 1W, Acc 1, Bod 0, Arm 0, Pilot 2, Sen 2', vehicle: { handling: '2/4', speed: '1W', acceleration: 1, body: 0, armor: 0, pilot: 2, sensor: 2 } }),
|
|
319
|
+
row('aerodesigns-condor', 'Aerodesigns Condor', 'Drone', 4000, 6, 'A glider that rides thermals all day and reports what it saw at dusk.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'Handl 2, Spd 0R, Acc 0, Bod 1(1), Arm 0, Pilot 2, Sen 4', vehicle: { handling: 2, speed: '0R', acceleration: 0, body: 1, armor: 0, pilot: 2, sensor: 4 } }),
|
|
320
|
+
row('aztechnology-hedgehog', 'Aztechnology Hedgehog', 'Drone', 8000, 8, 'Small, spiny, and disinclined to be picked up by anyone it does not know.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, legality: 'F', stats: 'Handl 3, Spd 1G, Acc 1, Bod 1(0), Arm 0, Pilot 4, Sen 3', vehicle: { handling: 3, speed: '1G', acceleration: 1, body: 1, armor: 0, pilot: 4, sensor: 3 } }),
|
|
321
|
+
row('cd-dragonfly', 'CD Dragonfly', 'Drone', 4000, 12, 'Four wings, one camera, and a knack for hovering where nobody thinks to look.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, legality: 'R', stats: 'Handl 4, Spd 2P, Acc 1, Bod 1(0), Arm 3, Pilot 3, Sen 2', vehicle: { handling: 4, speed: '2P', acceleration: 1, body: 1, armor: 3, pilot: 3, sensor: 2 } }),
|
|
322
|
+
row('festo-pigeon-2-0', 'Festo Pigeon 2.0', 'Drone', 3000, 8, 'Indistinguishable from the real thing until it does not fly away.', { page: 'Rigger 5.0 p.129', shape: 'insect', size: 'Tiny', weight: 0.5, stats: 'Handl 4, Spd 2P, Acc 1, Bod 1(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 4, speed: '2P', acceleration: 1, body: 1, armor: 0, pilot: 2, sensor: 2 } }),
|
|
323
|
+
row('horizon-cu-3', 'Horizon CU^3', 'Drone', 3000, 4, 'A cube that follows you and films you, which is apparently what people wanted.', { page: 'Rigger 5.0 p.130', shape: 'insect', size: 'Tiny', weight: 0.5, stats: 'Handl 4, Spd 1P, Acc 1, Bod 1(1), Arm 0, Pilot 2, Sen 3', vehicle: { handling: 4, speed: '1P', acceleration: 1, body: 1, armor: 0, pilot: 2, sensor: 3 } }),
|
|
324
|
+
row('renraku-gerbil', 'Renraku Gerbil', 'Drone', 2000, 4, 'Scurries under furniture and through ducts, cheerfully, for hours.', { page: 'Rigger 5.0 p.130', shape: 'insect', size: 'Tiny', weight: 0.5, stats: 'Handl 4/2, Spd 2G, Acc 1, Bod 1(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: '4/2', speed: '2G', acceleration: 1, body: 1, armor: 0, pilot: 2, sensor: 2 } }),
|
|
325
|
+
row('ares-sentry', 'Ares Sentry', 'Drone', 4000, 4, 'It does not move and it does not need to. It watches an arc and shoots what enters it.', { page: 'Rigger 5.0 p.130', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/--, Spd 1G, Acc 1, Bod 2(0), Arm 6, Pilot 3, Sen 2', vehicle: { handling: '4/--', speed: '1G', acceleration: 1, body: 2, armor: 6, pilot: 3, sensor: 2 } }),
|
|
326
|
+
row('c-b-smoke-generator', 'C-B Smoke Generator', 'Drone', 4000, 8, 'Fills a room with cover on request. Everything after that is your problem.', { page: 'Rigger 5.0 p.130', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 1G, Acc 1, Bod 2(0), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 3, speed: '1G', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
327
|
+
row('cd-wolfhound', 'CD Wolfhound', 'Drone', 30000, 12, 'A long-range hunter with a nose for signal and the patience to use it.', { page: 'Rigger 5.0 p.131', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2J, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 4', vehicle: { handling: 3, speed: '2J', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 4 } }),
|
|
328
|
+
row('evo-proletarian', 'Evo Proletarian', 'Drone', 4000, 6, 'The people\'s drone: cheap, rugged, and unbothered by dignity.', { page: 'Rigger 5.0 p.131', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4/2, Spd 2G, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: '4/2', speed: '2G', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
329
|
+
row('ferret-rpd-5x', 'Ferret RPD-5X', 'Drone', 4000, 8, 'A guard dog that fits under a desk and takes the job seriously.', { page: 'Rigger 5.0 p.132', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/2, Spd 1G, Acc 1, Bod 2(1), Arm 3, Pilot 3, Sen 3', vehicle: { handling: '4/2', speed: '1G', acceleration: 1, body: 2, armor: 3, pilot: 3, sensor: 3 } }),
|
|
330
|
+
row('festo-sewer-snake', 'Festo Sewer Snake', 'Drone', 6000, 10, 'Goes where the pipes go, which is everywhere nobody wants to follow.', { page: 'Rigger 5.0 p.132', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 1G/1W, Acc 1/1, Bod 2(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 3, speed: '1G/1W', acceleration: '1/1', body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
331
|
+
row('horizon-mini-zep', 'Horizon Mini-Zep', 'Drone', 2000, 4, 'A little airship that loiters over a crowd for as long as the crowd lasts.', { page: 'Rigger 5.0 p.131-132', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 2, Spd 0P, Acc 0, Bod 2(4), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 2, speed: '0P', acceleration: 0, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
332
|
+
row('knight-errant-p5', 'Knight Errant P5', 'Drone', 8000, 10, 'Police pursuit in a small package. It is faster than you and it does not tire.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/2, Spd 6G, Acc 2, Bod 2(1), Arm 0, Pilot 3, Sen 2', vehicle: { handling: '4/2', speed: '6G', acceleration: 2, body: 2, armor: 0, pilot: 3, sensor: 2 } }),
|
|
333
|
+
row('ls-castle-guard', 'LS Castle Guard', 'Drone', 10000, 8, 'Bolted to a wall with a firing arc and no imagination whatsoever.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl 4/2, Spd 1G, Acc 1, Bod 2(0), Arm 6, Pilot 3, Sen 2', vehicle: { handling: '4/2', speed: '1G', acceleration: 1, body: 2, armor: 6, pilot: 3, sensor: 2 } }),
|
|
334
|
+
row('mct-gun-turret', 'MCT Gun Turret', 'Drone', 4000, 4, 'It has no wheels because it is not going anywhere. Neither, ideally, are you.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, legality: 'R', stats: 'Handl --, Spd --, Acc --, Bod 2(0), Arm 6, Pilot 3, Sen 2', vehicle: { handling: '--', speed: '--', acceleration: '--', body: 2, armor: 6, pilot: 3, sensor: 2 } }),
|
|
335
|
+
row('mct-seven-wheelie', 'MCT Seven (Wheelie)', 'Drone', 2000, 0, 'The modular Seven on two wheels -- quick, cheap, and easily replaced.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4/2, Spd 2G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: '4/2', speed: '2G', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
336
|
+
row('mct-seven-treads', 'MCT Seven (Treads)', 'Drone', 2000, 2, 'The modular Seven on treads, for ground that argues back.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: 3, speed: '2G', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
337
|
+
row('mct-seven-dirty', 'MCT Seven (Dirty)', 'Drone', 2000, 2, 'The modular Seven built for mud, dust, and the places between them.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 2/4, Spd 2G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: '2/4', speed: '2G', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
338
|
+
row('mct-seven-quad', 'MCT Seven (Quad)', 'Drone', 2000, 4, 'The modular Seven on four legs, picking its way over what wheels refuse.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 1G, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: 4, speed: '1G', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
339
|
+
row('mct-seven-swims', 'MCT Seven (Swims)', 'Drone', 1000, 4, 'The modular Seven, waterproofed. The cheapest thing in the catalog that floats.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2W, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: 3, speed: '2W', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
340
|
+
row('mct-seven-hovers', 'MCT Seven (Hovers)', 'Drone', 4000, 6, 'The modular Seven on ducted fans, hovering a hand\'s width off the floor.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 1P, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: 4, speed: '1P', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
341
|
+
row('mct-seven-soars', 'MCT Seven (Soars)', 'Drone', 4000, 8, 'The modular Seven with a jet where its sense of proportion should be.', { page: 'Rigger 5.0 p.133', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 2J, Acc 1, Bod 1(3), Arm 0, Pilot 1, Sen 1', vehicle: { handling: 3, speed: '2J', acceleration: 1, body: 1, armor: 0, pilot: 1, sensor: 1 } }),
|
|
342
|
+
row('nn-prairie-dog', 'NN Prairie Dog', 'Drone', 8000, 12, 'Pops up, looks around, drops back down. Sold to people who need exactly that.', { page: 'Rigger 5.0 p.134', shape: 'frame', size: 'Small', weight: 4, legality: 'F', stats: 'Handl 2/4, Spd 2G, Acc 1, Bod 2(0), Arm 3, Pilot 3, Sen 4', vehicle: { handling: '2/4', speed: '2G', acceleration: 1, body: 2, armor: 3, pilot: 3, sensor: 4 } }),
|
|
343
|
+
row('p-w-sundowner', 'P&W Sundowner', 'Drone', 10000, 8, 'A high-altitude loiterer that watches a district until its batteries give out.', { page: 'Rigger 5.0 p.134', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 4P, Acc 1, Bod 2(0), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 3, speed: '4P', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
344
|
+
row('proteus-krake', 'Proteus \'Krake\'', 'Drone', 10000, 18, 'Built for deep water and pressure that would fold anything cheaper.', { page: 'Rigger 5.0 p.134', shape: 'frame', size: 'Small', weight: 4, legality: 'F', stats: 'Handl 5, Spd 3W, Acc 4, Bod 2(0), Arm 2, Pilot 4, Sen 3', vehicle: { handling: 5, speed: '3W', acceleration: 4, body: 2, armor: 2, pilot: 4, sensor: 3 } }),
|
|
345
|
+
row('s-t-bloodhound', 'S-T Bloodhound', 'Drone', 10000, 8, 'Follows a chemical trail long after a metahuman nose has given up.', { page: 'Rigger 5.0 p.136', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 1G, Acc 1, Bod 2(0), Arm 0, Pilot 2, Sen 4', vehicle: { handling: 3, speed: '1G', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 4 } }),
|
|
346
|
+
row('renraku-dove-4', 'Renraku Dove-4', 'Drone', 5000, 4, 'A courier that finds an address and does not ask what is in the package.', { page: 'Rigger 5.0 p.136', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 2P, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 4, speed: '2P', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
347
|
+
row('renraku-jardinero', 'Renraku Jardinero', 'Drone', 2000, 4, 'A gardener drone. It trims hedges, and it has seen everything in the garden.', { page: 'Rigger 5.0 p.136', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 2/4, Spd 1G, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: '2/4', speed: '1G', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
348
|
+
row('renraku-job-a-mat', 'Renraku Job-A-Mat', 'Drone', 3000, 4, 'A fixed servicer that does one job forever without complaint or curiosity.', { page: 'Rigger 5.0 p.137', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl --, Spd --, Acc --, Bod 2(2), Arm 0, Pilot 2, Sen 2', vehicle: { handling: '--', speed: '--', acceleration: '--', body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
349
|
+
row('renraku-pelican', 'Renraku Pelican', 'Drone', 4000, 2, 'Carries more than it looks like it should, then puts it down gently.', { page: 'Rigger 5.0 p.137', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 4, Spd 2P, Acc 1, Bod 2(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: 4, speed: '2P', acceleration: 1, body: 2, armor: 0, pilot: 2, sensor: 2 } }),
|
|
350
|
+
row('telestrian-shamus', 'Telestrian Shamus', 'Drone', 30000, 10, 'A private investigator with eight sensor channels and no conscience to trouble.', { page: 'Rigger 5.0 p.137', shape: 'frame', size: 'Small', weight: 4, stats: 'Handl 3, Spd 3G, Acc 1, Bod 4(0), Arm 4, Pilot 3, Sen 8', vehicle: { handling: 3, speed: '3G', acceleration: 1, body: 4, armor: 4, pilot: 3, sensor: 8 } }),
|
|
351
|
+
row('ares-cheetah', 'Ares Cheetah', 'Drone', 14000, 12, 'Fast, armoured, and pointed at whatever is running away.', { page: 'Rigger 5.0 p.138', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 4, Spd 6G, Acc 2, Bod 2(0), Arm 6, Pilot 3, Sen 2', vehicle: { handling: 4, speed: '6G', acceleration: 2, body: 2, armor: 6, pilot: 3, sensor: 2 } }),
|
|
352
|
+
row('evo-krokodil', 'Evo Krokodil', 'Drone', 12000, 8, 'Equally at home on a riverbank and in the river, and unpleasant on both.', { page: 'Rigger 5.0 p.139', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 3, Spd 2G/3W, Acc 1, Bod 3(1), Arm 6, Pilot 2, Sen 2', vehicle: { handling: 3, speed: '2G/3W', acceleration: 1, body: 3, armor: 6, pilot: 2, sensor: 2 } }),
|
|
353
|
+
row('f-b-kull', 'F-B Kull', 'Drone', 10000, 4, 'A flying brick with a payload bay, sold on capacity rather than charm.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, stats: 'Handl 3, Spd 4P, Acc 2, Bod 3(3), Arm 0, Pilot 3, Sen 2', vehicle: { handling: 3, speed: '4P', acceleration: 2, body: 3, armor: 0, pilot: 3, sensor: 2 } }),
|
|
354
|
+
row('mct-tunneler', 'MCT Tunneler', 'Drone', 10000, 8, 'Goes through walls the slow way, and does not care how long that takes.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 3, Spd 0P, Acc 0, Bod 3(2), Arm 6, Pilot 2, Sen 2', vehicle: { handling: 3, speed: '0P', acceleration: 0, body: 3, armor: 6, pilot: 2, sensor: 2 } }),
|
|
355
|
+
row('renraku-lebd-2', 'Renraku LEBD-2', 'Drone', 20000, 12, 'Law enforcement in drone form: armoured, watchful, and unmistakably official.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, legality: 'R', stats: 'Handl 4, Spd 2P, Acc 1, Bod 3(0), Arm 9, Pilot 4, Sen 4', vehicle: { handling: 4, speed: '2P', acceleration: 1, body: 3, armor: 9, pilot: 4, sensor: 4 } }),
|
|
356
|
+
row('transys-steed', 'Transys Steed', 'Drone', 4000, 2, 'A patient hauler that follows a rigger around like a well-trained animal.', { page: 'Rigger 5.0 p.140', shape: 'frame', size: 'Medium', weight: 20, stats: 'Handl 4/2, Spd 1G, Acc 1, Bod 3(1), Arm 0, Pilot 2, Sen 2', vehicle: { handling: '4/2', speed: '1G', acceleration: 1, body: 3, armor: 0, pilot: 2, sensor: 2 } }),
|
|
357
|
+
row('ares-matilda', 'Ares Matilda', 'Drone', 18000, 12, 'Slow, enormously tough, and built to still be there when the shooting stops.', { page: 'Rigger 5.0 p.141', shape: 'hull', size: 'Large', weight: 90, legality: 'R', stats: 'Handl 1, Spd 2G, Acc 1, Bod 8, Arm 8, Pilot 2, Sen 1', vehicle: { handling: 1, speed: '2G', acceleration: 1, body: 8, armor: 8, pilot: 2, sensor: 1 } }),
|
|
358
|
+
row('ares-mule', 'Ares Mule', 'Drone', 8000, 4, 'It carries what you cannot and complains less than anyone you could hire.', { page: 'Rigger 5.0 p.141', shape: 'hull', size: 'Large', weight: 90, stats: 'Handl 4, Spd 1G, Acc 1, Bod 4(3), Arm 6, Pilot 2, Sen 2', vehicle: { handling: 4, speed: '1G', acceleration: 1, body: 4, armor: 6, pilot: 2, sensor: 2 } }),
|
|
359
|
+
row('ares-paladin', 'Ares Paladin', 'Drone', 5000, 8, 'Armour eighteen deep on a chassis that costs less than the plating suggests.', { page: 'Rigger 5.0 p.142', shape: 'hull', size: 'Large', weight: 90, legality: 'R', stats: 'Handl 5, Spd 4G, Acc 1, Bod 5(0), Arm 18, Pilot 3, Sen 2', vehicle: { handling: 5, speed: '4G', acceleration: 1, body: 5, armor: 18, pilot: 3, sensor: 2 } }),
|
|
360
|
+
row('cc-medicart', 'CC \'MediCart\'', 'Drone', 10000, 6, 'A rolling clinic that reaches the wounded before the ambulance does.', { page: 'Rigger 5.0 p.142', shape: 'hull', size: 'Large', weight: 90, stats: 'Handl 5, Spd 5G, Acc 1, Bod 6(2), Arm 5, Pilot 4, Sen 4', vehicle: { handling: 5, speed: '5G', acceleration: 1, body: 6, armor: 5, pilot: 4, sensor: 4 } }),
|
|
361
|
+
row('gts-tower', 'GTS Tower', 'Drone', 10000, 8, 'A mast on wheels: raises a sensor package above the skyline and holds it there.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'Large', weight: 90, stats: 'Handl 2, Spd 1P, Acc 1, Bod 4(0), Arm 6, Pilot 2, Sen 2', vehicle: { handling: 2, speed: '1P', acceleration: 1, body: 4, armor: 6, pilot: 2, sensor: 2 } }),
|
|
362
|
+
row('s-k-neptune', 'S-K Neptune', 'Drone', 17500, 10, 'A submersible with a corporate budget behind it and depth to prove it.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'Large', weight: 90, legality: 'R', stats: 'Handl 2, Spd 3W, Acc 1, Bod 5(0), Arm 3, Pilot 4, Sen 3', vehicle: { handling: 2, speed: '3W', acceleration: 1, body: 5, armor: 3, pilot: 4, sensor: 3 } }),
|
|
363
|
+
row('mitsuhama-malakim', 'Mitsuhama Malakim', 'Drone', 40000, 20, 'An angel by name, a gunship by build, and forbidden almost everywhere.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'Large', weight: 90, legality: 'F', stats: 'Handl 3, Spd 6P, Acc 2, Bod 4(0), Arm 9, Pilot 4, Sen 4', vehicle: { handling: 3, speed: '6P', acceleration: 2, body: 4, armor: 9, pilot: 4, sensor: 4 } }),
|
|
364
|
+
row('ares-kn-y2-deimos', 'Ares KN-Y2 (Deimos)', 'Drone', 220000, 20, 'A walking weapons platform named for a moon, and about as approachable.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 2G, Acc 1, Bod 6(0), Arm 18, Pilot 5, Sen 3', vehicle: { handling: 3, speed: '2G', acceleration: 1, body: 6, armor: 18, pilot: 5, sensor: 3 } }),
|
|
365
|
+
row('ares-kn-y4-eris', 'Ares KN-Y4 (Eris)', 'Drone', 270000, 24, 'The Deimos\'s bigger sibling: more of everything, including trouble.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 2G, Acc 1, Bod 6(0), Arm 18, Pilot 5, Sen 3', vehicle: { handling: 3, speed: '2G', acceleration: 1, body: 6, armor: 18, pilot: 5, sensor: 3 } }),
|
|
366
|
+
row('ares-kn-y1-phobos', 'Ares KN-Y1 (Phobos)', 'Drone', 250000, 16, 'The third Ares moon: same chassis, same eighteen points of plate, a slightly kinder price.', { page: 'Rigger 5.0 p.143', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 2G, Acc 1, Bod 6(0), Arm 18, Pilot 5, Sen 3', vehicle: { handling: 3, speed: '2G', acceleration: 1, body: 6, armor: 18, pilot: 5, sensor: 3 } }),
|
|
367
|
+
row('mesametric-kodiak', 'Mesametric Kodiak', 'Drone', 40000, 12, 'A bear-sized hauler that goes over terrain rather than around it.', { page: 'Rigger 5.0 p.145', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'R', stats: 'Handl 2/4, Spd 2G, Acc 1, Bod 6(2), Arm 12, Pilot 2, Sen 2', vehicle: { handling: '2/4', speed: '2G', acceleration: 1, body: 6, armor: 12, pilot: 2, sensor: 2 } }),
|
|
368
|
+
row('neonet-avenging-angel', 'NeoNET Avenging Angel', 'Drone', 1000000, 40, 'A million nuyen of jet-driven opinion. Availability 40 is not a typo.', { page: 'Rigger 5.0 p.145', shape: 'hull', size: 'VeryLarge', weight: 400, legality: 'F', stats: 'Handl 3, Spd 6J, Acc 2, Bod 6(0), Arm 12, Pilot 6, Sen 6', vehicle: { handling: 3, speed: '6J', acceleration: 2, body: 6, armor: 12, pilot: 6, sensor: 6 } }),
|
|
369
|
+
row('ares-garuda', 'Ares \'Garuda\'', 'Drone', 8500, 20, 'A drone that is also a missile, which resolves any question about its lifespan.', { page: 'Rigger 5.0 p.149', shape: 'missile', size: 'Small', weight: 15, legality: 'F', stats: 'Handl 6, Spd 3J/6J, Acc 2/4, Bod 2, Arm 2, Pilot 4, Sen 3', vehicle: { handling: 6, speed: '3J/6J', acceleration: '2/4', body: 2, armor: 2, pilot: 4, sensor: 3 } }),
|
|
365
370
|
// The two microdrones that complete the p.466 table. The other nine
|
|
366
371
|
// rows were already held -- see the PR: nine of eleven, and the
|
|
367
372
|
// 'full drone list' request resolved to two rows plus one wrong stat.
|
|
368
|
-
row('shiawase-kanmushi', 'Shiawase Kanmushi', 'Drone', 1000, 8, 'A beetle the size of a thumbnail that walks up walls and listens.', { page: 'p.466', shape: 'insect', size: 'Tiny', weight: 0.2, color: 'chitin brown', stats: 'Handl 4, Spd 2, Acc 1, Bod 0, Arm 0, Pilot 3, Sen 3' }),
|
|
369
|
-
row('sb-microskimmer', 'S-B Microskimmer', 'Drone', 1000, 6, 'A saucer the width of a hand that hovers where nobody looks up.', { page: 'p.466', shape: 'disc', size: 'Tiny', weight: 0.3, color: 'dull grey', stats: 'Handl 3, Spd 3, Acc 1, Bod 0, Arm 0, Pilot 3, Sen 3' }),
|
|
370
|
-
row('fly-spy', 'MCT Fly-Spy', 'Drone', 2000, 8, 'A palm-sized dragonfly with a camera where its soul should be.', { page: 'p.466', shape: 'insect', size: 'Tiny', weight: 0.4, color: 'iridescent green', stats: 'Handl 4, Spd 3, Acc 2, Bod 1, Arm 0, Pilot 3, Sen 3' }),
|
|
371
|
-
row('horizon-flying-eye', 'Horizon Flying Eye', 'Drone', 2000, 8, 'A news drone that never asks whose story it is filming.', { page: 'p.466', shape: 'disc', size: 'Tiny', weight: 0.5, color: 'white', stats: 'Handl 4, Spd 3, Acc 2, Bod 1, Arm 0, Pilot 3, Sen 3' }),
|
|
372
|
-
row('aztechnology-crawler', 'Aztechnology Crawler', 'Drone', 4000, 4, 'A walker that goes where wheels give up and stairs begin.', { page: 'p.466', shape: 'walker', size: 'Small', weight: 8, rating: 'Standard', stats: 'Handl 4, Spd 3, Acc 1, Bod 3, Arm 3, Pilot 4, Sen 3' }),
|
|
373
|
-
row('ares-duelist', 'Ares Duelist', 'Drone', 4500, 5, 'A bodyguard drone with a monofilament arm and no sense of humor.', { page: 'p.466', shape: 'walker', size: 'Small', weight: 10, rating: 'Standard', legality: 'R', stats: 'Handl 3, Spd 3, Acc 1, Bod 4, Arm 4, Pilot 3, Sen 3' }),
|
|
374
|
-
row('gm-nissan-doberman', 'GM-Nissan Doberman', 'Drone', 5000, 4, 'A tracked weapons platform the size of a dog, with a dog\'s loyalty.', { page: 'p.466', shape: 'tracked', size: 'Medium', weight: 20, rating: 'Rare', legality: 'R', stats: 'Handl 5, Spd 3, Acc 1, Bod 4, Arm 4, Pilot 3, Sen 3, weapon mount' }),
|
|
375
|
-
row('mct-nissan-roto-drone', 'MCT-Nissan Roto-Drone', 'Drone', 5000, 6, 'The workhorse quadrotor: cargo, cameras, or something with a barrel.', { page: 'p.466', shape: 'rotary', size: 'Medium', weight: 15, rating: 'Rare', stats: 'Handl 4, Spd 4, Acc 2, Bod 4, Arm 4, Pilot 3, Sen 3, weapon mount' }),
|
|
376
|
-
row('cd-dalmatian', 'Cyberspace Designs Dalmatian', 'Drone', 10000, 6, 'A VTOL that carries a body -- yours, ideally still breathing.', { page: 'p.466', shape: 'vtol', size: 'Medium', weight: 25, rating: 'Rare', legality: 'R', stats: 'Handl 5, Spd 5, Acc 3, Bod 5, Arm 5, Pilot 3, Sen 3' }),
|
|
377
|
-
row('lockheed-optic-x2', 'Lockheed Optic-X2', 'Drone', 21000, 10, 'A high-altitude eye that watches a whole district and never blinks.', { page: 'p.466', shape: 'vstol', size: 'Medium', weight: 12, rating: 'Legendary', stats: 'Handl 4, Spd 4, Acc 3, Bod 2, Arm 2, Pilot 3, Sen 3' }),
|
|
378
|
-
row('steel-lynx', 'Steel Lynx', 'Drone', 25000, 10, 'A rolling gun emplacement. When it arrives, the run is already loud.', { page: 'p.466', shape: 'wheeled', size: 'Large', weight: 120, rating: 'Legendary', legality: 'R', stats: 'Handl 5, Spd 4, Acc 2, Bod 6, Arm 12, Pilot 3, Sen 3, heavy weapon mount' }),
|
|
373
|
+
row('shiawase-kanmushi', 'Shiawase Kanmushi', 'Drone', 1000, 8, 'A beetle the size of a thumbnail that walks up walls and listens.', { page: 'p.466', shape: 'insect', size: 'Tiny', weight: 0.2, color: 'chitin brown', stats: 'Handl 4, Spd 2, Acc 1, Bod 0, Arm 0, Pilot 3, Sen 3', vehicle: { handling: 4, speed: 2, acceleration: 1, body: 0, armor: 0, pilot: 3, sensor: 3 } }),
|
|
374
|
+
row('sb-microskimmer', 'S-B Microskimmer', 'Drone', 1000, 6, 'A saucer the width of a hand that hovers where nobody looks up.', { page: 'p.466', shape: 'disc', size: 'Tiny', weight: 0.3, color: 'dull grey', stats: 'Handl 3, Spd 3, Acc 1, Bod 0, Arm 0, Pilot 3, Sen 3', vehicle: { handling: 3, speed: 3, acceleration: 1, body: 0, armor: 0, pilot: 3, sensor: 3 } }),
|
|
375
|
+
row('fly-spy', 'MCT Fly-Spy', 'Drone', 2000, 8, 'A palm-sized dragonfly with a camera where its soul should be.', { page: 'p.466', shape: 'insect', size: 'Tiny', weight: 0.4, color: 'iridescent green', stats: 'Handl 4, Spd 3, Acc 2, Bod 1, Arm 0, Pilot 3, Sen 3', vehicle: { handling: 4, speed: 3, acceleration: 2, body: 1, armor: 0, pilot: 3, sensor: 3 } }),
|
|
376
|
+
row('horizon-flying-eye', 'Horizon Flying Eye', 'Drone', 2000, 8, 'A news drone that never asks whose story it is filming.', { page: 'p.466', shape: 'disc', size: 'Tiny', weight: 0.5, color: 'white', stats: 'Handl 4, Spd 3, Acc 2, Bod 1, Arm 0, Pilot 3, Sen 3', vehicle: { handling: 4, speed: 3, acceleration: 2, body: 1, armor: 0, pilot: 3, sensor: 3 } }),
|
|
377
|
+
row('aztechnology-crawler', 'Aztechnology Crawler', 'Drone', 4000, 4, 'A walker that goes where wheels give up and stairs begin.', { page: 'p.466', shape: 'walker', size: 'Small', weight: 8, rating: 'Standard', stats: 'Handl 4, Spd 3, Acc 1, Bod 3, Arm 3, Pilot 4, Sen 3', vehicle: { handling: 4, speed: 3, acceleration: 1, body: 3, armor: 3, pilot: 4, sensor: 3 } }),
|
|
378
|
+
row('ares-duelist', 'Ares Duelist', 'Drone', 4500, 5, 'A bodyguard drone with a monofilament arm and no sense of humor.', { page: 'p.466', shape: 'walker', size: 'Small', weight: 10, rating: 'Standard', legality: 'R', stats: 'Handl 3, Spd 3, Acc 1, Bod 4, Arm 4, Pilot 3, Sen 3', vehicle: { handling: 3, speed: 3, acceleration: 1, body: 4, armor: 4, pilot: 3, sensor: 3 } }),
|
|
379
|
+
row('gm-nissan-doberman', 'GM-Nissan Doberman', 'Drone', 5000, 4, 'A tracked weapons platform the size of a dog, with a dog\'s loyalty.', { page: 'p.466', shape: 'tracked', size: 'Medium', weight: 20, rating: 'Rare', legality: 'R', stats: 'Handl 5, Spd 3, Acc 1, Bod 4, Arm 4, Pilot 3, Sen 3, weapon mount', vehicle: { handling: 5, speed: 3, acceleration: 1, body: 4, armor: 4, pilot: 3, sensor: 3, mount: 'standard' } }),
|
|
380
|
+
row('mct-nissan-roto-drone', 'MCT-Nissan Roto-Drone', 'Drone', 5000, 6, 'The workhorse quadrotor: cargo, cameras, or something with a barrel.', { page: 'p.466', shape: 'rotary', size: 'Medium', weight: 15, rating: 'Rare', stats: 'Handl 4, Spd 4, Acc 2, Bod 4, Arm 4, Pilot 3, Sen 3, weapon mount', vehicle: { handling: 4, speed: 4, acceleration: 2, body: 4, armor: 4, pilot: 3, sensor: 3, mount: 'standard' } }),
|
|
381
|
+
row('cd-dalmatian', 'Cyberspace Designs Dalmatian', 'Drone', 10000, 6, 'A VTOL that carries a body -- yours, ideally still breathing.', { page: 'p.466', shape: 'vtol', size: 'Medium', weight: 25, rating: 'Rare', legality: 'R', stats: 'Handl 5, Spd 5, Acc 3, Bod 5, Arm 5, Pilot 3, Sen 3', vehicle: { handling: 5, speed: 5, acceleration: 3, body: 5, armor: 5, pilot: 3, sensor: 3 } }),
|
|
382
|
+
row('lockheed-optic-x2', 'Lockheed Optic-X2', 'Drone', 21000, 10, 'A high-altitude eye that watches a whole district and never blinks.', { page: 'p.466', shape: 'vstol', size: 'Medium', weight: 12, rating: 'Legendary', stats: 'Handl 4, Spd 4, Acc 3, Bod 2, Arm 2, Pilot 3, Sen 3', vehicle: { handling: 4, speed: 4, acceleration: 3, body: 2, armor: 2, pilot: 3, sensor: 3 } }),
|
|
383
|
+
row('steel-lynx', 'Steel Lynx', 'Drone', 25000, 10, 'A rolling gun emplacement. When it arrives, the run is already loud.', { page: 'p.466', shape: 'wheeled', size: 'Large', weight: 120, rating: 'Legendary', legality: 'R', stats: 'Handl 5, Spd 4, Acc 2, Bod 6, Arm 12, Pilot 3, Sen 3, heavy weapon mount', vehicle: { handling: 5, speed: 4, acceleration: 2, body: 6, armor: 12, pilot: 3, sensor: 3, mount: 'heavy' } }),
|
|
379
384
|
// ---- Identity, paper, and credit (p.443: fake SIN 2,500x per rating;
|
|
380
385
|
// a KE checkpoint's scanner beats the rating to BURN the fake -- see
|
|
381
386
|
// game.ts checkpointOnRideHome) ----
|
|
382
|
-
row('fake-sin-2', 'Fake SIN (Rating 2)', 'FakeSIN', 5000, 6, 'A life that holds up to a doorman scanner -- not to anyone paid to look twice.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, legality: 'F', stats: 'Rating 2: rating x 2,500 nuyen, avail (rating x 3)F' }),
|
|
383
|
-
row('fake-sin-4', 'Fake SIN (Rating 4)', 'FakeSIN', 10000, 12, 'A properly built identity: employment history, a tax trail, a face that checks out.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, legality: 'F', stats: 'Rating 4: rating x 2,500 nuyen, avail (rating x 3)F' }),
|
|
384
|
-
row('fake-sin-6', 'Fake SIN (Rating 6)', 'FakeSIN', 15000, 18, 'Artisan work -- a person who has always existed, right up until the day you burn them.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, rating: 'Rare', legality: 'F', stats: 'Rating 6: rating x 2,500 nuyen, avail (rating x 3)F' }),
|
|
385
|
-
row('fake-license-4', 'Fake License (Rating 4)', 'License', 800, 12, 'Paper that says the gun on your hip is a hobby.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, legality: 'F', stats: 'Rating 4: rating x 200 nuyen, avail (rating x 3)F' }),
|
|
387
|
+
row('fake-sin-2', 'Fake SIN (Rating 2)', 'FakeSIN', 5000, 6, 'A life that holds up to a doorman scanner -- not to anyone paid to look twice.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, legality: 'F', stats: 'Rating 2: rating x 2,500 nuyen, avail (rating x 3)F', ratingValue: 2 }),
|
|
388
|
+
row('fake-sin-4', 'Fake SIN (Rating 4)', 'FakeSIN', 10000, 12, 'A properly built identity: employment history, a tax trail, a face that checks out.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, legality: 'F', stats: 'Rating 4: rating x 2,500 nuyen, avail (rating x 3)F', ratingValue: 4 }),
|
|
389
|
+
row('fake-sin-6', 'Fake SIN (Rating 6)', 'FakeSIN', 15000, 18, 'Artisan work -- a person who has always existed, right up until the day you burn them.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, rating: 'Rare', legality: 'F', stats: 'Rating 6: rating x 2,500 nuyen, avail (rating x 3)F', ratingValue: 6 }),
|
|
390
|
+
row('fake-license-4', 'Fake License (Rating 4)', 'License', 800, 12, 'Paper that says the gun on your hip is a hobby.', { page: 'p.443', shape: 'credential', size: 'Tiny', weight: 0, legality: 'F', stats: 'Rating 4: rating x 200 nuyen, avail (rating x 3)F', ratingValue: 4 }),
|
|
386
391
|
row('credstick-silver', 'Certified Credstick (Silver)', 'Credstick', 20, 0, 'Anonymous money in a stick. Holds 20,000 and asks nothing.', { page: 'p.443', shape: 'stick', size: 'Tiny', weight: 0.1, color: 'silver', stats: 'Max 20,000 nuyen' }),
|
|
387
392
|
row('credstick-gold', 'Certified Credstick (Gold)', 'Credstick', 100, 5, 'Holds a hundred thousand. Carrying one says something about your night.', { page: 'p.443', shape: 'stick', size: 'Tiny', weight: 0.1, color: 'gold', stats: 'Max 100,000 nuyen' }),
|
|
388
393
|
row('credstick-platinum', 'Certified Credstick (Platinum)', 'Credstick', 500, 10, 'Half a million, certified. People have died for the empty ones.', { page: 'p.443', shape: 'stick', size: 'Tiny', weight: 0.1, color: 'platinum', rating: 'Standard', stats: 'Max 500,000 nuyen' }),
|
|
389
394
|
row('credstick-ebony', 'Certified Credstick (Ebony)', 'Credstick', 1000, 20, 'A million nuyen and a very short list of people who own one.', { page: 'p.443', shape: 'stick', size: 'Tiny', weight: 0.1, color: 'ebony', rating: 'Rare', stats: 'Max 1,000,000 nuyen' }),
|
|
390
395
|
];
|
|
396
|
+
/** THE WHOLE SEED, every kind. Gear today; qualities, spells, augmentations
|
|
397
|
+
* and metatypes join it in v14. The loader (utilities/catalog.ts) weighs
|
|
398
|
+
* THIS against the server and the cache. */
|
|
399
|
+
export const CATALOG_ROWS = CATALOG_ITEMS;
|
|
391
400
|
//# sourceMappingURL=catalog-data.js.map
|