Dhampir subraces: why older characters are not compatible, and why Githyanki is not coming #1230
Yoonmoonsik
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Dhampir has been going into the mod one host race at a time — Human first, then Elf, Tiefling, Dwarf, Halfling, Gnome, and in this update Drow and Half-Orc. Two things about that need explaining: why several of those updates broke characters made on earlier versions, and why Githyanki, which was supposed to be on the list, is not. Both have the same cause, so this covers them together.
How a race is put together. A race in this game is an entry plus a progression table, and that table is what actually hands out traits: at level 1 you get these passives and these boosts, at level 3 this, at level 5 this. Races that have subraces have a table each — the race table holds what every version shares, and the subrace table holds what makes a High Elf a High Elf.
Dhampir is implemented as a subrace, and the point of doing it that way is that you give something up. A Dhampir Elf gets Trace of Undeath, Vampiric Bite and a little extra speed instead of Fey Ancestry, not on top of it — otherwise every Dhampir would be a strictly better version of its host race. That only works if the host race's signature traits sit in its subrace tables rather than in the race table. Where they were not already arranged that way, I had to move them, and moving them is exactly what breaks old characters.
What each wave actually moved.
Why that breaks a character you already have. The table is read as you take levels. A character who has already taken those levels has already been handed whatever the table said at the time, and nothing goes back and recomputes it because the mod updated. So when a trait moves from the base race table to a subrace table, an existing character is left holding the old arrangement — and the trait can simply go missing.
It is worse when the subrace itself is new. A Human created before Human had subraces, or a Half-Orc created before this update, has an empty subrace field, recorded at character creation and part of the save from then on. An empty subrace field means the new table is not attached to that character at all, so there is nothing for the moved traits to arrive through.
And this is not something I can patch around. A mod defines what the tables contain; it does not get to reach into your save and rewrite what a character recorded when they were made. There is no version of "move the traits down" that leaves already-created characters untouched — the move is the whole feature, and old characters were built against the arrangement it replaces. That is why the Drow and Half-Orc releases were flagged as breaking changes rather than shipped quietly. The earlier waves were not, and they should have been: Human, and the Elf, Tiefling, Dwarf, Halfling and Gnome pass, were exactly the same kind of change. They went out unlabelled because I did not realise at the time that moving traits down had that consequence for characters who already existed; I only understood it when the same split came round again. So if a respec crashed your game after one of those updates and you had no idea why, that is why no warning came with it.
What to do about it. Start a new campaign. I know that is not the answer anyone wants, and the Drow and Half-Orc notes suggested a respec instead — treat that as superseded. A respec re-runs your progression against the tables as they exist now, and on a race that has been split those are not the tables your character was created against: the traits the respec goes looking for have moved to a subrace table that character is not attached to. The split is what causes it, and the result can be a crash, so a respec is not a safe way to recover an affected character. A campaign begun after the change is fine, and unaffected races are fine; it is specifically an in-progress save on a race whose traits moved that you should not try to salvage.
This is not limited to your own characters, either: the Half-Orc and Drow hirelings were still pointing at their base race with no subrace after this update, so they came out missing Relentless Endurance, Adrenaline Rush, Fey Ancestry and the rest. That one I could fix, by declaring their origins with a subrace attached, and it is fixed.
Which brings me to Githyanki. It was meant to be part of this update. I built the whole thing, the result was not the feature I set out to build, and I removed it before any of it shipped.
Githyanki is a flat race, so it needed the Human and Half-Orc treatment. Its level 1 entry holds Martial Prodigy, resistance to Psychic damage and two racial spell grants; level 3 adds Enhance Leap and a spell slot; level 5 adds Misty Step and another. All of that had to move into a new Githyanki subrace so a Dhampir subrace could sit beside it and offer the vampiric traits in place of the psionics.
The problem is everything in the section above, applied to characters I do not control. A Githyanki you create yourself comes out correct. Every Githyanki the game itself places has an empty subrace field and comes out stripped — no Martial Prodigy, no psychic resistance, no psionics, no Misty Step. Lae'zel included. The feature I wanted was "Githyanki can also be Dhampir". The feature I had was "Githyanki companions and NPCs lose their racial traits, and incidentally there is a Dhampir option". Starting a new campaign is not an answer for an NPC either: Lae'zel is placed by the story with the same empty subrace field in every playthrough, so a fresh save produces the same stripped companion.
There are four ways out of that, and I went through all of them:
None of the four gives a Githyanki Dhampir that is both fair and safe for the Githyanki already in your game. The two that would work correctly are manual sweeps across a large number of characters, and I am not confident I would get them complete — and an incomplete sweep does not announce itself, it just quietly damages NPCs that were fine before.
To be clear, this is not a lore objection. A Githyanki Dhampir is perfectly plausible in the fiction, and I know there are people who specifically want to play one. I am declining it for the reasons above, and declining it permanently rather than parking it as a maybe, so nobody waits on an update that is not coming. The list of races that can be a Dhampir is final at the eight now in the game, and since none of the Githyanki work was ever released, there is nothing on your end to undo.
All reactions