Files
the-sunken-reach/backend/src/game/data/multiclassPaths.js
T
joshuaandClaude Opus 5.5 86ef106969 V1.24.0: multiclassing, by each class's own level
- With the campaign setting on, the level-up checklist asks which class gains
  the level; a new class needs both classes' ability requirements (2014 rules)
- HP, Hit Dice, features, Boons, subclasses and counters go by each class's
  own level; spell slots add up to a caster level, pact slots apart
- A first level in a new class writes its level-1 gifts and what it teaches
- Eldritch Knight and Arcane Trickster cast from level 3 with real slots
- The sheet shows each class's road to 20 and suggested multiclass routes
  (Hexadin, Sorlock, fighter dip...) with the character's progress and scores

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:14:57 +02:00

117 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Suggested multiclass routes: well-known ways to combine classes, for a
// player choosing where their next level goes. Each route starts from a class
// (`from`) and lists its `steps` in order: take `class` up to `toLevel` (that
// class's own level). `subclass` is the subclass the route assumes, if any,
// and `why` what it buys. The requirements are checked against the character
// when shown (game/multiclass.js); none of this is enforced.
const MULTICLASS_PATHS = [
{
key: 'HEXADIN',
name: 'Hexadin',
from: 'PALADIN',
steps: [{ class: 'PALADIN', toLevel: 2 }, { class: 'WARLOCK', toLevel: 1, subclass: 'HEXBLADE' }, { class: 'PALADIN', toLevel: 18 }],
why: 'Hexblade lets you swing with Charisma, so one ability powers attacks, smites and auras.',
},
{
key: 'SORCADIN',
name: 'Sorcadin',
from: 'PALADIN',
steps: [{ class: 'PALADIN', toLevel: 6 }, { class: 'SORCERER', toLevel: 14 }],
why: 'Aura of Protection, then a deep pool of spell slots to pour into Divine Smite.',
},
{
key: 'SORLOCK',
name: 'Sorlock',
from: 'SORCERER',
steps: [{ class: 'SORCERER', toLevel: 2 }, { class: 'WARLOCK', toLevel: 2 }, { class: 'SORCERER', toLevel: 18 }],
why: 'Agonizing Eldritch Blast, quickened with Metamagic, and pact slots that come back on a short rest.',
},
{
key: 'GLOOM_ASSASSIN',
name: 'Gloom Assassin',
from: 'RANGER',
steps: [{ class: 'RANGER', toLevel: 5, subclass: 'GLOOM_STALKER' }, { class: 'ROGUE', toLevel: 3, subclass: 'ASSASSIN' }, { class: 'RANGER', toLevel: 12 }],
why: 'An enormous first round: extra attacks, advantage and automatic critical hits on the surprised.',
},
{
key: 'FIGHTER_DIP',
name: 'Fighter dip for anyone who swings',
from: null,
steps: [{ class: 'FIGHTER', toLevel: 2 }],
why: 'Two levels give a fighting style, Second Wind and Action Surge: one huge turn per rest.',
},
{
key: 'CLERIC_DIP',
name: 'Cleric dip for armor and healing',
from: 'WIZARD',
steps: [{ class: 'CLERIC', toLevel: 1 }, { class: 'WIZARD', toLevel: 19 }],
why: 'Armor and shields, healing words and a domain’s gifts on a wizard, for one level.',
},
{
key: 'BLADESINGER_FIGHTER',
name: 'Fighting wizard',
from: 'FIGHTER',
steps: [{ class: 'FIGHTER', toLevel: 2 }, { class: 'WIZARD', toLevel: 18, subclass: 'BLADESINGING' }],
why: 'Starts in armor with Action Surge, then grows into a Bladesinger with real spells.',
},
{
key: 'ROGUE_FIGHTER',
name: 'Skirmisher',
from: 'ROGUE',
steps: [{ class: 'ROGUE', toLevel: 1 }, { class: 'FIGHTER', toLevel: 2 }, { class: 'ROGUE', toLevel: 17 }],
why: 'Action Surge for a second Sneak Attack chance in a turn, and better armor.',
},
{
key: 'MONK_CLERIC',
name: 'Wisdom warrior',
from: 'MONK',
steps: [{ class: 'MONK', toLevel: 5 }, { class: 'CLERIC', toLevel: 2 }, { class: 'MONK', toLevel: 13 }],
why: 'Stunning Strike and Extra Attack first, then Wisdom-powered healing and Channel Divinity.',
},
{
key: 'BARBARIAN_FIGHTER',
name: 'Raging champion',
from: 'BARBARIAN',
steps: [{ class: 'BARBARIAN', toLevel: 5 }, { class: 'FIGHTER', toLevel: 3, subclass: 'CHAMPION' }, { class: 'BARBARIAN', toLevel: 12 }],
why: 'Reckless Attack with critical hits on 19–20: advantage makes those crits come often.',
},
{
key: 'DRUID_CLERIC',
name: 'Nature priest',
from: 'DRUID',
steps: [{ class: 'CLERIC', toLevel: 1, subclass: 'LIFE' }, { class: 'DRUID', toLevel: 19 }],
why: 'One Life Domain level makes every druid healing spell heal more, and adds heavy armor.',
},
{
key: 'BARD_WARLOCK',
name: 'Eldritch bard',
from: 'BARD',
steps: [{ class: 'BARD', toLevel: 6 }, { class: 'WARLOCK', toLevel: 2 }, { class: 'BARD', toLevel: 12 }],
why: 'Eldritch Blast with Agonizing Blast as a dependable attack for a support caster.',
},
{
key: 'ARTIFICER_WIZARD',
name: 'Arcane engineer',
from: 'ARTIFICER',
steps: [{ class: 'ARTIFICER', toLevel: 2 }, { class: 'WIZARD', toLevel: 18 }],
why: 'Infusions and a tool focus early, then a wizard’s full spell list, all on Intelligence.',
},
{
key: 'RANGER_DRUID',
name: 'Wild warden',
from: 'RANGER',
steps: [{ class: 'RANGER', toLevel: 5 }, { class: 'DRUID', toLevel: 2 }, { class: 'RANGER', toLevel: 13 }],
why: 'Extra Attack and a ranger’s toolkit, plus Wild Shape for scouting and a second health bar.',
},
{
key: 'WARLOCK_PALADIN',
name: 'Blade pact knight',
from: 'WARLOCK',
steps: [{ class: 'WARLOCK', toLevel: 3, subclass: 'HEXBLADE' }, { class: 'PALADIN', toLevel: 2 }, { class: 'WARLOCK', toLevel: 15 }],
why: 'A pact weapon swung with Charisma, and short-rest slots to burn on Divine Smite.',
},
];
module.exports = { MULTICLASS_PATHS };