fuzzyworld

dm / commit

feat: add Tier 1 abilities to all foci; expose abilities in system prompt

1e438f26a5dcdac2baa0310d10ce8030f0b9c032 · Pavel Safronov · 2026-05-27 22:58:24 -0700 · parents 1b8688e1ddda

feat: add Tier 1 abilities to all foci; expose abilities in system prompt

- Add tier1: { name, cost, description } to all 69 FOCI entries
- beginAdventure() now includes focus Tier 1 ability in character.abilities alongside type starting abilities
- buildSystemPrompt() now includes FOCUS STYLE (playstyle description) and ABILITIES section so Claude knows what the character can do
- Skills section also included in prompt when present
- Mark recovery_used plan.md checkbox as done

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
 plan.md           |   2 +-
 public/index.html | 217 ++++++++++++++++++++++++++++++++++++------------------
 2 files changed, 148 insertions(+), 71 deletions(-)

diff --git a/plan.md b/plan.md
index f318048..6983f27 100644
--- a/plan.md
+++ b/plan.md
@@ -108,7 +108,7 @@ reason             // string
   - Debilitated → all pools at 0 → Dead (end screen)
 - [x] Enforce Cypher Limit: if `cyphers.length > cypherLimit`, warn player to use one
 - [x] Handle `tier_advance`: increment `tier`, recalculate `effort = tier`, show tier-up fanfare
-- [ ] Handle `recovery_used`: increment `recoveryUsed` (max 4; fourth resets all and marks 10-hour rest taken) — deferred to Phase 3d (recovery button)
+- [x] Handle `recovery_used`: increment `recoveryUsed` (max 4; fourth resets all and marks 10-hour rest taken)
 - [x] Replace level-up toast with Tier-up toast (text: "TIER [N]!")
 
 ### 2c — System prompt rewrite ✅
diff --git a/public/index.html b/public/index.html
index e7c8ade..a06d878 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1814,76 +1814,146 @@ const DESCRIPTORS = [
 ];
 
 // settings: which genres this focus fits. 'all' = any setting.
