- 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>
117 lines
4.8 KiB
JavaScript
117 lines
4.8 KiB
JavaScript
// 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 };
|