@maka/maka-cli 5.167.0 → 5.170.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.
@@ -5,53 +5,95 @@ import { augFor } from './utilities/catalog.js';
5
5
  import { creationSplit, getQuality, qualityKarma, CREATION_KARMA, KARMA_CARRYOVER_MAX, KARMA_TO_NUYEN_MAX, KARMA_NUYEN_RATE, HELD_NUYEN_MAX } from './qualities.js';
6
6
  import { catalogGearDef, catalogRowFor } from './utilities/catalog.js';
7
7
  export const ARCHETYPES = [
8
+ // EVERY SPREAD BELOW IS A COMPLETE PRIORITY BUILD (user, 2026-09-11:
9
+ // "when a user chooses a premade archetype, they shouldn't need to
10
+ // figure out what's wrong with it -- it should just work"). Read each
11
+ // against its row on SR5 p.65: attribute points spent exactly, the
12
+ // skills column's individual points AND group points spent exactly
13
+ // (skillGroups), the metatype column's special points spent exactly
14
+ // (Edge above 2, Magic/Resonance above the Magic column's offer), the
15
+ // kit within Resources plus converted karma with no more than the
16
+ // 5,000 a runner may hold left over (p.94), essence above zero, and
17
+ // nothing the site's validator refuses. archetype-priorities.test.ts
18
+ // pins the arithmetic; maka-cli.com's chargen-archetypes suite runs the
19
+ // real validator over every one. Human special points: A 9, B 7, C 5,
20
+ // D 3, E 1. Attribute points: A 24, B 20, C 16. Skills: A 46/10,
21
+ // B 36/5, C 28/2, E 18/0.
8
22
  {
9
- // No qualities at all IS the identity: nothing bought, nothing owed --
10
- // the untouched 25 ledger splits per RAW into 7 karma + 20,000 nuyen.
23
+ // The generalist. Metatype C's five special points have exactly one
24
+ // home on a mundane human, and it is Edge 7 (p.65-66: unspent
25
+ // special points are lost).
11
26
  name: 'Runner',
12
27
  priorities: { metatype: 'C', attributes: 'A', magic: 'E', skills: 'B', resources: 'D' },
13
28
  description: 'The balanced default: decent at everything, spectacular at nothing.',
14
- combat: { body: 4, agility: 4, reaction: 4, combatSkill: 3, strength: 4, willpower: 4, logic: 4, intuition: 4, charisma: 4, edge: 3, magic: 0,
15
- skills: { automatics: 3, pistols: 3, longarms: 3, blades: 2, unarmed: 3, sneaking: 3, perception: 4, gymnastics: 2, running: 2, swimming: 2, hacking: 1, locksmith: 1, negotiation: 3, con: 1, etiquette: 1, 'first-aid': 2 } },
29
+ combat: { body: 4, agility: 4, reaction: 4, combatSkill: 3, strength: 4, willpower: 4, logic: 4, intuition: 4, charisma: 4, edge: 7, magic: 0,
30
+ // Firearms 3 and Athletics 2 are the B column's five group points;
31
+ // the 36 individual points buy the rest.
32
+ skills: { automatics: 3, pistols: 3, longarms: 3, gymnastics: 2, running: 2, swimming: 2, blades: 3, unarmed: 4, sneaking: 4, perception: 5, hacking: 2, locksmith: 3, negotiation: 4, con: 2, etiquette: 2, 'first-aid': 3, intimidation: 2, computer: 2 } },
33
+ skillGroups: { firearms: 3, athletics: 2 },
16
34
  // Nothing owed and nothing exotic -- the generalist spends the ledger
17
- // on noticing things and shrugging off wounds.
35
+ // on noticing things and shrugging off wounds. Ledger 25 - 8 = 17 ->
36
+ // 7 karma + 20,000 nuyen; Resources D 50,000 + 20,000 = 70,000.
18
37
  qualities: ['perceptive', 'quick-healer'],
38
+ // The Synaptic Booster IS the reflex 'ware: Reaction Enhancers cannot
39
+ // sit beside it (p.455: "incompatible with all other enhancements to
40
+ // Reaction"; p.461), and the pair shipped together until 2026-09-11.
41
+ // A Synthacardium takes the vacated slot -- the generalist runs.
19
42
  augs: [
20
- 'datajack', 'smartlink', 'reaction-enhancers-1', 'synaptic-booster',
43
+ 'datajack', 'smartlink', 'synaptic-booster', 'synthacardium-1',
21
44
  'bone-lacing', 'orthoskin-2', 'cyberears'
22
45
  ],
23
46
  gearSlugs: [
24
47
  'ares-predator-v', 'quick-draw-holster', 'spare-clip', 'regular-ammo',
25
- 'gel-rounds', 'defiance-t-250', 'ares-alpha', 'apds', 'armor-jacket', 'combat-boots',
26
- 'erika-elite', 'fake-sin-4', 'fake-license-4', 'medkit-3', 'trauma-patch',
27
- 'stim-patch', 'ear-buds', 'glasses', 'microtransceiver', 'lockpick-set',
48
+ 'gel-rounds', 'defiance-t-250', 'ares-alpha', 'apds', 'armor-jacket', 'armored-pants',
49
+ 'combat-boots', 'helmet', 'erika-elite', 'fake-sin-4', 'fake-license-4', 'medkit-6',
50
+ 'trauma-patch', 'stim-patch', 'ear-buds', 'glasses', 'microtransceiver', 'lockpick-set',
28
51
  'tool-kit', 'climbing-gear', 'stealth-rope', 'survival-kit',
29
52
  'respirator-4', 'smoke-grenade', 'flash-bang', 'tag-eraser',
30
53
  'white-noise-generator', 'mapsoft', 'credstick-silver'
31
54
  ],
32
55
  },
33
56
  {
57
+ // RE-LETTERED 2026-09-11 (user ruling): Metatype D and Resources C.
58
+ // At Metatype C a mundane human's only use for five special points
59
+ // was Edge 7; at D the three go to Edge 5 and the C buys the chrome
60
+ // and the arsenal a samurai is actually made of -- 140,000 against
61
+ // the 50,000 that used to stop at Wired Reflexes 1.
34
62
  name: 'Street Samurai',
35
- priorities: { metatype: 'C', attributes: 'B', magic: 'E', skills: 'A', resources: 'D' },
63
+ priorities: { metatype: 'D', attributes: 'B', magic: 'E', skills: 'A', resources: 'C' },
36
64
  description: 'Chrome and trigger discipline. Hits hard, soaks harder, thinks later.',
37
- combat: { body: 5, agility: 5, reaction: 4, combatSkill: 5, strength: 4, willpower: 3, logic: 2, intuition: 3, charisma: 2, edge: 2, magic: 0,
38
- skills: { automatics: 6, pistols: 6, longarms: 6, blades: 4, unarmed: 5, gymnastics: 4, running: 3, swimming: 3, perception: 3, intimidation: 4, sneaking: 2 } },
65
+ combat: { body: 5, agility: 5, reaction: 4, combatSkill: 5, strength: 4, willpower: 3, logic: 2, intuition: 3, charisma: 2, edge: 5, magic: 0,
66
+ // Firearms 6 and Close Combat 4 are the A column's ten group
67
+ // points; 46 individual points buy the rest.
68
+ skills: { automatics: 6, pistols: 6, longarms: 6, blades: 4, unarmed: 4, clubs: 4, gymnastics: 5, running: 4, swimming: 3, perception: 5, intimidation: 5, sneaking: 4, 'first-aid': 3, 'heavy-weapons': 4, 'throwing-weapons': 3, locksmith: 2, etiquette: 2, negotiation: 2, con: 2, computer: 2 } },
69
+ skillGroups: { firearms: 6, 'close-combat': 4 },
39
70
  // Built to take a beating; the record says the beatings went both
40
- // ways. Ledger 25 - 16 + 10 = 19 -> 7 karma + 20,000 nuyen.
41
- qualities: ['toughness', 'high-pain-tolerance', 'quick-healer', 'sinner-criminal'],
42
- // The book's own sam (p.112): the Predator with its smartgun, and a
43
- // lined coat -- Armor 9 under the street jacket.
71
+ // ways. Ledger 25 - 26 + 10 = 9 -> 7 karma + 4,000 nuyen; Resources
72
+ // C 140,000 + 4,000 = 144,000.
73
+ qualities: ['toughness', 'high-pain-tolerance', 'quick-healer', 'natural-athlete', 'sinner-criminal'],
74
+ // Wired Reflexes 2 (3 essence) is the spine of the build; everything
75
+ // else is priced against the half-point of essence it leaves. Dermal
76
+ // plating went -- with WR2 it would have taken the last of the meat.
44
77
  augs: [
45
- 'wired-reflexes-1', 'smartlink', 'bone-lacing', 'dermal-plating-2',
46
- 'platelet-factories', 'cybereyes', 'vision-enhancement-2'
78
+ 'wired-reflexes-2', 'smartlink', 'bone-lacing', 'platelet-factories',
79
+ 'cybereyes', 'vision-enhancement-2', 'muscle-toner-2', 'synthacardium-1'
47
80
  ],
48
81
  gearSlugs: [
49
- 'ares-predator-v', 'quick-draw-holster', 'spare-clip', 'regular-ammo',
50
- 'apds', 'ares-alpha', 'combat-knife', 'lined-coat', 'armored-pants',
51
- 'combat-boots', 'helmet', 'hermes-ikon', 'fake-sin-4', 'fake-license-4',
52
- 'medkit-6', 'trauma-patch', 'stim-patch', 'ear-buds', 'glasses',
53
- 'microtransceiver', 'white-noise-generator', 'survival-kit',
54
- 'credstick-silver'
82
+ 'ares-predator-v', 'quick-draw-holster', 'ares-alpha', 'ares-desert-strike',
83
+ 'katana', 'combat-knife', 'monofilament-whip',
84
+ 'spare-clip', 'spare-clip', 'spare-clip', 'spare-clip',
85
+ 'regular-ammo', 'regular-ammo', 'regular-ammo', 'apds', 'apds', 'apds',
86
+ 'explosive-rounds', 'explosive-rounds', 'gel-rounds',
87
+ 'frag-grenade', 'frag-grenade', 'frag-grenade', 'he-grenade', 'he-grenade',
88
+ 'smoke-grenade', 'smoke-grenade', 'flash-bang', 'flash-bang',
89
+ 'lined-coat', 'armored-pants', 'combat-boots', 'full-helmet', 'forearm-guards',
90
+ 'transys-avalon', 'agent-rating-4', 'fake-sin-4', 'fake-license-4',
91
+ 'maglock-passkey-4', 'cellular-glove-molder-2', 'microtransceiver',
92
+ 'white-noise-generator', 'ear-buds', 'glasses', 'goggles',
93
+ 'thermographic-vision-mod', 'low-light-vision-mod', 'binoculars', 'laser-sight',
94
+ 'survival-kit', 'medkit-6', 'trauma-patch', 'trauma-patch', 'trauma-patch',
95
+ 'stim-patch', 'stim-patch', 'stim-patch', 'antidote-patch-4',
96
+ 'sensor-array-4', 'mct-gun-turret', 'credstick-silver'
55
97
  ],
56
98
  },
57
99
  {
@@ -61,53 +103,62 @@ export const ARCHETYPES = [
61
103
  name: 'Adept',
62
104
  priorities: { metatype: 'D', attributes: 'B', magic: 'C', skills: 'A', resources: 'E' },
63
105
  description: 'Magic as muscle: faster than chrome, no spells, no projection -- the body IS the focus.',
64
- // CHOSEN POWERS (regen 2026-09-01): Magic 5 = 5 free Power Points
65
- // (p.69), spent to the last half-point -- Improved Reflexes 2 (2.5) +
66
- // Improved Ability (Combat) 2 (1.0) + Killing Hands (0.5) + Combat
67
- // Sense 1 (0.5) + Mystic Armor 1 (0.5). Richer than the compressed
68
- // floor(5/2) bonus this replaces: real initiative, physical fists,
69
- // armor that was never worn.
70
- combat: { body: 4, agility: 4, reaction: 4, combatSkill: 4, strength: 4, willpower: 4, logic: 2, intuition: 3, charisma: 3, edge: 2, magic: 5, adept: true,
71
- adeptPowers: { 'improved-reflexes': 2, 'improved-ability-combat': 2, 'killing-hands': 1, 'combat-sense': 1, 'mystic-armor': 1 },
72
- skills: { blades: 6, unarmed: 5, gymnastics: 5, running: 5, swimming: 5, sneaking: 4, perception: 3, assensing: 3, intimidation: 2, automatics: 2, pistols: 2, longarms: 2 } },
106
+ // Magic C offers an adept 4; Metatype D's three special points buy
107
+ // Magic 6 (two) and Edge 3 (one). Magic 6 = 6 Power Points (p.308),
108
+ // spent to the last half-point: Improved Reflexes 2 (2.5) + Improved
109
+ // Ability (Combat) 2 (1.0) + Killing Hands (0.5) + Combat Sense 2
110
+ // (1.0) + Mystic Armor 2 (1.0).
111
+ combat: { body: 4, agility: 4, reaction: 4, combatSkill: 4, strength: 4, willpower: 4, logic: 2, intuition: 3, charisma: 3, edge: 3, magic: 6, adept: true,
112
+ adeptPowers: { 'improved-reflexes': 2, 'improved-ability-combat': 2, 'killing-hands': 1, 'combat-sense': 2, 'mystic-armor': 2 },
113
+ // Close Combat 6 and Athletics 4 are the ten group points.
114
+ skills: { blades: 6, unarmed: 6, clubs: 6, gymnastics: 4, running: 4, swimming: 4, sneaking: 6, perception: 5, assensing: 4, intimidation: 3, automatics: 3, pistols: 4, longarms: 2, 'throwing-weapons': 4, archery: 3, 'free-fall': 2, palming: 2, disguise: 2, tracking: 2, survival: 2, 'first-aid': 2 } },
115
+ skillGroups: { 'close-combat': 6, athletics: 4 },
73
116
  // The body IS the focus -- and it rejects the sim the way it rejects
74
- // chrome. Ledger 25 - 14 + 5 = 16 -> 7 karma + 18,000 nuyen.
117
+ // chrome. Ledger 25 - 14 + 5 = 16 -> 7 karma + 18,000 nuyen;
118
+ // Resources E 6,000 + 18,000 = 24,000.
75
119
  qualities: ['catlike', 'natural-athlete', 'simsense-vertigo'],
76
120
  // The katana is the p.423 row (Acc 7, STR+3, AP -3); the bonded weapon
77
- // focus rides beside it as the Force 1 row.
121
+ // focus rides beside it as the Force 1 row. Knives to throw and a
122
+ // crossbow for the skills the spread now carries.
78
123
  gearSlugs: [
79
- 'katana', 'weapon-focus-1', 'qi-focus-1', 'combat-knife', 'armor-jacket',
80
- 'combat-boots', 'fake-sin-2', 'meta-link', 'medkit-3', 'trauma-patch',
81
- 'stim-patch', 'ear-buds', 'glasses', 'climbing-gear', 'stealth-rope',
82
- 'gecko-tape-gloves', 'survival-kit', 'credstick-silver'
124
+ 'katana', 'weapon-focus-1', 'qi-focus-1', 'combat-knife', 'throwing-knives',
125
+ 'medium-crossbow', 'armor-jacket', 'combat-boots', 'fake-sin-2', 'meta-link',
126
+ 'medkit-3', 'trauma-patch', 'stim-patch', 'ear-buds', 'glasses', 'climbing-gear',
127
+ 'stealth-rope', 'gecko-tape-gloves', 'survival-kit', 'credstick-silver'
83
128
  ],
84
129
  },
85
130
  {
86
- // THE MYSTIC ADEPT (regen 2026-09-01, SR5 p.69-70): full Magic off
87
- // the column, never split -- it prices the spellbook AND caps the
88
- // Power Points, which are BOUGHT from the creation ledger at 5 karma
89
- // each. Casts and summons like a mage, carries bought powers in the
90
- // body, and NEVER astrally projects -- the one place the path sides
91
- // with the adept.
131
+ // THE MYSTIC ADEPT (SR5 p.69-70): full Magic off the column, never
132
+ // split -- it prices the spellbook AND caps the Power Points, which
133
+ // are BOUGHT from the creation ledger at 5 karma each. Casts and
134
+ // summons like a mage, carries bought powers in the body, and NEVER
135
+ // astrally projects -- the one place the path sides with the adept.
92
136
  name: 'Mystic Adept',
93
137
  priorities: { metatype: 'D', attributes: 'C', magic: 'A', skills: 'B', resources: 'E' },
94
138
  description: 'Spell in one hand, killing hands on the other -- both worlds, and the astral door stays shut.',
95
- // Ledger: 25 - 10 (2 Power Points) + 10 (Astral Beacon) = 25 -> 7
96
- // karma + 20,000 nuyen. The beacon is the price of burning on both
97
- // planes: an astral signature that reads bright and lingers.
98
- // Powers: Improved Reflexes 1 (1.5) + Killing Hands (0.5) = 2.0 --
99
- // the bought points, spent whole. Spells: Magic 6 allows 12; eight
100
- // chosen, breadth over artillery.
101
- combat: { body: 3, agility: 3, reaction: 3, combatSkill: 3, strength: 2, willpower: 4, logic: 3, intuition: 4, charisma: 2, edge: 2, magic: 6, adept: false, powerPoints: 2,
139
+ // Magic A offers 6, so Metatype D's three special points are Edge 5.
140
+ // Ledger: 25 - 8 (Focused Concentration 2) - 5 (mentor) - 10 (2 Power
141
+ // Points) + 10 (Astral Beacon) = 12 -> 7 karma + 10,000 nuyen;
142
+ // Resources E 6,000 + 10,000 = 16,000. The beacon is the price of
143
+ // burning on both planes: an astral signature that reads bright and
144
+ // lingers. Powers: Improved Reflexes 1 (1.5) + Killing Hands (0.5) =
145
+ // 2.0 -- the bought points, spent whole. Spells: Magic 6 allows 12;
146
+ // eight chosen, breadth over artillery.
147
+ combat: { body: 3, agility: 3, reaction: 3, combatSkill: 3, strength: 2, willpower: 4, logic: 3, intuition: 4, charisma: 2, edge: 5, magic: 6, adept: false, powerPoints: 2,
102
148
  knownSpells: ['manabolt', 'stunbolt', 'fireball', 'heal', 'armor', 'invisibility', 'reflexes', 'barrier'],
103
149
  adeptPowers: { 'improved-reflexes': 1, 'killing-hands': 1 },
104
- skills: { spellcasting: 5, counterspelling: 3, assensing: 3, unarmed: 4, blades: 3, gymnastics: 3, running: 3, swimming: 2, perception: 3, sneaking: 3, pistols: 2 } },
150
+ // Sorcery 5 is the B column's five group points.
151
+ skills: { spellcasting: 5, counterspelling: 5, 'ritual-spellcasting': 5, assensing: 4, unarmed: 5, blades: 3, gymnastics: 3, running: 3, swimming: 2, perception: 4, sneaking: 4, pistols: 2, conjuring: 3, 'first-aid': 2, etiquette: 1 } },
152
+ skillGroups: { sorcery: 5 },
105
153
  qualities: ['focused-concentration', 'mentor-spirit', 'astral-beacon'],
106
154
  // Rating 2 (p.74, 4 karma a rating): a Force 2 working held free.
107
- // The ledger above priced rating 1; each rating past it is 4 more.
108
155
  qualityRatings: { 'focused-concentration': 2 },
156
+ // A qi focus (the adept half) and a spell focus (the mage half)
157
+ // where an 18,000 power focus used to sit -- that one alone was more
158
+ // than the whole Resources column.
109
159
  gearSlugs: [
110
- 'power-focus-1', 'reagents', 'armor-jacket', 'combat-boots', 'meta-link',
160
+ 'qi-focus-1', 'spell-focus-1', 'reagents', 'sword', 'ares-light-fire-70', 'spare-clip',
161
+ 'regular-ammo', 'armor-jacket', 'combat-boots', 'meta-link',
111
162
  'medkit-3', 'trauma-patch', 'stim-patch', 'ear-buds', 'glasses',
112
163
  'survival-kit', 'credstick-silver'
113
164
  ],
@@ -116,11 +167,14 @@ export const ARCHETYPES = [
116
167
  name: 'Covert Ops',
117
168
  priorities: { metatype: 'C', attributes: 'B', magic: 'E', skills: 'A', resources: 'D' },
118
169
  description: 'In through the vents, out before the alarm. Locks are suggestions.',
119
- combat: { body: 3, agility: 5, reaction: 4, combatSkill: 3, strength: 3, willpower: 2, logic: 3, intuition: 5, charisma: 3, edge: 3, magic: 0,
120
- skills: { sneaking: 6, locksmith: 5, perception: 4, gymnastics: 4, running: 4, swimming: 4, automatics: 3, pistols: 3, longarms: 3, unarmed: 3, con: 3, hacking: 2 } },
170
+ // Metatype C's five special points: Edge 7.
171
+ combat: { body: 3, agility: 5, reaction: 4, combatSkill: 3, strength: 3, willpower: 2, logic: 3, intuition: 5, charisma: 3, edge: 7, magic: 0,
172
+ // Stealth 6 and Athletics 4 are the ten group points.
173
+ skills: { sneaking: 6, disguise: 6, palming: 6, gymnastics: 4, running: 4, swimming: 4, locksmith: 6, perception: 6, automatics: 3, pistols: 5, longarms: 3, unarmed: 4, con: 4, hacking: 4, 'escape-artist': 4, 'electronic-warfare': 2, hardware: 2, 'free-fall': 2, tracking: 1 } },
174
+ skillGroups: { stealth: 6, athletics: 4 },
121
175
  // Quiet, charmed, and never quite off duty -- the paranoia that keeps
122
- // you alive doesn't sleep either. Ledger 25 - 19 + 15 = 21 -> 7 karma
123
- // + 20,000 nuyen.
176
+ // you alive doesn't sleep either. Ledger 25 - 24 + 15 = 16 -> 7 karma
177
+ // + 18,000 nuyen; Resources D 50,000 + 18,000 = 68,000.
124
178
  qualities: ['catlike', 'lucky', 'innocuous', 'sinner-national', 'insomnia'],
125
179
  // The picks, and a Sequencer that now rolls its rating against the
126
180
  // lock's (pick.ts). "Locks are suggestions" has teeth.
@@ -143,15 +197,17 @@ export const ARCHETYPES = [
143
197
  name: 'Face',
144
198
  priorities: { metatype: 'C', attributes: 'B', magic: 'E', skills: 'A', resources: 'D' },
145
199
  description: 'Talks the job open before anyone draws. Charm, luck, and just enough gun.',
146
- combat: { body: 3, agility: 3, reaction: 3, combatSkill: 3, strength: 2, willpower: 4, logic: 3, intuition: 4, charisma: 6, edge: 3, magic: 0,
147
- // Etiquette in for sneaking: the Face blends SOCIALLY (RAW p.138:
148
- // "a social version of Sneak") -- vents are someone else's job.
149
- // Leadership in for intimidation (same Cha-social slot, ledger
150
- // unchanged): the Face DIRECTS the table (p.141), doesn't scare it.
151
- skills: { negotiation: 6, con: 5, etiquette: 5, leadership: 3, perception: 4, automatics: 3, pistols: 3, longarms: 3, unarmed: 2 } },
152
- // The description says it: charm and LUCK. And the tailored look that
153
- // opens doors is exactly what witnesses describe to Knight Errant.
154
- // Ledger 25 - 23 + 10 = 12 -> 7 karma + 10,000 nuyen.
200
+ // Metatype C's five special points: Edge 7 -- the description says
201
+ // LUCK, and now the sheet does too.
202
+ combat: { body: 3, agility: 3, reaction: 3, combatSkill: 3, strength: 2, willpower: 4, logic: 3, intuition: 4, charisma: 6, edge: 7, magic: 0,
203
+ // Influence 6 and Acting 4 are the ten group points: the Face
204
+ // blends SOCIALLY (p.138, etiquette as "a social version of Sneak")
205
+ // and DIRECTS the table (leadership, p.141).
206
+ skills: { etiquette: 6, negotiation: 6, leadership: 6, con: 4, impersonation: 4, performance: 4, perception: 5, automatics: 3, pistols: 5, longarms: 3, unarmed: 3, intimidation: 4, sneaking: 3, disguise: 3, palming: 2, computer: 3, hacking: 2, 'first-aid': 2, gymnastics: 2, running: 2, locksmith: 2, instruction: 2 } },
207
+ skillGroups: { influence: 6, acting: 4 },
208
+ // The tailored look that opens doors is exactly what witnesses
209
+ // describe to Knight Errant. Ledger 25 - 23 + 10 = 12 -> 7 karma +
210
+ // 10,000 nuyen; Resources D 50,000 + 10,000 = 60,000.
155
211
  qualities: ['first-impression', 'lucky', 'distinctive-style', 'sinner-national'],
156
212
  // The book's Face (p.119): the Avalon, Actioneer Business Clothes
157
213
  // (Armor 8), and a Shopsoft on the link for the haggle.
@@ -169,14 +225,22 @@ export const ARCHETYPES = [
169
225
  ],
170
226
  },
171
227
  {
228
+ // RE-LETTERED 2026-09-11: Metatype C, Skills B. At Metatype B a
229
+ // mundane human holds seven special points and Edge tops out at 7 --
230
+ // two points could never be spent at all. The C's five are Edge 7,
231
+ // and the B on Skills is where a doctor's training goes.
172
232
  name: 'Street Doc',
173
- priorities: { metatype: 'B', attributes: 'A', magic: 'E', skills: 'C', resources: 'D' },
233
+ priorities: { metatype: 'C', attributes: 'A', magic: 'E', skills: 'B', resources: 'D' },
174
234
  description: 'Keeps the team breathing: brains, steady hands, and a bag full of trauma kits.',
175
- combat: { body: 4, agility: 4, reaction: 4, combatSkill: 2, strength: 3, willpower: 4, logic: 6, intuition: 4, charisma: 3, edge: 4, magic: 0,
176
- skills: { 'first-aid': 6, perception: 4, negotiation: 3, automatics: 2, pistols: 2, longarms: 2, unarmed: 2, hacking: 2, con: 2 } },
235
+ combat: { body: 4, agility: 4, reaction: 4, combatSkill: 2, strength: 3, willpower: 4, logic: 6, intuition: 4, charisma: 3, edge: 7, magic: 0,
236
+ // Biotech 5 is the B column's five group points -- first aid,
237
+ // medicine and cybertechnology, the whole clinic.
238
+ skills: { cybertechnology: 5, 'first-aid': 5, medicine: 5, perception: 5, negotiation: 4, automatics: 2, pistols: 4, longarms: 2, unarmed: 3, hacking: 2, con: 2, computer: 3, etiquette: 3, hardware: 2, software: 2, running: 2 } },
239
+ skillGroups: { biotech: 5 },
177
240
  // Brilliant hands that freeze when the shooting starts -- which is
178
241
  // why they became the one who patches, not the one who charges.
179
- // Ledger 25 - 8 + 12 = 29 -> 7 karma + 20,000 nuyen.
242
+ // Ledger 25 - 22 + 12 = 15 -> 7 karma + 16,000 nuyen; Resources D
243
+ // 50,000 + 16,000 = 66,000.
180
244
  qualities: ['quick-healer', 'analytical-mind', 'photographic-memory', 'resistance-pathogens-and-toxins', 'combat-paralysis'],
181
245
  // The Rating 6 medkit is the kit that thinks (first-aid.ts).
182
246
  augs: [
@@ -196,27 +260,29 @@ export const ARCHETYPES = [
196
260
  name: 'Combat Mage',
197
261
  priorities: { metatype: 'D', attributes: 'B', magic: 'A', skills: 'C', resources: 'E' },
198
262
  description: 'Awakened artillery: manabolts through milspec armor, if the drain doesn\'t eat you first.',
199
- // CHOSEN SPELLBOOK (regen 2026-09-01): Magic 6 knows up to 12 (p.300)
200
- // and the artillery build takes all 12 -- every combat spell in the
201
- // catalog plus the sustains that keep the caster standing.
202
- combat: { body: 4, agility: 3, reaction: 3, combatSkill: 2, strength: 2, willpower: 5, logic: 4, intuition: 4, charisma: 3, edge: 2, magic: 6,
263
+ // CHOSEN SPELLBOOK: Magic 6 knows up to 12 (p.300) and the artillery
264
+ // build takes all 12 -- every combat spell in the catalog plus the
265
+ // sustains that keep the caster standing. Magic A offers 6, so
266
+ // Metatype D's three special points are Edge 5.
267
+ combat: { body: 4, agility: 3, reaction: 3, combatSkill: 2, strength: 2, willpower: 5, logic: 4, intuition: 4, charisma: 3, edge: 5, magic: 6,
203
268
  knownSpells: ['manabolt', 'stunbolt', 'powerbolt', 'fireball', 'lightning-bolt', 'ball-lightning', 'manaball', 'stunball', 'armor', 'heal', 'reflexes', 'barrier'],
204
- skills: { spellcasting: 6, counterspelling: 4, assensing: 4, conjuring: 3, perception: 3, unarmed: 2, automatics: 2, pistols: 2, longarms: 2 } },
269
+ // Firearms 2 is the C column's two group points.
270
+ skills: { automatics: 2, pistols: 2, longarms: 2, spellcasting: 6, counterspelling: 4, assensing: 4, conjuring: 4, perception: 4, 'ritual-spellcasting': 2, unarmed: 2, 'first-aid': 1, sneaking: 1 } },
271
+ skillGroups: { firearms: 2 },
205
272
  // Drain taught them what pain is worth ignoring; the astral bleeds
206
- // into their dreams and calls it rent. Ledger 25 - 7 + 10 = 28 -> 7
207
- // karma + 20,000 nuyen.
273
+ // into their dreams and calls it rent. Ledger 25 - 23 + 10 = 12 -> 7
274
+ // karma + 10,000 nuyen; Resources E 6,000 + 10,000 = 16,000.
208
275
  qualities: ['high-pain-tolerance', 'focused-concentration', 'mentor-spirit', 'quick-healer', 'insomnia'],
209
276
  // Rating 2 (p.74, 4 karma a rating): a Force 2 working held free.
210
- // The ledger above priced rating 1; each rating past it is 4 more.
211
277
  qualityRatings: { 'focused-concentration': 2 },
212
278
  gearSlugs: [
213
279
  // A formula for a spell they do NOT know: that is what a formula
214
- // is for. Same 2,000 as the Combat category row it replaces, so
215
- // the creation ledger is unchanged.
280
+ // is for. The gun is unlicensed and the stim patch went -- 16,000
281
+ // is the whole column, and this kit spends it to the last 5.
216
282
  'spell-focus-1', 'spell-formula-powerball', 'reagents', 'lodge-materials-3',
217
- 'armor-jacket', 'combat-boots', 'fake-sin-2', 'fake-license-4',
283
+ 'armor-jacket', 'combat-boots', 'fake-sin-2',
218
284
  'meta-link', 'ares-light-fire-70', 'spare-clip', 'regular-ammo',
219
- 'medkit-3', 'trauma-patch', 'stim-patch', 'ear-buds', 'glasses',
285
+ 'medkit-3', 'trauma-patch', 'ear-buds', 'glasses',
220
286
  'credstick-silver'
221
287
  ],
222
288
  },
@@ -224,65 +290,71 @@ export const ARCHETYPES = [
224
290
  name: 'Street Shaman',
225
291
  priorities: { metatype: 'D', attributes: 'B', magic: 'C', skills: 'A', resources: 'E' },
226
292
  description: 'Awakened the hard way: iron will, sharp instincts, spirits on speed dial.',
227
- // CHOSEN SPELLBOOK (regen 2026-09-01): Magic 5 knows up to 10 (p.300)
228
- // -- the mender's list: mercy settings, wards, and the heal that is
229
- // the whole reason crews keep a shaman fed.
230
- combat: { body: 3, agility: 2, reaction: 3, combatSkill: 2, strength: 2, willpower: 6, logic: 3, intuition: 5, charisma: 4, edge: 2, magic: 5,
293
+ // CHOSEN SPELLBOOK: Magic 5 knows up to 10 (p.300) -- the mender's
294
+ // list: mercy settings, wards, and the heal that is the whole reason
295
+ // crews keep a shaman fed. Magic C offers a magician 3; Metatype D's
296
+ // three special points buy Magic 5 (two) and Edge 3 (one).
297
+ combat: { body: 3, agility: 2, reaction: 3, combatSkill: 2, strength: 2, willpower: 6, logic: 3, intuition: 5, charisma: 4, edge: 3, magic: 5,
231
298
  knownSpells: ['stunbolt', 'manabolt', 'stunball', 'clout', 'heal', 'armor', 'invisibility', 'reflexes', 'manabarrier', 'barrier'],
232
- skills: { spellcasting: 5, conjuring: 5, counterspelling: 3, assensing: 4, perception: 4, negotiation: 3, unarmed: 2 } },
299
+ // Conjuring 5, Influence 3 and Outdoors 2 are the A column's ten
300
+ // group points -- the book's three conjuring skills at 5 beside
301
+ // this engine's own `conjuring` at 6, the one summon.ts rolls.
302
+ skills: { summoning: 5, binding: 5, banishing: 5, etiquette: 3, negotiation: 3, leadership: 3, navigation: 2, tracking: 2, survival: 2, spellcasting: 6, conjuring: 6, counterspelling: 4, assensing: 5, perception: 5, 'ritual-spellcasting': 3, 'first-aid': 3, pistols: 2, sneaking: 3, unarmed: 3, intimidation: 2, gymnastics: 2, swimming: 2 } },
303
+ skillGroups: { conjuring: 5, influence: 3, outdoors: 2 },
233
304
  // The spirits ARE the luck, and the flesh they favor knits fast --
234
305
  // but nobody forgets the one draped in bones and braided wire.
235
- // Ledger 25 - 15 + 5 = 15 -> 7 karma + 16,000 nuyen.
306
+ // Ledger 25 - 15 + 5 = 15 -> 7 karma + 16,000 nuyen; Resources E
307
+ // 6,000 + 16,000 = 22,000.
236
308
  qualities: ['lucky', 'quick-healer', 'distinctive-style'],
309
+ // A spirit focus for the summoner and a spell focus for the mender.
237
310
  gearSlugs: [
238
- 'spirit-focus-1', 'lodge-materials-3', 'reagents', 'armor-jacket',
311
+ 'spirit-focus-1', 'spell-focus-1', 'lodge-materials-3', 'reagents', 'armor-jacket',
239
312
  'combat-boots', 'fake-sin-2', 'meta-link', 'ares-light-fire-70',
240
313
  'spare-clip', 'regular-ammo', 'medkit-3', 'trauma-patch', 'stim-patch',
241
314
  'ear-buds', 'glasses', 'survival-kit', 'credstick-silver'
242
315
  ],
243
316
  },
244
317
  {
245
- // THE ASPECTED MAGICIAN, FINALLY PLAYABLE FROM THE MENU (user ask,
246
- // 2026-09-03: "how about the aspected magician?"). aspects.ts, the
247
- // Player.aspect field, the chargen path and the verb gates in
248
- // summon.ts / cast.ts / dispel.ts have all been here since
249
- // 2026-09-02 -- there was simply no pregen carrying `aspect`, so the
250
- // fifth magical path existed everywhere except where a player picks
251
- // a character. Two of them, because the engine honours exactly two
252
- // aspects: Enchanter waits on alchemy (UNAVAILABLE_ASPECTS).
318
+ // THE ASPECTED MAGICIAN (user ask, 2026-09-03: "how about the
319
+ // aspected magician?"). aspects.ts, the Player.aspect field, the
320
+ // chargen path and the verb gates in summon.ts / cast.ts / dispel.ts
321
+ // had all been in the engine since 2026-09-02 -- there was simply no
322
+ // pregen carrying `aspect`. Two of them, because the engine honours
323
+ // exactly two aspects: Enchanter waits on alchemy
324
+ // (UNAVAILABLE_ASPECTS).
253
325
  //
254
- // Magic B on the Aspected row is Magic 5 (p.65, ASPECTED_PRIORITY) --
255
- // the same rating the full magician gets at B, which is the trade:
256
- // half the art, none of the discount.
326
+ // Magic B on the Aspected row is Magic 5 (p.65, ASPECTED_PRIORITY),
327
+ // and the row grants the Sorcery group at 4 -- so the group is NOT in
328
+ // skillGroups (the Magic column pays for it) and its members are not
329
+ // bought with the E column's 18 points. Metatype C's five special
330
+ // points buy Magic 6 (one) and Edge 6 (four).
257
331
  name: 'Sorcerer',
258
332
  priorities: { metatype: 'C', attributes: 'A', magic: 'B', skills: 'E', resources: 'D' },
259
333
  description: 'Spells and nothing else: no spirits will ever answer you, and the astral is a window you cannot climb through.',
260
- combat: { body: 3, agility: 3, reaction: 3, combatSkill: 2, strength: 2, willpower: 6, logic: 5, intuition: 5, charisma: 5, edge: 3, magic: 5, aspect: 'sorcerer',
334
+ combat: { body: 3, agility: 3, reaction: 3, combatSkill: 2, strength: 2, willpower: 6, logic: 5, intuition: 5, charisma: 5, edge: 6, magic: 6, aspect: 'sorcerer',
261
335
  // Magic x 2 at creation (p.69), the same cap a full magician's
262
336
  // spellbook uses -- an aspected caster is not a smaller caster.
263
- knownSpells: ['manabolt', 'stunbolt', 'powerbolt', 'manaball', 'stunball', 'lightning-bolt', 'armor', 'heal', 'reflexes', 'barrier'],
337
+ knownSpells: ['manabolt', 'stunbolt', 'powerbolt', 'manaball', 'stunball', 'lightning-bolt', 'fireball', 'invisibility', 'armor', 'heal', 'reflexes', 'barrier'],
264
338
  // Sorcery only. `conjuring` is absent on purpose and enforced twice
265
339
  // over: the chargen payload check (forbiddenSkillsFor) and
266
340
  // summon.ts's aspect gate.
267
341
  skills: { spellcasting: 4, counterspelling: 4, 'ritual-spellcasting': 4, assensing: 4, perception: 4, negotiation: 3, unarmed: 3, gymnastics: 2, sneaking: 2 } },
268
342
  // One art, held deeper than a generalist holds two -- and a mentor
269
343
  // who never let them look at the other half.
270
- // Ledger 25 - 9 = 16 -> 7 karma + 18,000 nuyen.
344
+ // Ledger 25 - 17 = 8 -> 7 karma + 2,000 nuyen; Resources D 50,000 +
345
+ // 2,000 = 52,000.
271
346
  qualities: ['focused-concentration', 'mentor-spirit'],
272
347
  // Rating 3 (p.74, 4 karma a rating): the pure spellslinger holds a
273
348
  // drain-neutral Force 3 working free -- Increase Reflexes, a barrier.
274
- // The ledger above priced rating 1; each rating past it is 4 more.
275
349
  qualityRatings: { 'focused-concentration': 3 },
276
350
  gearSlugs: [
277
- // Was Combat + Detection + Health category formulae (2,000 + 500
278
- // + 500). The Detection one was for a category this engine has no
279
- // spell in at all. Same three prices, real spells: a combat spell
280
- // they have not learned, and the two Health formulae they worked
281
- // from -- a mage owning the notation for a spell they already
282
- // know is how they came to know it.
283
- 'spell-focus-1', 'power-focus-1', 'spell-formula-fireball',
284
- 'spell-formula-heal', 'spell-formula-reflexes', 'reagents',
285
- 'lodge-materials-3', 'armor-jacket', 'combat-boots', 'fake-sin-4',
351
+ // Formulae for spells they have NOT learned (Ball Lightning, Mana
352
+ // Barrier) and the two Health formulae they worked from -- a mage
353
+ // owning the notation for a spell they already know is how they
354
+ // came to know it.
355
+ 'spell-focus-1', 'power-focus-1', 'spell-formula-ball-lightning',
356
+ 'spell-formula-manabarrier', 'spell-formula-heal', 'spell-formula-reflexes', 'reagents',
357
+ 'lodge-materials-3', 'armor-jacket', 'armored-pants', 'combat-boots', 'fake-sin-4',
286
358
  'fake-license-4', 'renraku-sensei', 'mage-sight-goggles', 'medkit-3',
287
359
  'trauma-patch', 'stim-patch', 'ear-buds', 'glasses', 'microtransceiver',
288
360
  'white-noise-generator', 'survival-kit', 'ares-light-fire-70',
@@ -292,21 +364,24 @@ export const ARCHETYPES = [
292
364
  {
293
365
  // The other half of the same coin. Charisma is the maxed attribute
294
366
  // here rather than Willpower: summoning is a negotiation with
295
- // something that does not want to be there.
367
+ // something that does not want to be there. Same special-point
368
+ // spend as the Sorcerer: Magic 6 and Edge 6.
296
369
  name: 'Conjurer',
297
370
  priorities: { metatype: 'C', attributes: 'A', magic: 'B', skills: 'E', resources: 'D' },
298
371
  description: 'Spirits answer you and nothing else does -- no spells, no counterspelling, and the astral stays a window.',
299
- combat: { body: 3, agility: 3, reaction: 3, combatSkill: 2, strength: 2, willpower: 5, logic: 5, intuition: 5, charisma: 6, edge: 3, magic: 5, aspect: 'conjurer',
372
+ combat: { body: 3, agility: 3, reaction: 3, combatSkill: 2, strength: 2, willpower: 5, logic: 5, intuition: 5, charisma: 6, edge: 6, magic: 6, aspect: 'conjurer',
300
373
  // No spellbook at all: "they cannot perform any of the magical
301
374
  // skills associated with the two groups they did not select"
302
375
  // (p.69), and cast.ts refuses them by aspect, not by empty list.
376
+ // The Conjuring group at 4 is the Magic column's grant.
303
377
  skills: { conjuring: 4, summoning: 4, binding: 4, banishing: 4, assensing: 5, perception: 5, negotiation: 4, unarmed: 2, sneaking: 2 } },
304
378
  // The spirits like them, which is not the same as the spirits being
305
- // safe. Ledger 25 - 11 = 14 -> 7 karma + 14,000 nuyen.
306
- qualities: ['spirit-affinity', 'focused-concentration'],
307
- // Rating 2 (p.74, 4 karma a rating): a Force 2 working held free.
308
- // The ledger above priced rating 1; each rating past it is 4 more.
309
- qualityRatings: { 'focused-concentration': 2 },
379
+ // safe -- and the luck they lend is the kind that notices. Focused
380
+ // Concentration went on 2026-09-11: p.74 gives it to "magic user
381
+ // characters that are able to cast spells and technomancers", and a
382
+ // Conjurer casts nothing. Ledger 25 - 19 = 6 -> 6 karma, nothing to
383
+ // convert; Resources D 50,000.
384
+ qualities: ['spirit-affinity', 'lucky'],
310
385
  gearSlugs: [
311
386
  'spirit-focus-1', 'power-focus-1', 'lodge-materials-3',
312
387
  'reagents', 'transys-avalon', 'medkit-6',
@@ -321,14 +396,17 @@ export const ARCHETYPES = [
321
396
  // firewall soak, thought-speed initiative, hacking hosts -- and the
322
397
  // deck is the requisite: its quality feeds program damage and
323
398
  // firewall, and its hardware track is what the ice chews on.
399
+ // Metatype D's three special points are Edge 5.
324
400
  name: 'Decker',
325
401
  priorities: { metatype: 'D', attributes: 'B', magic: 'E', skills: 'C', resources: 'A' },
326
402
  description: 'A ghost in the grid: hosts crack, ice burns, maglocks open. Just don\'t get caught in meatspace.',
327
- combat: { body: 4, agility: 2, reaction: 3, combatSkill: 2, strength: 2, willpower: 4, logic: 6, intuition: 5, charisma: 2, edge: 3, magic: 0,
328
- skills: { hacking: 6, perception: 4, locksmith: 3, sneaking: 3, automatics: 2, pistols: 2, longarms: 2, unarmed: 2, con: 2 } },
403
+ combat: { body: 4, agility: 2, reaction: 3, combatSkill: 2, strength: 2, willpower: 4, logic: 6, intuition: 5, charisma: 2, edge: 5, magic: 0,
404
+ // Electronics 2 is the C column's two group points.
405
+ skills: { computer: 2, hardware: 2, software: 2, hacking: 6, cybercombat: 2, perception: 4, locksmith: 3, sneaking: 3, automatics: 2, pistols: 2, longarms: 2, unarmed: 2, con: 2 } },
406
+ skillGroups: { electronics: 2 },
329
407
  // Hosts are puzzles and hardware is clay -- meatspace gunfire is
330
- // neither, and the freeze proves it. Ledger 25 - 15 + 12 = 22 -> 7
331
- // karma + 20,000 nuyen.
408
+ // neither, and the freeze proves it. Ledger 25 - 25 + 12 = 12 -> 7
409
+ // karma + 10,000 nuyen; Resources A 450,000 + 10,000 = 460,000.
332
410
  qualities: ['analytical-mind', 'juryrigger', 'codeslinger', 'combat-paralysis'],
333
411
  // Codeslinger names ONE Matrix action; the Rigger always made the
334
412
  // quiet way in their own. Written as the pick rather than as the
@@ -350,7 +428,8 @@ export const ARCHETYPES = [
350
428
  'hammer-program', 'decryption-program', 'agent-rating-4', 'trodes',
351
429
  'sim-module', 'hermes-ikon', 'armor-jacket', 'combat-boots', 'fake-sin-4',
352
430
  'fake-license-4', 'lockpick-set', 'sequencer-4', 'data-tap', 'tag-eraser',
353
- 'white-noise-generator', 'microtransceiver', 'medkit-6', 'trauma-patch',
431
+ 'white-noise-generator', 'microtransceiver', 'laser-mic', 'biometric-reader',
432
+ 'subvocal-mic', 'medkit-6', 'trauma-patch',
354
433
  'stim-patch', 'ear-buds', 'glasses', 'ares-light-fire-70', 'spare-clip',
355
434
  'regular-ammo', 'mapsoft', 'shopsoft', 'credstick-silver'
356
435
  ],
@@ -358,27 +437,30 @@ export const ARCHETYPES = [
358
437
  {
359
438
  // The living persona (see ICombatAttributes.resonance): no deck, no
360
439
  // commlink -- and no hardware between their stun track and the ice.
440
+ // Resonance A offers 6, so Metatype D's three special points are
441
+ // Edge 5.
361
442
  name: 'Technomancer',
362
443
  priorities: { metatype: 'D', attributes: 'C', magic: 'A', skills: 'B', resources: 'E' },
363
444
  description: 'The Matrix answers when they think at it. No deck to brick -- only a mind to burn.',
364
- combat: { body: 2, agility: 2, reaction: 3, combatSkill: 2, strength: 2, willpower: 5, logic: 5, intuition: 3, charisma: 2, edge: 3, magic: 0, resonance: 6,
365
- // The Resonance trio are three skills and the books test each by
366
- // name (SR5 p.250). A Technomancer who could compile and register
367
- // at 4 but decompile at the unskilled -1 would be an odd graduate;
368
- // persistence.ts carries the matching back-fill for characters
445
+ combat: { body: 2, agility: 2, reaction: 3, combatSkill: 2, strength: 2, willpower: 5, logic: 5, intuition: 3, charisma: 2, edge: 5, magic: 0, resonance: 6,
446
+ // Tasking 5 is the B column's five group points: the Resonance
447
+ // trio are three skills and the books test each by name (SR5
448
+ // p.250); persistence.ts carries the back-fill for characters
369
449
  // created before `decompiling` existed.
370
- skills: { hacking: 6, compiling: 4, decompiling: 4, registering: 4, software: 4, perception: 4, sneaking: 3, con: 3, negotiation: 2, unarmed: 2 } },
450
+ skills: { compiling: 5, decompiling: 5, registering: 5, hacking: 6, software: 6, perception: 5, sneaking: 4, con: 3, negotiation: 2, unarmed: 2, computer: 3, 'electronic-warfare': 2, cybercombat: 2, etiquette: 1 } },
451
+ skillGroups: { tasking: 5 },
371
452
  // A corp lab noticed what they were before they did -- the file (and
372
453
  // its 20% cut of everything) followed them into the shadows, and the
373
- // taxman never stops collecting. Ledger 25 - 5 + 15 = 35 -> 7 karma
374
- // + 20,000 nuyen (the rest went into that resonance).
454
+ // taxman never stops collecting. Ledger 25 - 30 + 15 = 10 -> 7 karma
455
+ // + 6,000 nuyen; Resources E 6,000 + 6,000 = 12,000.
375
456
  qualities: ['analytical-mind', 'natural-hardening', 'prime-datahaven-membership', 'focused-concentration', 'sinner-corp'],
376
457
  // Rating 2 (p.74, 4 karma a rating): a Level 2 complex form held
377
458
  // free -- the quality covers a form exactly as it covers a spell.
378
- // The ledger above priced rating 1; each rating past it is 4 more.
379
459
  qualityRatings: { 'focused-concentration': 2 },
460
+ // A Rating 2 fake SIN: a corp SINner already has a real one, and the
461
+ // Rating 4 was nearly the whole column.
380
462
  gearSlugs: [
381
- 'armor-jacket', 'combat-boots', 'fake-sin-4', 'meta-link',
463
+ 'armor-jacket', 'combat-boots', 'fake-sin-2', 'meta-link',
382
464
  'microtransceiver', 'data-tap', 'micro-camera', 'stealth-tags',
383
465
  'tag-eraser', 'white-noise-generator', 'medkit-3', 'trauma-patch',
384
466
  'stim-patch', 'ear-buds', 'glasses', 'tool-kit', 'survival-kit', 'mapsoft',
@@ -389,23 +471,33 @@ export const ARCHETYPES = [
389
471
  // The drone is the mechanic: "drone" launches the Fly-Spy for live
390
472
  // recon of every adjacent room (see commands/drone.ts). Jumped-in
391
473
  // drone rigging can build on this later.
474
+ //
475
+ // RE-LETTERED 2026-09-11 (user ruling): Metatype D and Resources C.
476
+ // Edge 5 from the three special points, and 140,000 for the hangar
477
+ // a rigger actually needs -- a Control Rig 2 and a drone for every
478
+ // job, every one of them light enough to carry without a garage
479
+ // (p.370: a Street lifestyle has none).
392
480
  name: 'Rigger',
393
- priorities: { metatype: 'C', attributes: 'B', magic: 'E', skills: 'A', resources: 'D' },
481
+ priorities: { metatype: 'D', attributes: 'B', magic: 'E', skills: 'A', resources: 'C' },
394
482
  description: 'Eyes everywhere: the Fly-Spy scouts the next room so your body never has to.',
395
- combat: { body: 3, agility: 3, reaction: 5, combatSkill: 3, strength: 3, willpower: 3, logic: 5, intuition: 4, charisma: 2, edge: 2, magic: 0,
396
- skills: { piloting: 6, hacking: 4, perception: 4, automatics: 3, pistols: 3, longarms: 3, locksmith: 3, unarmed: 2, 'first-aid': 2 } },
483
+ combat: { body: 3, agility: 3, reaction: 5, combatSkill: 3, strength: 3, willpower: 3, logic: 5, intuition: 4, charisma: 2, edge: 5, magic: 0,
484
+ // Firearms 4, Engineering 3 and Electronics 3 are the ten group
485
+ // points; gunnery 6 is the drone-mounted gun.
486
+ skills: { automatics: 4, pistols: 4, longarms: 4, 'aeronautics-mechanic': 3, 'industrial-mechanic': 3, 'automotive-mechanic': 3, 'nautical-mechanic': 3, computer: 3, hardware: 3, software: 3, piloting: 6, gunnery: 6, hacking: 5, perception: 5, 'electronic-warfare': 4, locksmith: 4, navigation: 3, sneaking: 3, unarmed: 3, 'first-aid': 3, negotiation: 2, cybercombat: 2 } },
487
+ skillGroups: { firearms: 4, engineering: 3, electronics: 3 },
397
488
  // Anything with a motor runs better under their hands; the drone
398
- // feeds run all night, and so do they. Ledger 25 - 10 + 10 = 25 -> 7
399
- // karma + 20,000 nuyen.
489
+ // feeds run all night, and so do they. Ledger 25 - 21 + 10 = 14 -> 7
490
+ // karma + 14,000 nuyen; Resources C 140,000 + 14,000 = 154,000.
400
491
  qualities: ['juryrigger', 'gearhead', 'insomnia'],
401
- // The p.466 row: Pilot 3, Body 1, a real hull.
492
+ // The p.452 Control Rig 2 (2 essence) where the Rating 1 used to sit.
402
493
  augs: [
403
- 'control-rig', 'datajack', 'reaction-enhancers-1', 'cybereyes',
494
+ 'control-rig-2', 'datajack', 'reaction-enhancers-1', 'cybereyes',
404
495
  'vision-enhancement-1'
405
496
  ],
406
497
  gearSlugs: [
407
- 'fly-spy', 'mct-nissan-roto-drone', 'ferret-rpd-5x', 'autosoft-3',
408
- 'tool-kit', 'miniwelder', 'erika-elite', 'fake-sin-4', 'fake-license-4',
498
+ 'fly-spy', 'ferret-rpd-5x', 'telestrian-shamus', 'cd-wolfhound',
499
+ 'knight-errant-p5', 'ls-castle-guard', 'horizon-noizquito', 'sensor-array-4',
500
+ 'autosoft-3', 'tool-kit', 'miniwelder', 'erika-elite', 'fake-sin-4', 'fake-license-4',
409
501
  'armor-jacket', 'combat-boots', 'ares-light-fire-70', 'quick-draw-holster',
410
502
  'spare-clip', 'regular-ammo', 'medkit-3', 'trauma-patch', 'stim-patch',
411
503
  'ear-buds', 'glasses', 'microtransceiver', 'mapsoft', 'credstick-silver'