+// tier1: the Tier 1 ability granted by this focus.
 const FOCI = [
-  { name: 'Abides in Stone',          icon: '🗿', settings: ['fantasy','numenera'],            playstyle: 'Your body can merge with rock; you are patient, enduring, and terrifying in close combat.' },
-  { name: 'Acts Without Consequence', icon: '😏', settings: ['all'],                           playstyle: 'Rules, ethics, and consequences never seem to stick to you — a charmed manipulator.' },
-  { name: 'Battles Robots',           icon: '🤖', settings: ['numenera','scifi'],              playstyle: 'Specialised in locating and destroying mechanical threats of all kinds.' },
-  { name: 'Carries a Quiver',         icon: '🏹', settings: ['all'],                           playstyle: 'Master archer who never misses and always has the right arrow for the moment.' },
-  { name: 'Commands Mental Powers',   icon: '🧿', settings: ['all'],                           playstyle: 'Wields psychic force — telepathy, telekinesis, and mind-shattering blasts.' },
-  { name: 'Controls Beasts',          icon: '🦁', settings: ['fantasy','numenera','modern'],   playstyle: 'Communicate with and command animals, from pets to apex predators.' },
-  { name: 'Crafts Illusions',         icon: '🎭', settings: ['fantasy','numenera'],            playstyle: 'Fashion images from light so real they deceive all senses.' },
-  { name: 'Crafts Unique Objects',    icon: '⚙️', settings: ['fantasy','numenera','scifi'],   playstyle: 'Inventor of strange gadgets, gear, and one-of-a-kind contraptions.' },
-  { name: 'Dances with Dark Matter',  icon: '🌌', settings: ['numenera','scifi'],              playstyle: 'Shape the unseen fabric of reality into shields, weapons, and impossible structures.' },
-  { name: 'Defends the Weak',         icon: '🛡️', settings: ['all'],                           playstyle: 'Selfless protector who interposes and shields those who cannot protect themselves.' },
-  { name: 'Doesn\'t Do Much',         icon: '😴', settings: ['all'],                           playstyle: 'Outwardly lazy — secretly formidable. Passive abilities accumulate into devastating effect.' },
-  { name: 'Employs Magnetism',        icon: '🧲', settings: ['numenera','scifi'],              playstyle: 'Attract, repel, and reshape metal at will; a terrifying force on any battlefield.' },
-  { name: 'Entertains',               icon: '🎶', settings: ['all'],                           playstyle: 'Your art — music, acrobatics, oration — captivates crowds and shapes hearts.' },
-  { name: 'Exists Partially Out of Phase', icon: '👻', settings: ['numenera','scifi'],         playstyle: 'Slip through walls and dodge attacks by stepping slightly outside reality.' },
-  { name: 'Explores Dark Places',     icon: '🕯️', settings: ['all'],                           playstyle: 'Treasure hunter and delver of forgotten ruins, always one step from disaster.' },
-  { name: 'Fights Dirty',             icon: '🤛', settings: ['all'],                           playstyle: 'Kicks, bites, throws sand — any tactic that wins is a valid tactic.' },
-  { name: 'Fights With Panache',      icon: '🎪', settings: ['all'],                           playstyle: 'Swashbuckling daredevil who wins through flamboyant style over brute force.' },
-  { name: 'Focuses Mind Over Matter', icon: '🔵', settings: ['all'],                           playstyle: 'Forged by mental discipline; your will shapes the physical world around you.' },
-  { name: 'Fuses Flesh and Steel',    icon: '🦾', settings: ['numenera','scifi'],              playstyle: 'Cybernetic enhancements blur the line between human and machine.' },
-  { name: 'Fuses Mind and Machine',   icon: '💻', settings: ['numenera','scifi'],              playstyle: 'Interface directly with computers, drones, and AI — your mind is the terminal.' },
-  { name: 'Grows to Towering Heights',icon: '🗼', settings: ['numenera','scifi','fantasy'],    playstyle: 'Expand to enormous size, crushing opposition beneath your feet.' },
-  { name: 'Howls at the Moon',        icon: '🐺', settings: ['fantasy','numenera'],            playstyle: 'Transforms into a fearsome beast — power beyond control, control beyond reach.' },
-  { name: 'Hunts',                    icon: '🦌', settings: ['all'],                           playstyle: 'Stalking hunter who tracks and takes down a chosen quarry across any terrain.' },
-  { name: 'Infiltrates',              icon: '🕵️', settings: ['all'],                           playstyle: 'Uses subtlety, guile, and disguise to enter impossible places unseen.' },
-  { name: 'Interprets the Law',       icon: '⚖️', settings: ['all'],                           playstyle: 'Expert in rules, codes, and loopholes — the letter of the law is your weapon.' },
-  { name: 'Is Licensed to Carry',     icon: '🔫', settings: ['modern','scifi'],                playstyle: 'Expert marksman trained in firearms, their maintenance, and lethal application.' },
-  { name: 'Leads',                    icon: '👑', settings: ['all'],                           playstyle: 'Natural commander who earns loyalty and turns individuals into a deadly unit.' },
-  { name: 'Lives in the Wilderness',  icon: '🌲', settings: ['fantasy','numenera','modern'],   playstyle: 'Survivalist who reads terrain, weather, and prey — thrives where others perish.' },
-  { name: 'Looks for Trouble',        icon: '😈', settings: ['all'],                           playstyle: 'Brawler who wades into any conflict and relishes the chaos of open combat.' },
-  { name: 'Masters Defense',          icon: '🛡️', settings: ['all'],                           playstyle: 'Immovable wall who absorbs punishment and keeps allies safe.' },
-  { name: 'Masters Spells',           icon: '📜', settings: ['fantasy','numenera'],            playstyle: 'Memorizes and rapidly deploys a repertoire of arcane spells.' },
-  { name: 'Masters the Swarm',        icon: '🐝', settings: ['fantasy','numenera','scifi'],    playstyle: 'Commands insects, vermin, or nanites as an extension of your will.' },
-  { name: 'Masters Weaponry',         icon: '🗡️', settings: ['all'],                           playstyle: 'Grandmaster of one weapon type — you wield it better than anyone alive.' },
-  { name: 'Metes Out Justice',        icon: '⚖️', settings: ['all'],                           playstyle: 'Vigilante who punishes the guilty and rights wrongs outside official channels.' },
-  { name: 'Moves Like a Cat',         icon: '🐈', settings: ['all'],                           playstyle: 'Acrobat and parkour artist; gravity is a suggestion, not a rule.' },
-  { name: 'Moves Like the Wind',      icon: '🌬️', settings: ['all'],                           playstyle: 'Blur of speed — strikes before enemies react and vanishes before they recover.' },
-  { name: 'Murders',                  icon: '🩸', settings: ['all'],                           playstyle: 'Assassin specialising in lethal surprise and untraceable eliminations.' },
-  { name: 'Needs No Weapon',          icon: '👊', settings: ['all'],                           playstyle: 'Your body is the only weapon you need — fists, feet, and iron will.' },
-  { name: 'Never Says Die',           icon: '💀', settings: ['all'],                           playstyle: 'Unstoppable survivor who keeps fighting long past the point of reason.' },
-  { name: 'Operates Undercover',      icon: '🎭', settings: ['all'],                           playstyle: 'Deep-cover operative; multiple identities, zero trace, infinite patience.' },
-  { name: 'Performs Feats of Strength',icon: '🏋️', settings: ['all'],                          playstyle: 'Immense physical power applied with precision — lift, throw, and crush at will.' },
-  { name: 'Pilots Starcraft',         icon: '🚀', settings: ['numenera','scifi'],              playstyle: 'Born in the cockpit; fly, fight, and fix any spacecraft under any conditions.' },
-  { name: 'Plays Too Many Games',     icon: '♟️', settings: ['all'],                           playstyle: 'Master tactician whose life is one long game — always thinking three moves ahead.' },
-  { name: 'Rages',                    icon: '😡', settings: ['all'],                           playstyle: 'Berserker who trades control for devastating fury, unstoppable in the heat of battle.' },
-  { name: 'Rides the Lightning',      icon: '⚡', settings: ['all'],                           playstyle: 'Creates and discharges electrical power to shock, stun, and energize.' },
-  { name: 'Runs Away',                icon: '🏃', settings: ['all'],                           playstyle: 'Escape artist who knows when to fight and when to vanish — and survives because of it.' },
-  { name: 'Sailed Beneath the Jolly Roger', icon: '☠️', settings: ['fantasy','modern'],        playstyle: 'Pirate captain: seafaring, swashbuckling, plundering — and proud of every bit of it.' },
-  { name: 'Scavenges',                icon: '♻️', settings: ['all'],                           playstyle: 'Improviser who finds tools, weapons, and value where others see only junk.' },
-  { name: 'Sees Beyond',              icon: '🔮', settings: ['fantasy','numenera'],            playstyle: 'Peer into futures, pasts, and hidden truths — visions come unbidden and change everything.' },
-  { name: 'Separates Mind From Body', icon: '🕯️', settings: ['all'],                           playstyle: 'Astral projection lets your mind travel freely while your body waits in safety.' },
-  { name: 'Shreds the Walls of the World', icon: '🌀', settings: ['numenera','scifi','fantasy'], playstyle: 'Tear open dimensional rifts; step between spaces or hurl enemies into the void.' },
-  { name: 'Shrinks to Microscopic Size', icon: '🔬', settings: ['numenera','scifi'],           playstyle: 'Reduce to molecular scale to infiltrate, sabotage, and strike unseen.' },
-  { name: 'Siphons Power',            icon: '🌊', settings: ['fantasy','numenera','scifi'],    playstyle: 'Drain energy from enemies, machines, or the environment and redirect it as your own.' },
-  { name: 'Slays Monsters',           icon: '🐉', settings: ['fantasy','numenera'],            playstyle: 'Dedicated monster hunter with encyclopaedic knowledge of creature weaknesses.' },
-  { name: 'Solves Mysteries',         icon: '🔎', settings: ['all'],                           playstyle: 'Master of deduction who reads evidence to reconstruct hidden truths.' },
-  { name: 'Speaks for the Land',      icon: '🌿', settings: ['fantasy','numenera'],            playstyle: 'Voice of nature itself; plants, winds, and stones obey your call.' },
-  { name: 'Stands Like a Bastion',    icon: '🏰', settings: ['all'],                           playstyle: 'An unmovable point of order amid chaos — your resolve is physically manifest.' },
-  { name: 'Takes Animal Shape',       icon: '🦊', settings: ['fantasy','numenera'],            playstyle: 'Shapeshifter who borrows the bodies of beasts at will.' },
-  { name: 'Talks to Machines',        icon: '🖥️', settings: ['numenera','scifi'],              playstyle: 'Converse with and command technology as naturally as breathing.' },
-  { name: 'Throws with Deadly Accuracy', icon: '🎯', settings: ['all'],                        playstyle: 'Any object becomes a lethal projectile in your hands; range is not a problem.' },
-  { name: 'Thunders',                 icon: '🔊', settings: ['all'],                           playstyle: 'Sonic blasts shatter stone, stun enemies, and shake the air for miles.' },
-  { name: 'Travels Through Time',     icon: '⏳', settings: ['numenera','scifi','fantasy'],    playstyle: 'Skip forward, reach back, and observe branching moments of history.' },
-  { name: 'Wears a Sheen of Ice',     icon: '❄️', settings: ['fantasy','numenera','scifi'],   playstyle: 'Commands the wintry power of cold, frost, and absolute zero.' },
-  { name: 'Wields Power with Precision', icon: '🎯', settings: ['all'],                        playstyle: 'Your special abilities are calibrated to a razor edge — max effect, minimal collateral.' },
-  { name: 'Wields Two Weapons',       icon: '🤺', settings: ['all'],                           playstyle: 'Dual-wielder who overwhelms enemies with relentless twin-blade attacks.' },
-  { name: 'Works Miracles',           icon: '💫', settings: ['fantasy','numenera'],            playstyle: 'Healer and restorer who defies fatal wounds and brings the near-dead back.' },
-  { name: 'Works the Back Alleys',    icon: '🌆', settings: ['all'],                           playstyle: 'Street-level operative: fences, fixers, and the shadow economy are your domain.' },
-  { name: 'Worships the Lunar Nodes', icon: '🌕', settings: ['fantasy','numenera'],            playstyle: 'Moon-bound cultist whose power waxes and wanes with the celestial cycle.' },
-  { name: 'Would Rather Be Reading',  icon: '📖', settings: ['all'],                           playstyle: 'Bookish scholar who always knows exactly the right fact at exactly the right moment.' },
+  { name: 'Abides in Stone',          icon: '🗿', settings: ['fantasy','numenera'],            playstyle: 'Your body can merge with rock; you are patient, enduring, and terrifying in close combat.',
+    tier1: { name: 'Stone Body',             cost: null,         description: 'Your skin has a stone-like quality, granting +1 Armor at all times. You cannot be pushed or knocked prone.' } },
+  { name: 'Acts Without Consequence', icon: '😏', settings: ['all'],                           playstyle: 'Rules, ethics, and consequences never seem to stick to you — a charmed manipulator.',
+    tier1: { name: 'Verbal Misdirection',    cost: '2 Intellect', description: 'Distract a foe with rapid banter; their next action is hindered.' } },
+  { name: 'Battles Robots',           icon: '🤖', settings: ['numenera','scifi'],              playstyle: 'Specialised in locating and destroying mechanical threats of all kinds.',
+    tier1: { name: 'Machine Vulnerabilities',cost: null,         description: 'Trained in all tasks involving finding and exploiting weaknesses in machines and robots.' } },
+  { name: 'Carries a Quiver',         icon: '🏹', settings: ['all'],                           playstyle: 'Master archer who never misses and always has the right arrow for the moment.',
+    tier1: { name: 'Archery',               cost: null,         description: 'Ranged attacks with bows are eased.' } },
+  { name: 'Commands Mental Powers',   icon: '🧿', settings: ['all'],                           playstyle: 'Wields psychic force — telepathy, telekinesis, and mind-shattering blasts.',
+    tier1: { name: 'Telepathic',            cost: null,         description: 'Communicate silently with any creature within short range that you can see.' } },
+  { name: 'Controls Beasts',          icon: '🦁', settings: ['fantasy','numenera','modern'],   playstyle: 'Communicate with and command animals, from pets to apex predators.',
+    tier1: { name: 'Beast Companion',       cost: null,         description: 'A level 2 creature becomes your loyal companion and follows your commands.' } },
+  { name: 'Crafts Illusions',         icon: '🎭', settings: ['fantasy','numenera'],            playstyle: 'Fashion images from light so real they deceive all senses.',
+    tier1: { name: 'Minor Illusion',        cost: '1 Intellect', description: 'Create a small, silent image of any object or scene within short range. It lasts until you move or dismiss it.' } },
+  { name: 'Crafts Unique Objects',    icon: '⚙️', settings: ['fantasy','numenera','scifi'],   playstyle: 'Inventor of strange gadgets, gear, and one-of-a-kind contraptions.',
+    tier1: { name: 'Tinker',                cost: '1 Intellect', description: 'Spend 10 minutes modifying a device; it functions one level higher for one specific task.' } },
+  { name: 'Dances with Dark Matter',  icon: '🌌', settings: ['numenera','scifi'],              playstyle: 'Shape the unseen fabric of reality into shields, weapons, and impossible structures.',
+    tier1: { name: 'Shroud of Darkness',    cost: '2 Intellect', description: 'Wrap yourself in dark matter; gain +1 Armor and your appearance becomes difficult to perceive.' } },
+  { name: 'Defends the Weak',         icon: '🛡️', settings: ['all'],                           playstyle: 'Selfless protector who interposes and shields those who cannot protect themselves.',
+    tier1: { name: 'Courageous',            cost: null,         description: 'Morale and fear-based attacks on allies within short range of you are hindered.' } },
+  { name: 'Doesn\'t Do Much',         icon: '😴', settings: ['all'],                           playstyle: 'Outwardly lazy — secretly formidable. Passive abilities accumulate into devastating effect.',
+    tier1: { name: 'Hang Back',             cost: null,         description: 'When you take no action on your turn, your next action is eased.' } },
+  { name: 'Employs Magnetism',        icon: '🧲', settings: ['numenera','scifi'],              playstyle: 'Attract, repel, and reshape metal at will; a terrifying force on any battlefield.',
+    tier1: { name: 'Repel Metal',           cost: '2 Intellect', description: 'Hurl a metal object within short range away from you; if aimed at a foe, it deals 4 points of damage.' } },
+  { name: 'Entertains',               icon: '🎶', settings: ['all'],                           playstyle: 'Your art — music, acrobatics, oration — captivates crowds and shapes hearts.',
+    tier1: { name: 'Performer',             cost: null,         description: 'All performance tasks (music, acting, oration, acrobatics) are eased.' } },
+  { name: 'Exists Partially Out of Phase', icon: '👻', settings: ['numenera','scifi'],         playstyle: 'Slip through walls and dodge attacks by stepping slightly outside reality.',
+    tier1: { name: 'Phase Sprint',          cost: '2 Speed',    description: 'Move up to a long distance as a single action by stepping partially out of phase with reality.' } },
+  { name: 'Explores Dark Places',     icon: '🕯️', settings: ['all'],                           playstyle: 'Treasure hunter and delver of forgotten ruins, always one step from disaster.',
+    tier1: { name: 'Eyes Adjusted',         cost: null,         description: 'You can see in dim light as well as you do in normal light.' } },
+  { name: 'Fights Dirty',             icon: '🤛', settings: ['all'],                           playstyle: 'Kicks, bites, throws sand — any tactic that wins is a valid tactic.',
+    tier1: { name: 'Dirty Fighter',         cost: null,         description: 'When you deal damage you may also blind, trip, or disorient your foe as part of the same action.' } },
+  { name: 'Fights With Panache',      icon: '🎪', settings: ['all'],                           playstyle: 'Swashbuckling daredevil who wins through flamboyant style over brute force.',
+    tier1: { name: 'Evasion',               cost: null,         description: 'Speed defense tasks are eased.' } },
+  { name: 'Focuses Mind Over Matter', icon: '🔵', settings: ['all'],                           playstyle: 'Forged by mental discipline; your will shapes the physical world around you.',
+    tier1: { name: 'Telekinesis',           cost: '2 Intellect', description: 'Move an object up to 25 lbs within short range to any other location within short range.' } },
+  { name: 'Fuses Flesh and Steel',    icon: '🦾', settings: ['numenera','scifi'],              playstyle: 'Cybernetic enhancements blur the line between human and machine.',
+    tier1: { name: 'Weaponization',         cost: null,         description: 'One of your cybernetic components functions as a medium weapon that cannot be disarmed.' } },
+  { name: 'Fuses Mind and Machine',   icon: '💻', settings: ['numenera','scifi'],              playstyle: 'Interface directly with computers, drones, and AI — your mind is the terminal.',
+    tier1: { name: 'Machine Affinity',      cost: null,         description: 'All tasks involving machines, computers, and electronics are eased.' } },
+  { name: 'Grows to Towering Heights',icon: '🗼', settings: ['numenera','scifi','fantasy'],    playstyle: 'Expand to enormous size, crushing opposition beneath your feet.',
+    tier1: { name: 'Enlarge',               cost: '2 Might',    description: 'Grow to twice your size; melee attacks deal 2 additional points of damage for one minute.' } },
+  { name: 'Howls at the Moon',        icon: '🐺', settings: ['fantasy','numenera'],            playstyle: 'Transforms into a fearsome beast — power beyond control, control beyond reach.',
+    tier1: { name: 'Beast Form',            cost: '3 Might',    description: 'Transform into a beast; gain +6 to your Might pool and claws that inflict 4 points of damage.' } },
+  { name: 'Hunts',                    icon: '🦌', settings: ['all'],                           playstyle: 'Stalking hunter who tracks and takes down a chosen quarry across any terrain.',
+    tier1: { name: 'Tracker',               cost: null,         description: 'All tasks involving tracking prey or following a trail are eased.' } },
+  { name: 'Infiltrates',              icon: '🕵️', settings: ['all'],                           playstyle: 'Uses subtlety, guile, and disguise to enter impossible places unseen.',
+    tier1: { name: 'Stealth',               cost: null,         description: 'Tasks involving hiding and sneaking are eased.' } },
+  { name: 'Interprets the Law',       icon: '⚖️', settings: ['all'],                           playstyle: 'Expert in rules, codes, and loopholes — the letter of the law is your weapon.',
+    tier1: { name: 'Legal Expertise',       cost: null,         description: 'All tasks involving law, contracts, government, and courtroom procedure are eased.' } },
+  { name: 'Is Licensed to Carry',     icon: '🔫', settings: ['modern','scifi'],                playstyle: 'Expert marksman trained in firearms, their maintenance, and lethal application.',
+    tier1: { name: 'Gunner',                cost: null,         description: 'Attacks with firearms are eased.' } },
+  { name: 'Leads',                    icon: '👑', settings: ['all'],                           playstyle: 'Natural commander who earns loyalty and turns individuals into a deadly unit.',
+    tier1: { name: 'Good Advice',           cost: null,         description: 'Spend a round advising an ally; their next action is eased.' } },
+  { name: 'Lives in the Wilderness',  icon: '🌲', settings: ['fantasy','numenera','modern'],   playstyle: 'Survivalist who reads terrain, weather, and prey — thrives where others perish.',
+    tier1: { name: 'Wild Practicality',     cost: null,         description: 'All tasks involving survival, navigation, and finding food and water in the wild are eased.' } },
+  { name: 'Looks for Trouble',        icon: '😈', settings: ['all'],                           playstyle: 'Brawler who wades into any conflict and relishes the chaos of open combat.',
+    tier1: { name: 'Fists of Fury',         cost: null,         description: 'Unarmed attacks deal 4 points of damage instead of the usual 2.' } },
+  { name: 'Masters Defense',          icon: '🛡️', settings: ['all'],                           playstyle: 'Immovable wall who absorbs punishment and keeps allies safe.',
+    tier1: { name: 'Shield Master',         cost: null,         description: 'Speed defense tasks are eased when wielding a shield.' } },
+  { name: 'Masters Spells',           icon: '📜', settings: ['fantasy','numenera'],            playstyle: 'Memorizes and rapidly deploys a repertoire of arcane spells.',
+    tier1: { name: 'Onslaught',             cost: '1 Intellect', description: 'Project a ray of force at a target within long range for 4 points of Intellect damage.' } },
+  { name: 'Masters the Swarm',        icon: '🐝', settings: ['fantasy','numenera','scifi'],    playstyle: 'Commands insects, vermin, or nanites as an extension of your will.',
+    tier1: { name: 'Influence Swarm',       cost: '2 Intellect', description: 'Direct a nearby swarm of creatures to distract or harass one foe within short range for one minute.' } },
+  { name: 'Masters Weaponry',         icon: '🗡️', settings: ['all'],                           playstyle: 'Grandmaster of one weapon type — you wield it better than anyone alive.',
+    tier1: { name: 'Weapon Master',         cost: null,         description: 'Attacks with your chosen weapon type are eased.' } },
+  { name: 'Metes Out Justice',        icon: '⚖️', settings: ['all'],                           playstyle: 'Vigilante who punishes the guilty and rights wrongs outside official channels.',
+    tier1: { name: 'Designation',           cost: null,         description: 'Declare a target guilty or innocent; attacks against the guilty and tasks protecting the innocent are eased.' } },
+  { name: 'Moves Like a Cat',         icon: '🐈', settings: ['all'],                           playstyle: 'Acrobat and parkour artist; gravity is a suggestion, not a rule.',
+    tier1: { name: 'Contortionist',         cost: null,         description: 'All tasks involving flexibility, balance, and physical dexterity are eased.' } },
+  { name: 'Moves Like the Wind',      icon: '🌬️', settings: ['all'],                           playstyle: 'Blur of speed — strikes before enemies react and vanishes before they recover.',
+    tier1: { name: 'Sprint',                cost: null,         description: 'You can move up to a long distance as a single action.' } },
+  { name: 'Murders',                  icon: '🩸', settings: ['all'],                           playstyle: 'Assassin specialising in lethal surprise and untraceable eliminations.',
+    tier1: { name: 'Surprise Attack',       cost: null,         description: 'Attacks against unaware foes are eased and deal 4 additional points of damage.' } },
+  { name: 'Needs No Weapon',          icon: '👊', settings: ['all'],                           playstyle: 'Your body is the only weapon you need — fists, feet, and iron will.',
+    tier1: { name: 'Unarmed Fighting Style',cost: null,         description: 'You are trained in unarmed attacks, and they deal 4 points of damage.' } },
+  { name: 'Never Says Die',           icon: '💀', settings: ['all'],                           playstyle: 'Unstoppable survivor who keeps fighting long past the point of reason.',
+    tier1: { name: 'Ignore the Pain',       cost: '2 Might',    description: 'Shrug off harm; your next action is not hindered by the damage you just received.' } },
+  { name: 'Operates Undercover',      icon: '🎭', settings: ['all'],                           playstyle: 'Deep-cover operative; multiple identities, zero trace, infinite patience.',
+    tier1: { name: 'Investigate',           cost: null,         description: 'Trained in stealth, disguise, and gathering information discreetly.' } },
+  { name: 'Performs Feats of Strength',icon: '🏋️', settings: ['all'],                          playstyle: 'Immense physical power applied with precision — lift, throw, and crush at will.',
+    tier1: { name: 'Athlete',               cost: null,         description: 'All tasks involving feats of strength — lifting, breaking, and throwing — are eased.' } },
+  { name: 'Pilots Starcraft',         icon: '🚀', settings: ['numenera','scifi'],              playstyle: 'Born in the cockpit; fly, fight, and fix any spacecraft under any conditions.',
+    tier1: { name: 'Pilot',                 cost: null,         description: 'All tasks involving piloting spacecraft and flying vehicles are eased.' } },
+  { name: 'Plays Too Many Games',     icon: '♟️', settings: ['all'],                           playstyle: 'Master tactician whose life is one long game — always thinking three moves ahead.',
+    tier1: { name: 'Strategize',            cost: null,         description: 'Spend a round planning; one ally\'s next action is eased.' } },
+  { name: 'Rages',                    icon: '😡', settings: ['all'],                           playstyle: 'Berserker who trades control for devastating fury, unstoppable in the heat of battle.',
+    tier1: { name: 'Frenzy',                cost: '1 Might',    description: 'Enter a battle frenzy; attacks deal 1 additional point of damage, but Speed defense is hindered.' } },
+  { name: 'Rides the Lightning',      icon: '⚡', settings: ['all'],                           playstyle: 'Creates and discharges electrical power to shock, stun, and energize.',
+    tier1: { name: 'Shock',                 cost: '1 Intellect', description: 'Discharge electricity at a foe within short range for 1 point of damage that ignores Armor.' } },
+  { name: 'Runs Away',                icon: '🏃', settings: ['all'],                           playstyle: 'Escape artist who knows when to fight and when to vanish — and survives because of it.',
+    tier1: { name: 'Fleet of Foot',         cost: null,         description: 'Running and escape tasks are eased; you can move and take a different action on the same turn.' } },
+  { name: 'Sailed Beneath the Jolly Roger', icon: '☠️', settings: ['fantasy','modern'],        playstyle: 'Pirate captain: seafaring, swashbuckling, plundering — and proud of every bit of it.',
+    tier1: { name: 'Sea Legs',              cost: null,         description: 'All tasks aboard ships and in water are eased. You have a positive reputation among sailors and pirates.' } },
+  { name: 'Scavenges',                icon: '♻️', settings: ['all'],                           playstyle: 'Improviser who finds tools, weapons, and value where others see only junk.',
+    tier1: { name: 'Scrounge',              cost: '1 Intellect', description: 'Search an area for 10 minutes to find a useful piece of moderately-priced equipment from available junk.' } },
+  { name: 'Sees Beyond',              icon: '🔮', settings: ['fantasy','numenera'],            playstyle: 'Peer into futures, pasts, and hidden truths — visions come unbidden and change everything.',
+    tier1: { name: 'Premonition',           cost: '2 Intellect', description: 'Ask the GM one yes/no question about the immediate future at this location. The answer must be accurate.' } },
+  { name: 'Separates Mind From Body', icon: '🕯️', settings: ['all'],                           playstyle: 'Astral projection lets your mind travel freely while your body waits in safety.',
+    tier1: { name: 'Psychic Projection',    cost: '2 Intellect', description: 'Project your consciousness up to 1 mile, perceiving the environment but unable to interact with it.' } },
+  { name: 'Shreds the Walls of the World', icon: '🌀', settings: ['numenera','scifi','fantasy'], playstyle: 'Tear open dimensional rifts; step between spaces or hurl enemies into the void.',
+    tier1: { name: 'Phase Sight',           cost: null,         description: 'You can perceive objects and creatures that exist slightly out of phase with reality.' } },
+  { name: 'Shrinks to Microscopic Size', icon: '🔬', settings: ['numenera','scifi'],           playstyle: 'Reduce to molecular scale to infiltrate, sabotage, and strike unseen.',
+    tier1: { name: 'Shrink',                cost: '1 Might',    description: 'Reduce to 6 inches tall. Hiding is eased, attacks against you are hindered, and you can fit through tiny spaces.' } },
+  { name: 'Siphons Power',            icon: '🌊', settings: ['fantasy','numenera','scifi'],    playstyle: 'Drain energy from enemies, machines, or the environment and redirect it as your own.',
+    tier1: { name: 'Drain Creature',        cost: '2 Intellect', description: 'Drain 3 points from a creature\'s Might or Speed pool and add them to any of your own pools.' } },
+  { name: 'Slays Monsters',           icon: '🐉', settings: ['fantasy','numenera'],            playstyle: 'Dedicated monster hunter with encyclopaedic knowledge of creature weaknesses.',
+    tier1: { name: 'Monster Lore',          cost: null,         description: 'Trained in all tasks involving knowledge of creatures and combat against them.' } },
+  { name: 'Solves Mysteries',         icon: '🔎', settings: ['all'],                           playstyle: 'Master of deduction who reads evidence to reconstruct hidden truths.',
+    tier1: { name: 'Investigate Scene',     cost: '3 Intellect', description: 'Study an area for one minute; learn one accurate clue about what happened there.' } },
+  { name: 'Speaks for the Land',      icon: '🌿', settings: ['fantasy','numenera'],            playstyle: 'Voice of nature itself; plants, winds, and stones obey your call.',
+    tier1: { name: 'Wilderness Lore',       cost: null,         description: 'Trained in all tasks involving nature, plants, animals, and natural phenomena.' } },
+  { name: 'Stands Like a Bastion',    icon: '🏰', settings: ['all'],                           playstyle: 'An unmovable point of order amid chaos — your resolve is physically manifest.',
+    tier1: { name: 'Fortified Position',    cost: '1 Might',    description: 'Anchor yourself; you cannot be moved or knocked prone and attacks against you are hindered until your next turn.' } },
+  { name: 'Takes Animal Shape',       icon: '🦊', settings: ['fantasy','numenera'],            playstyle: 'Shapeshifter who borrows the bodies of beasts at will.',
+    tier1: { name: 'Animal Shape',          cost: '3 Might',    description: 'Take the form of a large animal, gaining its natural attacks, movement mode, and senses.' } },
+  { name: 'Talks to Machines',        icon: '🖥️', settings: ['numenera','scifi'],              playstyle: 'Converse with and command technology as naturally as breathing.',
+    tier1: { name: 'Machine Language',      cost: null,         description: 'Communicate with machines and computers as naturally as speaking; basic queries are always understood.' } },
+  { name: 'Throws with Deadly Accuracy', icon: '🎯', settings: ['all'],                        playstyle: 'Any object becomes a lethal projectile in your hands; range is not a problem.',
+    tier1: { name: 'Precision',             cost: null,         description: 'All tasks involving thrown weapons or objects as weapons are eased.' } },
+  { name: 'Thunders',                 icon: '🔊', settings: ['all'],                           playstyle: 'Sonic blasts shatter stone, stun enemies, and shake the air for miles.',
+    tier1: { name: 'Thundering Voice',      cost: '2 Might',    description: 'Your shout stuns all creatures within short range; their next actions are hindered.' } },
+  { name: 'Travels Through Time',     icon: '⏳', settings: ['numenera','scifi','fantasy'],    playstyle: 'Skip forward, reach back, and observe branching moments of history.',
+    tier1: { name: 'Temporal Viewer',       cost: '2 Intellect', description: 'Observe up to one hour into the past or future at your current location.' } },
+  { name: 'Wears a Sheen of Ice',     icon: '❄️', settings: ['fantasy','numenera','scifi'],   playstyle: 'Commands the wintry power of cold, frost, and absolute zero.',
+    tier1: { name: 'Ice Armor',             cost: '2 Intellect', description: 'Coat yourself in ice, gaining +2 Armor for one hour.' } },
+  { name: 'Wields Power with Precision', icon: '🎯', settings: ['all'],                        playstyle: 'Your special abilities are calibrated to a razor edge — max effect, minimal collateral.',
+    tier1: { name: 'Trained Without Armor', cost: null,         description: 'Speed defense tasks are eased when wearing no armor.' } },
+  { name: 'Wields Two Weapons',       icon: '🤺', settings: ['all'],                           playstyle: 'Dual-wielder who overwhelms enemies with relentless twin-blade attacks.',
+    tier1: { name: 'Dual Light Wield',      cost: null,         description: 'You can wield two light weapons simultaneously without penalty.' } },
+  { name: 'Works Miracles',           icon: '💫', settings: ['fantasy','numenera'],            playstyle: 'Healer and restorer who defies fatal wounds and brings the near-dead back.',
+    tier1: { name: 'Healing Touch',         cost: '2 Intellect', description: 'Restore 1d6 points to any pool of a creature you touch.' } },
+  { name: 'Works the Back Alleys',    icon: '🌆', settings: ['all'],                           playstyle: 'Street-level operative: fences, fixers, and the shadow economy are your domain.',
+    tier1: { name: 'Underworld Contacts',   cost: null,         description: 'Trained in stealth and streetwise tasks; you have a fixer or contact in most settlements.' } },
+  { name: 'Worships the Lunar Nodes', icon: '🌕', settings: ['fantasy','numenera'],            playstyle: 'Moon-bound cultist whose power waxes and wanes with the celestial cycle.',
+    tier1: { name: 'Blessing of the Moon',  cost: '2 Intellect', description: 'Grant yourself or a touched ally +2 to any pool temporarily, lasting until the next dawn.' } },
+  { name: 'Would Rather Be Reading',  icon: '📖', settings: ['all'],                           playstyle: 'Bookish scholar who always knows exactly the right fact at exactly the right moment.',
+    tier1: { name: 'Know It All',           cost: null,         description: 'Trained in two areas of knowledge of your choice; all tasks for recalling information are eased.' } },
 ];
 
 const DIE_TYPES = [4, 6, 8, 10, 12, 20, 100];
