Heya people!
Okay. Deep breath. This one's been cooking for a while, and it's the biggest thing I've pushed since v2.0 went and told you that morphs, vehicles and animals are all bodies now...
Here's what actually happened. Somewhere after 2.1.5 I built a shop system because I'm DMing a campaign that is more like a persistent setting than a mission based Firewall campaign. So I needed a proper one, with Rep-based purchases, cashing in favors, loyalty and the lot. And then I was done, and I didn't publish it yet. Because I wanted to fix and update Psi first. Along the way I then built Ki, an entire homebrew discipline that grew out of my own campaign for one of my players. Now Both of them worked. Both of them then sat there, finished and unreleased, for weeks and months.
Because I kept tripping over the same thing: neither of those is OG Eclipse Phase. The shop is my reading of some pretty thin RAW plus a stack of house rules I made up. Ki isn't in any book at all - it's campaign lore with mechanics bolted onto it. And quietly shipping all that into everybody's core system, whether you wanted it or not, felt wrong. You didn't ask for my house rules. You asked for Eclipse Phase.
So rather than release them, I spent the time teaching the system how to have modules instead.
That's what 2.5 is. The core now has a real extension API - hooks, registries, template slots, a documented contract, the whole thing - and the two features that bugged me are the first two to use it:
- Eclipse Phase — Shops - shops as their own actor type, Rep-based buying, cashing in favors, selling, loyalty, and a settings tab that lets every shop run a different economy
- Eclipse Phase — Ki - Psi's synthetic counterpart, 40 sleights, five exsurgent sub-strains, requiring a Cyberbrain where Psi is blocked by one
Install them if you want them. Ignore them and your Eclipse Phase stays exactly the Eclipse Phase you had. Nothing about Psi moves out - Psi stays core, forever (yey!) - and this whole thing means the next weird idea I have doesn't land on your table uninvited either.
And that's the other half of this release, because Psi got a lot of attention while all this was going on. Sleights can deal damage now. Sub-strain Influence tables stopped eating each other. Cyberbrains and Brain Boxes actually mean something for an async. Plus a small mountain of bug fixes that had been quietly annoying me for months.
This update includes a migration, and a chunky one: your Psi sleights get their book damage backfilled, your sub-strain Influence tables get restructured so switching archetypes stops wiping them, and existing Cyberbrain and Core System ware gets an invisible marker so the system can recognise it. As always - back your world up before you let it run. The dialog will give you a cancel button and a second chance to do exactly that.
Right. Here are the actual patch notes.
Added features - Psi
- Aspect items (Gamma/Epsilon sleights) can now carry their own damage formula, set on the item sheet and rolled from a button on the chat card after a successful cast — the GM still judges whether it actually landed, same as weapon damage. Psychic Stab and Nightmare get their book values backfilled automatically, on characters, NPCs, goons and in the world item list
- Sub-strain Influence Effect tables are now stored per archetype, so switching between archetypes no longer destroys the table you filled in for the previous one (and the confirmation dialog that used to warn you about that is gone, because it no longer needs to exist)
- Chi sleight pushing: a flat +5 Infection for a per-sleight boost effect
- Gamma auto-push at Infection 66+, re-prompting on every fresh crossing, with an extensible effect table so "Effect" doubles damage-bearing sleights properly. The push a threshold already grants is excluded from the manual dropdown, per RAW
- A Cyberbrain now matters. Psi is blocked in any body carrying one and in infomorphs; a synthmorph with a Brain Box works, but at -30 for reaching through the wrong nervous system. Blocked sleights get a red warning triangle on the tab, penalised Gamma sleights an orange one
- Core System ware (Warden, Sexton, Overmind) now counts as a cyberbrained body, and the Courier, Galatea, Gargoyle and Golem synthmorphs got the Cyberbrain ware their RAW lists say they should have had all along
- Rules descriptions for every Psi Infection effect, with an "i" info icon next to each selection dropdown showing the text for whatever is currently selected — on the sheet and on the Infection Test chat card
- An active-push summary under the sleight name on Psi roll chat cards, and a hoverable auto-push indicator on Gamma sleight cards
Added features - modularity
game.eclipsephase.api: the system's roll, actor, UI, chat and migration helpers, published for module authors, withdocs/EXTENDING.mddocumenting every hook, registry, slot and the chat message contract- Registries for roll sources, pool options, Rez spending tables, success-tier result text and strain families
- Template slots on the actor sheet, roll dialog and chat cards, so a module can add UI without patching a template
- Hooks across the roll pipeline, actor and item preparation, the sheet context and resting
- Migration helpers (
forEachActor,forEachItem,postNotice, the progress dialog) so a module can migrate its own data with the same progress bar the system uses
Bug Fixes & Code Quality
- Private and blind rolls no longer turn public when a pool or damage roll is started from their chat card — a Foundry 14 change had been silently dropping the visibility of every follow-up roll
- Psi damage no longer rolls on a missed sleight when a pool spend turns the roll into a failure; weapons already had that check, both share it now
- Infection Tests inherit the visibility of the roll that triggered them, and run on the GM's client, so a blind test stops leaving a card in the player's own chat log
- A pool-raised result no longer silently drops its success-tier bonus die — this one had been wrong for both weapon and Psi damage rolls
- The sub-strain influence roll's success-tier modifier was applied backwards, which made result 1 (and often 2) nearly unreachable on an ordinary success
- The Gamma auto-push damage multiplier now applies to the virus-takeover damage roll, not only to a manually chosen push
- A sheet render crash that took out the entire window chrome whenever the previously active tab had disappeared
- Only the first private button on a chat card was hidden from users who don't own the actor; every button is judged on its own now
- The minimum Infection Rating is read from the discipline's trait tier instead of counting the sleights a character happens to own, which used to move the floor every time a sleight was added or removed
- An Infection Test on a card whose character no longer exists now says so instead of failing inside the roll
- Nine misspelled traits renamed to their RAW spelling (Autophagy, Anomalous Mind, Async Familiarity, Improved Beta, Mesh Naïveté, Submissiveness I/II/III, Emotion Susceptibility), plus PDF copy-paste artefacts cleaned out of the Mental Disorder descriptions
lang/es.jsonwas being maintained but never actually declared in the manifest, so Foundry never loaded it
UX & UI
- Health and Rez overlays no longer render behind the pool row for non-GMs
- Dialogs no longer collapse to their minimum height in Safari
- Click-to-zoom on item thumbnails throughout the system
- The actor directory's "Show Artwork" entry is split into Ego Persona, Morph and ID
- Special Skill and Knowledge Skill item sheets finally have a titlebar
- All 132 morphs carry their Morph Point values from Character Options
- The Psi tab got a general design pass, and the Private/Blind labels in chat were restyled
Under the hood
- The system has an automated test suite now: 390 tests across 40 suites, including snapshot coverage of actor and item preparation, plus an in-Foundry Quench harness for the things only a real world can test. This is huge because: YES - I tested all of this regressions by hand EVERY time until now... .
- A feature-folder import boundary, checked mechanically, so a feature on its way out of the core can't quietly reach back in