@@ -1920,6 +1990,7 @@ function buildSystemPrompt(character, theme, notes) {
   return `You are a masterful Game Master running a solo Cypher System adventure (CSRD rules).
 
 CHARACTER: ${c.name} — Tier ${c.tier} ${c.descriptor} ${c.type} who ${c.focus}
+${(() => { const f = FOCI.find(x => x.name === c.focus); return f ? `FOCUS STYLE: ${f.playstyle}` : ''; })()}
 SETTING: ${setting.label}${theme ? ` | THEME: ${theme}` : ''}
 Currency: ${setting.currency} | Special abilities: ${setting.magic}
 ${setting.tone}
@@ -1931,6 +2002,9 @@ STAT POOLS
 • Damage track: ${dt.toUpperCase()} | Effort: ${c.tier} | XP: ${c.xp} | Shins: ${c.shins}
 • Cyphers: ${(c.cyphers||[]).length}/${c.cypherLimit}${(c.cyphers||[]).length ? ' — ' + c.cyphers.map(cy=>`${cy.name} (Lv${cy.level})`).join(', ') : ''}
 
+ABILITIES
+${(c.abilities||[]).length ? (c.abilities).map(a => `• ${a.name}${a.cost ? ` [${a.cost}]` : ''} — ${a.description}`).join('\n') : '• None.'}
+${(c.skills||[]).length ? `\nSKILLS\n${c.skills.map(s => `• ${s.name} (${s.rank})`).join('\n')}` : ''}
 CYPHER SYSTEM RULES — TASK RESOLUTION
 You set difficulty 0–10; target number = difficulty × 3; player rolls d20.
 Roll ≥ target = success. Special results: 1 = fumble/free GM Intrusion; 17–18 = minor effect; 19–20 = major effect.
@@ -2270,7 +2344,10 @@ async function beginAdventure() {
       cypherLimit: selectedType.cypherLimit,
       cyphers: [],
       skills: [],
-      abilities: [...(selectedType.startingAbilities || [])],
+      abilities: [
+        ...(selectedType.startingAbilities || []),
+        ...(selectedFocus.tier1 ? [selectedFocus.tier1] : []),
+      ],
       equipment: [...selectedType.equipment],
       shins: 10,
       xp: 0,