pf2e-primer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +31 -0
- package/README.md +106 -0
- package/bin/cli.mjs +86 -0
- package/data/reference.generated.js +6 -0
- package/dist/icon.svg +6 -0
- package/dist/index.html +2275 -0
- package/dist/manifest.webmanifest +13 -0
- package/dist/sw.js +60 -0
- package/notice.md +124 -0
- package/package.json +47 -0
- package/src/content.js +547 -0
- package/src/engine.js +1210 -0
- package/src/icon.svg +6 -0
- package/src/manifest.webmanifest +13 -0
- package/src/styles.css +445 -0
- package/src/sw.js +60 -0
- package/src/template.html +67 -0
- package/tools/build.py +60 -0
- package/tools/build_reference.py +249 -0
- package/tools/test.mjs +277 -0
package/src/content.js
ADDED
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
/* ============================================================
|
|
2
|
+
CONTENT — the primer itself. Everything you might want to
|
|
3
|
+
reword for your table lives in this file; engine.js only
|
|
4
|
+
renders it. Rules text quoted at the table is NOT here: it
|
|
5
|
+
comes verbatim from data/reference.generated.js (Foundry
|
|
6
|
+
pf2e, Paizo ORC/OGL) so the primer can't drift from the book.
|
|
7
|
+
============================================================ */
|
|
8
|
+
|
|
9
|
+
/* Swap these five strings to re-flavour every example in the app. */
|
|
10
|
+
const FLAVOR = {
|
|
11
|
+
ship: "Salt Mercy",
|
|
12
|
+
port: "Bracklewater",
|
|
13
|
+
npc: "Quartermaster Bel",
|
|
14
|
+
npcRole: "runs the dockside stores",
|
|
15
|
+
foe: "Deck Thug",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/* ============================================================
|
|
19
|
+
PREGENS — two level-1 characters the demos roll with.
|
|
20
|
+
Every number is hand-computed from the level-1 build shown in
|
|
21
|
+
`build`, so a player can check the arithmetic against the book:
|
|
22
|
+
proficiency bonus = level + rank (T2 / E4 / M6 / L8), and
|
|
23
|
+
untrained adds nothing at all.
|
|
24
|
+
============================================================ */
|
|
25
|
+
const PREGENS = [
|
|
26
|
+
{
|
|
27
|
+
id: "mari",
|
|
28
|
+
name: 'Marisol "Mari" Vane',
|
|
29
|
+
short: "Mari",
|
|
30
|
+
cls: "Fighter",
|
|
31
|
+
ancestry: "Human",
|
|
32
|
+
level: 1,
|
|
33
|
+
blurb: `Deckhand off the ${FLAVOR.ship} who got tired of being the one holding the rope. Boarding sword, steel shield, short fuse.`,
|
|
34
|
+
build: "Str 18 · Dex 14 · Con 14 · Int 10 · Wis 12 · Cha 10 — scale mail, steel shield, boarding sword (longsword) & dagger",
|
|
35
|
+
abilities: { str: 4, dex: 2, con: 2, int: 0, wis: 1, cha: 0 },
|
|
36
|
+
hpParts: { ancestry: 8, cls: 10, con: 2 },
|
|
37
|
+
armor: { item: 3, dexCap: 2, rank: "trained", name: "scale mail" },
|
|
38
|
+
hp: 20,
|
|
39
|
+
ac: 18,
|
|
40
|
+
acNote: "10 + 2 Dex (capped by scale mail) + 3 armour + 3 proficiency (trained, +2, plus your level)",
|
|
41
|
+
shieldBonus: 2,
|
|
42
|
+
perception: 6,
|
|
43
|
+
perceptionRank: "expert",
|
|
44
|
+
saves: { fortitude: 7, reflex: 7, will: 4 },
|
|
45
|
+
saveRanks: { fortitude: "expert", reflex: "expert", will: "trained" },
|
|
46
|
+
skills: {
|
|
47
|
+
athletics: 7, acrobatics: 5, intimidation: 3,
|
|
48
|
+
medicine: 4, survival: 4, "sailing lore": 3,
|
|
49
|
+
},
|
|
50
|
+
classDC: 17,
|
|
51
|
+
hero: 1,
|
|
52
|
+
tag: "the one who hits things",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "sable",
|
|
56
|
+
name: "Sable Quist",
|
|
57
|
+
short: "Sable",
|
|
58
|
+
cls: "Bard",
|
|
59
|
+
ancestry: "Gnome",
|
|
60
|
+
level: 1,
|
|
61
|
+
blurb: `Shanty-singer, rumour-broker, and the reason half of ${FLAVOR.port} still speaks to the crew.`,
|
|
62
|
+
build: "Str 10 · Dex 14 · Con 14 · Int 12 · Wis 10 · Cha 18 — leather armour, rapier, a very loud voice",
|
|
63
|
+
abilities: { str: 0, dex: 2, con: 2, int: 1, wis: 0, cha: 4 },
|
|
64
|
+
hpParts: { ancestry: 8, cls: 8, con: 2 },
|
|
65
|
+
armor: { item: 1, dexCap: 4, rank: "trained", name: "leather armour" },
|
|
66
|
+
hp: 18,
|
|
67
|
+
ac: 16,
|
|
68
|
+
acNote: "10 + 2 Dex + 1 armour + 3 proficiency (trained, +2, plus your level)",
|
|
69
|
+
shieldBonus: 0,
|
|
70
|
+
perception: 3,
|
|
71
|
+
perceptionRank: "trained",
|
|
72
|
+
saves: { fortitude: 5, reflex: 5, will: 5 },
|
|
73
|
+
saveRanks: { fortitude: "trained", reflex: "trained", will: "expert" },
|
|
74
|
+
skills: {
|
|
75
|
+
diplomacy: 7, performance: 7, deception: 7, occultism: 4,
|
|
76
|
+
society: 4, stealth: 5, acrobatics: 5, "sailing lore": 4,
|
|
77
|
+
},
|
|
78
|
+
spellAttack: 7,
|
|
79
|
+
spellDC: 17,
|
|
80
|
+
hero: 1,
|
|
81
|
+
tag: "the one who talks and sings",
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
/* Rank bonuses, and which ability each skill runs off. The demos and the
|
|
86
|
+
test suite both use these to re-derive every number on both sheets:
|
|
87
|
+
modifier = ability + rank + level (untrained adds nothing at all). */
|
|
88
|
+
const RANK_BONUS = { untrained: 0, trained: 2, expert: 4, master: 6, legendary: 8 };
|
|
89
|
+
const SKILL_ABILITY = {
|
|
90
|
+
acrobatics: "dex", arcana: "int", athletics: "str", crafting: "int",
|
|
91
|
+
deception: "cha", diplomacy: "cha", intimidation: "cha", medicine: "wis",
|
|
92
|
+
nature: "wis", occultism: "int", performance: "cha", religion: "wis",
|
|
93
|
+
society: "int", stealth: "dex", survival: "wis", thievery: "dex",
|
|
94
|
+
"sailing lore": "int",
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/* ============================================================
|
|
98
|
+
THE TEACHING DUMMY — not an official statblock. A plausible
|
|
99
|
+
level-1 brawler with round numbers, so the demos have
|
|
100
|
+
something to roll against. Its DCs are 10 + its modifier,
|
|
101
|
+
which is exactly how the GM turns any modifier into a DC.
|
|
102
|
+
============================================================ */
|
|
103
|
+
const FOE = {
|
|
104
|
+
name: FLAVOR.foe,
|
|
105
|
+
blurb: "A bruiser off a rival crew. Made up for this page — your GM's monsters come from the Monster Core.",
|
|
106
|
+
ac: 16,
|
|
107
|
+
hp: 20,
|
|
108
|
+
saves: { fortitude: 7, reflex: 5, will: 3 },
|
|
109
|
+
perception: 5,
|
|
110
|
+
strike: { label: "cutlass", bonus: 8, dmg: "1d6+3", dtype: "slashing" },
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/* ============================================================
|
|
114
|
+
TURN BUILDER — the palette each pregen can spend actions on.
|
|
115
|
+
cost how many of the three actions it eats
|
|
116
|
+
attack counts toward the multiple attack penalty
|
|
117
|
+
agile agile weapons take the smaller MAP (-4/-8)
|
|
118
|
+
check a skill check against one of the foe's DCs
|
|
119
|
+
============================================================ */
|
|
120
|
+
const TURN_ACTIONS = {
|
|
121
|
+
mari: [
|
|
122
|
+
{ key: "sword", label: "Strike — boarding sword", cost: 1, slug: "strike", attack: true,
|
|
123
|
+
bonus: 9, dmg: "1d8+4", dtype: "slashing", kind: "attack" },
|
|
124
|
+
{ key: "dagger", label: "Strike — dagger (agile)", cost: 1, slug: "strike", attack: true, agile: true,
|
|
125
|
+
bonus: 9, dmg: "1d4+4", dtype: "piercing", kind: "attack",
|
|
126
|
+
hint: "Agile weapons take a smaller multiple attack penalty: −4 then −8." },
|
|
127
|
+
{ key: "trip", label: "Trip", cost: 1, slug: "trip", attack: true, kind: "attack",
|
|
128
|
+
check: { skill: "Athletics", bonus: 7, vs: "reflex" }, effect: "trip",
|
|
129
|
+
hint: "Trip is an attack too — it takes the multiple attack penalty and it adds to it." },
|
|
130
|
+
{ key: "grapple", label: "Grapple", cost: 1, slug: "grapple", attack: true, kind: "attack",
|
|
131
|
+
check: { skill: "Athletics", bonus: 7, vs: "fortitude" }, effect: "grapple" },
|
|
132
|
+
{ key: "demoralize", label: "Demoralize", cost: 1, slug: "demoralize", kind: "skill",
|
|
133
|
+
check: { skill: "Intimidation", bonus: 3, vs: "will" }, effect: "demoralize",
|
|
134
|
+
hint: "Not an attack — no multiple attack penalty, ever." },
|
|
135
|
+
{ key: "raise", label: "Raise a Shield", cost: 1, slug: "raise-a-shield", kind: "defend", effect: "raise",
|
|
136
|
+
hint: "+2 circumstance to your AC until the start of your next turn." },
|
|
137
|
+
{ key: "stride", label: "Stride", cost: 1, slug: "stride", kind: "move" },
|
|
138
|
+
{ key: "step", label: "Step", cost: 1, slug: "step", kind: "move",
|
|
139
|
+
hint: "5 feet, and it doesn't trigger reactions." },
|
|
140
|
+
{ key: "seek", label: "Seek", cost: 1, slug: "seek", kind: "skill", effect: "seek" },
|
|
141
|
+
{ key: "interact", label: "Interact — draw a weapon", cost: 1, slug: "interact", kind: "other" },
|
|
142
|
+
],
|
|
143
|
+
sable: [
|
|
144
|
+
{ key: "anthem", label: "Courageous Anthem", cost: 1, kind: "spell", effect: "anthem",
|
|
145
|
+
spell: { name: "Courageous Anthem", rank: "cantrip (focus)", text: "You and all allies in the area gain a +1 status bonus to attack rolls, damage rolls, and saves against fear effects." },
|
|
146
|
+
hint: "A focus cantrip. One action, and it improves every attack you make afterwards this round." },
|
|
147
|
+
{ key: "tk", label: "Telekinetic Projectile", cost: 2, kind: "spell", attack: true, spellAttack: true,
|
|
148
|
+
bonus: 7, dmg: "2d6", dtype: "bludgeoning",
|
|
149
|
+
spell: { name: "Telekinetic Projectile", rank: "cantrip", text: "Make a spell attack roll. If you hit, you deal 2d6 bludgeoning, piercing, or slashing damage — as appropriate for the object you hurled." },
|
|
150
|
+
hint: "Spell attack rolls take the multiple attack penalty just like a Strike." },
|
|
151
|
+
{ key: "fear", label: "Cast Fear (rank 1)", cost: 2, kind: "spell", effect: "fear",
|
|
152
|
+
save: { name: "Will", dc: 17 },
|
|
153
|
+
spell: { name: "Fear", rank: "rank 1", text: "The target attempts a Will save. Critical Success: unaffected. Success: frightened 1. Failure: frightened 2. Critical Failure: frightened 3 and fleeing for 1 round." },
|
|
154
|
+
hint: "You don't roll to hit — the target rolls to resist. Your spell DC is the number it has to beat." },
|
|
155
|
+
{ key: "soothe", label: "Cast Soothe (rank 1)", cost: 2, kind: "spell", effect: "soothe",
|
|
156
|
+
spell: { name: "Soothe", rank: "rank 1", text: "The target regains 1d10+4 Hit Points and gains a +2 status bonus to saves against mental effects for 1 minute." },
|
|
157
|
+
hint: "Healing is a spell slot well spent when someone is dying." },
|
|
158
|
+
{ key: "feint", label: "Feint", cost: 1, slug: "feint", kind: "skill",
|
|
159
|
+
check: { skill: "Deception", bonus: 7, vs: "perception" }, effect: "feint" },
|
|
160
|
+
{ key: "stride", label: "Stride", cost: 1, slug: "stride", kind: "move" },
|
|
161
|
+
{ key: "step", label: "Step", cost: 1, slug: "step", kind: "move" },
|
|
162
|
+
{ key: "hide", label: "Hide", cost: 1, slug: "hide", kind: "skill" },
|
|
163
|
+
{ key: "seek", label: "Seek", cost: 1, slug: "seek", kind: "skill", effect: "seek" },
|
|
164
|
+
{ key: "interact", label: "Interact — pull a rope loose", cost: 1, slug: "interact", kind: "other" },
|
|
165
|
+
],
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
/* Reactions are listed apart: you get one, and it happens on someone else's turn. */
|
|
169
|
+
const REACTIONS = [
|
|
170
|
+
{ slug: "aid", label: "Aid", note: "Prepare on your turn, then help an ally's check. Success: +1 circumstance bonus." },
|
|
171
|
+
{ slug: "grab-an-edge", label: "Grab an Edge", note: "When you fall off something — the sea is full of edges." },
|
|
172
|
+
{ slug: "arrest-a-fall", label: "Arrest a Fall", note: "If you can fly or Cast a Spell to catch yourself." },
|
|
173
|
+
];
|
|
174
|
+
|
|
175
|
+
/* ============================================================
|
|
176
|
+
EXPLORATION — the activity board. `governing` is the statistic
|
|
177
|
+
the GM most often rolls or references for you; `secret` marks
|
|
178
|
+
the ones the GM usually rolls behind the screen.
|
|
179
|
+
============================================================ */
|
|
180
|
+
const EXPLORATION_ACTIVITIES = [
|
|
181
|
+
{ slug: "search", label: "Search", governing: "Perception", secret: true,
|
|
182
|
+
blurb: "You sweep for hidden doors, traps and lurkers as you go. Half speed." },
|
|
183
|
+
{ slug: "avoid-notice", label: "Avoid Notice", governing: "Stealth", secret: true,
|
|
184
|
+
blurb: "You move so as not to be seen. Sets you up to start a fight hidden." },
|
|
185
|
+
{ slug: "scout", label: "Scout", governing: "—", secret: false,
|
|
186
|
+
blurb: "You range ahead and back. Everyone gets +1 to initiative." },
|
|
187
|
+
{ slug: "defend", label: "Defend", governing: "—", secret: false,
|
|
188
|
+
blurb: "Shield up, half speed. You're ready when it goes wrong." },
|
|
189
|
+
{ slug: "investigate", label: "Investigate", governing: "a knowledge skill", secret: true,
|
|
190
|
+
blurb: "You Recall Knowledge as you travel, about whatever's around you." },
|
|
191
|
+
{ slug: "follow-the-expert", label: "Follow the Expert", governing: "an ally's skill", secret: false,
|
|
192
|
+
blurb: "Copy someone better than you and borrow their proficiency. The untrained character's best friend." },
|
|
193
|
+
{ slug: "hustle", label: "Hustle", governing: "Constitution", secret: false,
|
|
194
|
+
blurb: "Double travel speed, for as long as your Constitution holds out." },
|
|
195
|
+
{ slug: "detect-magic", label: "Detect Magic", governing: "—", secret: false,
|
|
196
|
+
blurb: "Cast detect magic over and over as you walk." },
|
|
197
|
+
{ slug: "track", label: "Track", governing: "Survival", secret: true,
|
|
198
|
+
blurb: "Follow a trail. Half speed." },
|
|
199
|
+
{ slug: "cover-tracks", label: "Cover Tracks", governing: "Survival", secret: false,
|
|
200
|
+
blurb: "Hide the trail you're leaving. Half speed." },
|
|
201
|
+
{ slug: "repeat-a-spell", label: "Repeat a Spell", governing: "—", secret: false,
|
|
202
|
+
blurb: "Keep a one-minute spell running as you travel." },
|
|
203
|
+
{ slug: "refocus", label: "Refocus", governing: "—", secret: false,
|
|
204
|
+
blurb: "Ten minutes of quiet gets a focus point back." },
|
|
205
|
+
];
|
|
206
|
+
|
|
207
|
+
/* Things the party does when they stop, rather than while moving. */
|
|
208
|
+
const EXPLORATION_STOPS = [
|
|
209
|
+
{ slug: "treat-wounds", label: "Treat Wounds", note: "Ten minutes and a healer's toolkit. This is your between-fights healing — DC 15 for a trained medic." },
|
|
210
|
+
{ slug: "recall-knowledge", label: "Recall Knowledge", note: "One action or a moment's thought: what do I know about this thing?" },
|
|
211
|
+
{ slug: "seek", label: "Seek", note: "The single-action version, once you're standing in the room that worries you." },
|
|
212
|
+
{ slug: "sense-motive", label: "Sense Motive", note: "Is this person lying to me? The GM rolls it in secret." },
|
|
213
|
+
{ slug: "gather-information", label: "Gather Information", note: "A couple of hours in the taverns of " + FLAVOR.port + "." },
|
|
214
|
+
];
|
|
215
|
+
|
|
216
|
+
/* ============================================================
|
|
217
|
+
SOCIAL — the attitude ladder and the moves that shift it.
|
|
218
|
+
Outcome rules mirror the action text in the reference data.
|
|
219
|
+
============================================================ */
|
|
220
|
+
const ATTITUDES = ["hostile", "unfriendly", "indifferent", "friendly", "helpful"];
|
|
221
|
+
|
|
222
|
+
const SOCIAL_MOVES = [
|
|
223
|
+
{ key: "impression", slug: "make-an-impression", label: "Make an Impression", skill: "Diplomacy",
|
|
224
|
+
vs: "Will DC", time: "1 minute of conversation",
|
|
225
|
+
outcomes: { cs: "+2 steps", s: "+1 step", f: "no change", cf: "−1 step" } },
|
|
226
|
+
{ key: "request", slug: "request", label: "Request", skill: "Diplomacy",
|
|
227
|
+
vs: "a DC the GM sets", time: "1 action",
|
|
228
|
+
needs: "friendly", outcomes: { cs: "they agree, no strings", s: "they agree, with conditions", f: "refused, maybe a counter-offer", cf: "refused, −1 step" } },
|
|
229
|
+
{ key: "coerce", slug: "coerce", label: "Coerce", skill: "Intimidation",
|
|
230
|
+
vs: "Will DC", time: "1 minute of threats",
|
|
231
|
+
outcomes: { cs: "they comply — then turn unfriendly", s: "they comply — then turn unfriendly and may act against you", f: "refused, and now unfriendly", cf: "refused, now hostile, immune for a week" } },
|
|
232
|
+
{ key: "lie", slug: "lie", label: "Lie", skill: "Deception",
|
|
233
|
+
vs: "Perception DC", time: "1 round or more",
|
|
234
|
+
outcomes: { cs: "believed", s: "believed", f: "not believed, +4 against your next lies", cf: "not believed, +4 against your next lies" } },
|
|
235
|
+
{ key: "demoralize", slug: "demoralize", label: "Demoralize", skill: "Intimidation",
|
|
236
|
+
vs: "Will DC", time: "1 action — this one works in a fight",
|
|
237
|
+
outcomes: { cs: "frightened 2", s: "frightened 1", f: "nothing", cf: "nothing" } },
|
|
238
|
+
];
|
|
239
|
+
|
|
240
|
+
/* ============================================================
|
|
241
|
+
DOWNTIME — what you do with days you're not adventuring.
|
|
242
|
+
Deliberately no income table: the numbers depend on a task
|
|
243
|
+
level your GM assigns, and Earn Income's own text (in Cards)
|
|
244
|
+
explains the process.
|
|
245
|
+
============================================================ */
|
|
246
|
+
const DOWNTIME_ACTIVITIES = [
|
|
247
|
+
{ slug: "earn-income", label: "Earn Income", skill: "Crafting, Performance or a Lore",
|
|
248
|
+
blurb: "Take a job. Your GM sets a task level; your proficiency and your roll set the daily rate." },
|
|
249
|
+
{ slug: "craft", label: "Craft", skill: "Crafting",
|
|
250
|
+
blurb: "Make the thing instead of buying it. Days of work, and you need the formula." },
|
|
251
|
+
{ slug: "learn-a-spell", label: "Learn a Spell", skill: "your magic skill",
|
|
252
|
+
blurb: "Spellcasters: add something new to the book or the repertoire." },
|
|
253
|
+
{ slug: "retraining", label: "Retraining", skill: "—",
|
|
254
|
+
blurb: "Change a feat or a skill you regret. Weeks, not minutes — and the whole point is that regret is fixable." },
|
|
255
|
+
{ slug: "long-term-rest", label: "Long-Term Rest", skill: "—",
|
|
256
|
+
blurb: "Full days of doing nothing but healing. The slow, free option." },
|
|
257
|
+
{ slug: "research", label: "Research", skill: "a knowledge skill",
|
|
258
|
+
blurb: "Dig through a library or an archive for a specific answer." },
|
|
259
|
+
{ slug: "treat-disease", label: "Treat Disease", skill: "Medicine",
|
|
260
|
+
blurb: "Days of nursing someone through something nasty." },
|
|
261
|
+
{ slug: "subsist", label: "Subsist", skill: "Survival or Society",
|
|
262
|
+
blurb: "Feed and shelter yourself when there's no coin for an inn." },
|
|
263
|
+
];
|
|
264
|
+
|
|
265
|
+
/* ============================================================
|
|
266
|
+
THE BRIDGE — what you already know, and what PF2e does with it.
|
|
267
|
+
============================================================ */
|
|
268
|
+
const BRIDGE = [
|
|
269
|
+
["Move, action, maybe a bonus action", "Three actions. Spend them on anything, in any order — three Strikes if you like."],
|
|
270
|
+
["Roll high, hit or miss", "Four outcomes. Beat the DC by 10 and it's a critical success; miss it by 10 and it's a critical failure."],
|
|
271
|
+
["Natural 20 is a crit", "A natural 20 moves your result one step better. A 20 on what would have been a failure is just a success."],
|
|
272
|
+
["Advantage / disadvantage", "Named bonuses: circumstance, status, item. Two of the same type don't stack — only the biggest applies."],
|
|
273
|
+
["Proficiency bonus by level", "Your level plus a rank bonus (trained +2, expert +4, master +6, legendary +8). Untrained adds nothing at all — not even your level."],
|
|
274
|
+
["Race and class", "Ancestry, heritage, background and class — each one hands you feats to pick at level 1."],
|
|
275
|
+
["Death saving throws", "A dying value that climbs, recovery checks to shake it off, and a wounded condition that remembers."],
|
|
276
|
+
["Concentration on a spell", "Sustain a Spell: an action, on your turn, every round you want it to keep going."],
|
|
277
|
+
["\"I roll Persuasion\"", "Named skill actions with four written outcomes: Make an Impression, Coerce, Demoralize, Trip, Feint."],
|
|
278
|
+
["Short rest, hit dice", "Treat Wounds: ten minutes, a Medicine check, and most of the party's hit points back."],
|
|
279
|
+
];
|
|
280
|
+
|
|
281
|
+
/* ============================================================
|
|
282
|
+
GLOSSARY — the jargon that trips up players coming from
|
|
283
|
+
another system.
|
|
284
|
+
============================================================ */
|
|
285
|
+
const GLOSSARY = [
|
|
286
|
+
["Action", "One of the three things you do on your turn. The ◆ symbol. Three of them, plus one reaction."],
|
|
287
|
+
["Activity", "Something that eats more than one action, or minutes and hours of exploration time. Casting most spells is a two-action activity."],
|
|
288
|
+
["MAP", "Multiple Attack Penalty. Your second attack in a turn is at −5, the third at −10 (−4 and −8 with an agile weapon). It resets every turn."],
|
|
289
|
+
["DC", "Difficulty Class — the number to beat. Any modifier can become a DC: add 10 to it. Your AC is just your DC to be hit."],
|
|
290
|
+
["Degrees of success", "Critical success, success, failure, critical failure. Ten over or ten under moves you a step; a natural 20 or 1 moves you a step."],
|
|
291
|
+
["Secret check", "A roll the GM makes for you, so you don't know how well you did. Perception, Stealth and knowledge checks are often secret."],
|
|
292
|
+
["Flat check", "A d20 with no modifiers at all, against a fixed DC — for concealment, persistent damage, and recovery from dying."],
|
|
293
|
+
["Proficiency rank", "Untrained, trained, expert, master, legendary. Worth +0, +2, +4, +6, +8 — plus your level, unless you're untrained."],
|
|
294
|
+
["Status / circumstance / item", "The three bonus types. Same type doesn't stack; different types do. This is why a shield (+2 circumstance) and a spell (+1 status) both help."],
|
|
295
|
+
["Off-guard", "−2 circumstance to AC. What used to be called flat-footed. Being flanked or prone does it to you."],
|
|
296
|
+
["Hero point", "You start each session with one. Spend it to reroll anything; spend all of them to cheat death."],
|
|
297
|
+
["Focus point", "Fuel for a class's signature spells. Ten minutes of Refocus gets one back."],
|
|
298
|
+
["Encounter / exploration / downtime", "The three gears the game shifts between: rounds, minutes, days."],
|
|
299
|
+
];
|
|
300
|
+
|
|
301
|
+
/* ============================================================
|
|
302
|
+
CHAPTERS — the primer proper. Section types are rendered by
|
|
303
|
+
engine.js: prose, note, bridge, map, cards, steps, demo, ref,
|
|
304
|
+
gm (GM mode only), links.
|
|
305
|
+
============================================================ */
|
|
306
|
+
const CHAPTERS = [
|
|
307
|
+
/* ---------------------------------------------------------- */
|
|
308
|
+
{
|
|
309
|
+
key: "start", label: "Start", icon: "compass",
|
|
310
|
+
title: "Weighing anchor",
|
|
311
|
+
lede: "You already know how to play a roleplaying game. This page is only about what Pathfinder does differently — and it's concentrated in three places.",
|
|
312
|
+
sections: [
|
|
313
|
+
{ type: "prose", h: "The short version", p: [
|
|
314
|
+
"Pathfinder 2e is fussy in exactly one direction: it wants your <b>specific</b> intention. Not \"I attack\" but \"I Strike with my sword, then Trip him, then Raise my Shield.\" In return it gives you a game where those choices genuinely matter, and where the rules for them are written down instead of adjudicated fresh every time.",
|
|
315
|
+
"Three things to take away today: <b>how a roll resolves</b> (four outcomes, not two), <b>how a turn is spent</b> (three actions, no categories), and <b>which gear the game is in</b> (encounter, exploration, downtime). Everything else you can look up at the table.",
|
|
316
|
+
] },
|
|
317
|
+
{ type: "bridge", h: "What you know → what PF2e does" },
|
|
318
|
+
{ type: "prose", h: "The one mechanic", p: [
|
|
319
|
+
"Roll a d20, add a modifier, compare to a Difficulty Class. That's the whole game. Attacks compare to Armour Class, spells compare to your spell DC, jumping a gap compares to a DC the GM picked. AC is not a special case — it's just the DC to hit you.",
|
|
320
|
+
"Where PF2e differs is what happens next. You don't just hit or miss.",
|
|
321
|
+
] },
|
|
322
|
+
{ type: "cards", h: "Four outcomes, every time", items: [
|
|
323
|
+
{ h: "Critical success", p: "You beat the DC by 10 or more. Double damage on an attack; the best version of whatever you were attempting." },
|
|
324
|
+
{ h: "Success", p: "You met or beat the DC." },
|
|
325
|
+
{ h: "Failure", p: "You missed it by 1 to 9." },
|
|
326
|
+
{ h: "Critical failure", p: "You missed the DC by 10 or more. Usually something actively goes wrong." },
|
|
327
|
+
] },
|
|
328
|
+
{ type: "note", tone: "tip", p: [
|
|
329
|
+
"<b>Natural 20 and natural 1 are not results — they're nudges.</b> A 20 on the die moves your outcome one step better, a 1 moves it one step worse. A natural 20 that still doesn't beat the DC is a success, not a critical. A natural 1 on a roll that beat the DC by 12 is still a success.",
|
|
330
|
+
] },
|
|
331
|
+
{ type: "pregens", h: "The two characters the demos roll with" },
|
|
332
|
+
{ type: "demo", id: "check", h: "Try it",
|
|
333
|
+
p: "Pick who's rolling and what they're rolling against. The maths is shown every time, including the two nudges." },
|
|
334
|
+
{ type: "prose", h: "Where your modifier comes from", p: [
|
|
335
|
+
"Almost every modifier in the game is <b>ability modifier + proficiency</b>, and proficiency is <b>your level + a rank bonus</b>: trained +2, expert +4, master +6, legendary +8. Untrained adds <i>nothing</i> — not the rank, not your level.",
|
|
336
|
+
"That last part is the design in a nutshell. The gap between a trained character and an untrained one is small at level 1 and enormous at level 10, and it means a character who is trained in the right skill is always the right person for the job.",
|
|
337
|
+
"So Mari's Athletics of +7 is Str +4, trained +2, and level 1. Sable's Will save of +5 is Wis +0, expert +4, and level 1. You can rebuild every number on both sheets from that sentence.",
|
|
338
|
+
] },
|
|
339
|
+
{ type: "cards", h: "Three kinds of bonus, and they don't all stack", items: [
|
|
340
|
+
{ h: "Circumstance", p: "From the situation: cover, a raised shield, good footing. Only the largest circumstance bonus applies." },
|
|
341
|
+
{ h: "Status", p: "From spells and conditions: a bard's anthem, being frightened. Only the largest status bonus applies — and status penalties work the same way." },
|
|
342
|
+
{ h: "Item", p: "From gear: armour, a magic weapon. Only the largest item bonus applies." },
|
|
343
|
+
{ h: "Different types stack", p: "Shield (+2 circumstance) plus Courageous Anthem (+1 status) is +3. Two spells both giving +1 status is still +1." },
|
|
344
|
+
] },
|
|
345
|
+
{ type: "prose", h: "Hero points", p: [
|
|
346
|
+
"You start each session with one, and the GM hands more out for good play. Spend one to <b>reroll any check you just made</b> — you take the new result, so it's a gamble, not a safety net. Spend <i>all</i> of them to avoid dying outright.",
|
|
347
|
+
"Take the reroll. New players sit on hero points until the session ends and they evaporate.",
|
|
348
|
+
] },
|
|
349
|
+
{ type: "map", h: "Three pillars, three gears" },
|
|
350
|
+
{ type: "prose", p: [
|
|
351
|
+
"You know the three pillars — fighting, exploring, talking. PF2e agrees, but it slices the game a different way: into three <b>modes</b>, which are really three time scales. Combat has its own mode. Exploration has its own mode. Talking doesn't — it happens in whichever mode you're already in. And there's a third mode, downtime, that covers the days and weeks nobody else's rules bother with.",
|
|
352
|
+
"The rest of this page is one tab per pillar, plus one for downtime. Poke at every demo; they all roll real dice against real numbers.",
|
|
353
|
+
] },
|
|
354
|
+
{ type: "gm", h: "At the table", p: [
|
|
355
|
+
"This is the session-zero tab. Fifteen minutes, tops.",
|
|
356
|
+
"Do the degrees-of-success demo <b>live, on the shared screen</b>: set DC 15 and roll ten times, and let them watch how often a critical happens on its own. That single fact — criticals are common, and they come from beating the DC, not from the die face — reframes the whole game for a 5e player.",
|
|
357
|
+
"Don't teach the bonus types yet. Point at the card, say \"the app will tell you when it matters\", and move on. It only clicks once someone has a shield and a bard at the same time.",
|
|
358
|
+
"Ask each of them now: <i>what does your character want, and who do they already know in " + FLAVOR.port + "?</i> You'll use both answers in the Talk tab.",
|
|
359
|
+
] },
|
|
360
|
+
],
|
|
361
|
+
},
|
|
362
|
+
|
|
363
|
+
/* ---------------------------------------------------------- */
|
|
364
|
+
{
|
|
365
|
+
key: "fight", label: "Fight", icon: "sword",
|
|
366
|
+
title: "Encounter mode",
|
|
367
|
+
lede: "Rounds of six seconds. Initiative order. Three actions each. This is the mode with the most rules, and it's the one PF2e is proudest of.",
|
|
368
|
+
sections: [
|
|
369
|
+
{ type: "prose", h: "Starting a fight", p: [
|
|
370
|
+
"Everyone rolls initiative — usually Perception, but if you were Avoiding Notice you roll Stealth instead, and if you were talking your way in the GM might call for Deception. What you were doing in exploration mode decides what you roll. That's the join between the two gears.",
|
|
371
|
+
"Then you go round the table. On your turn: <b>three actions</b>, in any combination. There is no move-versus-action distinction. Moving is an action. Drawing a weapon is an action. Standing up is an action.",
|
|
372
|
+
] },
|
|
373
|
+
{ type: "cards", h: "The three-action turn", items: [
|
|
374
|
+
{ h: "◆ Single action", p: "Strike. Stride. Raise a Shield. Demoralize. Trip. Most things." },
|
|
375
|
+
{ h: "◆◆ Two actions", p: "Most spells. Some weapon feats. An activity that spans two of your three." },
|
|
376
|
+
{ h: "◆◆◆ Three actions", p: "Your whole turn: a big spell, a Sudden Charge, a full sprint." },
|
|
377
|
+
{ h: "⤳ One reaction", p: "Off your turn, when its trigger fires. Aid an ally, Attack of Opportunity if you have it. You get one per round and most level-1 characters have very few options — that's normal." },
|
|
378
|
+
] },
|
|
379
|
+
{ type: "reactions", h: "Your one reaction",
|
|
380
|
+
p: "You get one per round and it happens on someone else's turn. A level-1 character has very few — these three are the ones anybody can use." },
|
|
381
|
+
{ type: "note", tone: "warn", p: [
|
|
382
|
+
"<b>The multiple attack penalty is the price of three Strikes.</b> Your first attack each turn is at full value; your second is at −5 and your third at −10. Agile weapons soften it to −4 and −8. It resets at the start of your turn, and it counts <i>attack</i> actions — Trip, Grapple, Shove and spell attacks all pay into it and suffer from it.",
|
|
383
|
+
"This is why the third Strike is usually the wrong choice. Trip, Demoralize, raise a shield, or move somewhere better instead.",
|
|
384
|
+
] },
|
|
385
|
+
{ type: "demo", id: "turn", h: "Build a turn",
|
|
386
|
+
p: "Spend three actions and run them against the " + FLAVOR.foe + ". Every roll shows its arithmetic — including the penalty stacking up, and what happens to the target's AC once it's frightened or prone." },
|
|
387
|
+
{ type: "prose", h: "Attacks, and what a critical does", p: [
|
|
388
|
+
"An attack roll is d20 + ability + proficiency + item bonus against the target's AC. Beat the AC by 10 and it's a critical hit: <b>double the damage</b> (roll the dice, add the modifiers, then double the total — that's the whole rule).",
|
|
389
|
+
"Damage is not a separate to-hit; there's no second roll to confirm. And because criticals come from beating the DC by 10, anything that lowers a target's AC — flanking, being prone, being frightened — pushes real criticals into your range. Debuffs are damage in this system.",
|
|
390
|
+
] },
|
|
391
|
+
{ type: "prose", h: "Spells work the other way round", p: [
|
|
392
|
+
"Attack spells roll against AC like anything else. But most spells make the <b>target</b> roll, against your spell DC, and the four degrees decide how much of the spell lands. A successful save usually still means something happened — half damage, or a weaker version of the condition.",
|
|
393
|
+
"That's the second half of the caster's job: you are rarely wasting a turn, you're just choosing between a big effect that might be resisted and a small effect that definitely lands.",
|
|
394
|
+
] },
|
|
395
|
+
{ type: "ref", h: "Conditions you'll meet in your first fight", kind: "condition",
|
|
396
|
+
slugs: ["off-guard", "frightened", "prone", "persistent-damage", "grabbed", "slowed", "stunned", "clumsy", "enfeebled"],
|
|
397
|
+
p: "Real text from the rules. Frightened is worth reading twice: it's a status penalty to <i>everything</i>, checks and DCs alike, which is why Demoralize is a genuinely good use of an action." },
|
|
398
|
+
{ type: "prose", h: "When you drop", p: [
|
|
399
|
+
"Nobody dies at 0 hit points in PF2e. You go <b>dying 1</b>, unconscious, and at the start of each of your turns you roll a flat d20 against DC 10 + your dying value to see whether you claw back. Get to dying 4 and you're gone.",
|
|
400
|
+
"Every time you shake off dying you gain <b>wounded 1</b>, and the next time you drop, your wounded value is added to your dying value. The system remembers. Getting picked up twice in a fight is survivable; three times is how characters actually die.",
|
|
401
|
+
] },
|
|
402
|
+
{ type: "demo", id: "dying", h: "Walk it through",
|
|
403
|
+
p: "Take Mari down and try to get her back. Everything here is a real roll against a real DC." },
|
|
404
|
+
{ type: "steps", h: "Your first turn, in order", items: [
|
|
405
|
+
"Look at what your three actions could do — say it out loud, badly, and let the table help.",
|
|
406
|
+
"Ask the GM the target's AC only if you're allowed to know it. Otherwise just roll and say the total.",
|
|
407
|
+
"Roll the d20, add your modifier, say the <b>total</b>. Don't say \"I rolled a 14\" — the total is what matters.",
|
|
408
|
+
"If your total beats their AC by 10, say so — that's a critical hit and it doubles your damage.",
|
|
409
|
+
"Roll damage, add the modifier, done. Then decide whether that second Strike at −5 is really better than a Trip.",
|
|
410
|
+
"At the end of your turn, say what you're doing with your reaction, if you have one.",
|
|
411
|
+
] },
|
|
412
|
+
{ type: "ref", h: "The basic actions, in the book's own words", kind: "action",
|
|
413
|
+
slugs: ["strike", "stride", "step", "raise-a-shield", "trip", "grapple", "demoralize", "seek", "aid", "delay", "ready", "escape", "stand"] },
|
|
414
|
+
{ type: "gm", h: "At the table", p: [
|
|
415
|
+
"Run the turn builder as a competition: give them both three actions against the " + FLAVOR.foe + " and let them find the Demoralize-then-Strike line themselves. It lands harder discovered than explained.",
|
|
416
|
+
"First real fight: <b>two weak enemies, not one boss</b>. Two bodies teaches flanking, off-guard, and why the third Strike is a trap. One boss teaches that PF2e monsters have a lot of hit points.",
|
|
417
|
+
"Say \"that's a critical\" out loud the first three times it happens on either side, and name why — <i>beat the AC by ten</i>. They'll be doing the arithmetic themselves by the second fight.",
|
|
418
|
+
"Have someone drop on purpose if the dice don't do it for you. Better they meet the dying rules while it's recoverable and you've got a Soothe in the party.",
|
|
419
|
+
"Hand out a hero point the first time either of them does something in character during a fight. That's the whole lesson about hero points.",
|
|
420
|
+
] },
|
|
421
|
+
],
|
|
422
|
+
},
|
|
423
|
+
|
|
424
|
+
/* ---------------------------------------------------------- */
|
|
425
|
+
{
|
|
426
|
+
key: "explore", label: "Explore", icon: "compass2",
|
|
427
|
+
title: "Exploration mode",
|
|
428
|
+
lede: "Minutes and hours. No initiative, no grid, no counting actions — but you're still choosing something, and what you choose decides how the next fight starts.",
|
|
429
|
+
sections: [
|
|
430
|
+
{ type: "prose", h: "The middle gear", p: [
|
|
431
|
+
"Between fights, the game doesn't stop having rules — it changes their grain. You're not spending actions any more; you're declaring what you're <b>doing continuously</b> as the party moves. That declaration is called an exploration activity, and you should always have one.",
|
|
432
|
+
"This matters more than it sounds. If you're Searching, you get a check to spot the tripwire. If you're Avoiding Notice, you roll Stealth for initiative and start the fight hidden. If you declared nothing, you get nothing.",
|
|
433
|
+
] },
|
|
434
|
+
{ type: "demo", id: "explore", h: "Give everyone a job",
|
|
435
|
+
p: "Set each character's activity and see what it buys them — and which of those checks your GM will be rolling in secret." },
|
|
436
|
+
{ type: "prose", h: "Some of your dice aren't yours", p: [
|
|
437
|
+
"Searching, sneaking, and remembering things are <b>secret checks</b>: the GM rolls them for you, behind the screen, because knowing you rolled a 3 on Perception tells you something your character doesn't know. If your GM asks for your Perception modifier at the start of a session and never mentions it again, this is why.",
|
|
438
|
+
"It feels strange for one session and then it feels obviously correct. You'll notice you stop metagaming without having to try.",
|
|
439
|
+
] },
|
|
440
|
+
{ type: "ref", h: "What you're actually doing out there", kind: "action",
|
|
441
|
+
slugs: ["search", "avoid-notice", "scout", "investigate", "follow-the-expert", "hustle", "defend", "track"],
|
|
442
|
+
p: "Follow the Expert deserves special mention: it lets a character with no training in a skill borrow a trained ally's proficiency. It's the answer to \"but I'm terrible at Stealth\"." },
|
|
443
|
+
{ type: "prose", h: "Recall Knowledge", p: [
|
|
444
|
+
"One action in a fight, or a moment's thought outside one: you ask the GM a question about something in front of you, using the skill that would know. Arcana for the summoned thing, Nature for the beast, Society for the guild insignia, a Lore skill for anything you took Lore in.",
|
|
445
|
+
"Critical failure means the GM lies to you with a straight face. That's not the GM being unfair — it's written in the action. It's also the single best argument for having two characters with different knowledge skills.",
|
|
446
|
+
] },
|
|
447
|
+
{ type: "prose", h: "Healing between fights", p: [
|
|
448
|
+
"Ten minutes and a healer's toolkit gets a Medicine check to <b>Treat Wounds</b> — a chunk of hit points back, repeatable once an hour per patient. This is the system's short rest, and it's the reason someone in the party should be trained in Medicine even if nobody wants to be a healer.",
|
|
449
|
+
"A full night's rest heals you for your Constitution modifier times your level, and clears fatigue. Ten quiet minutes also gets a focus point back with Refocus.",
|
|
450
|
+
] },
|
|
451
|
+
{ type: "stops", h: "When the party stops moving" },
|
|
452
|
+
{ type: "links" },
|
|
453
|
+
{ type: "gm", h: "At the table", p: [
|
|
454
|
+
"Ask for exploration activities <b>every time the scenery changes</b>, in the same words each session, until they say it without being asked. \"You come up the beach road. What's everyone doing?\"",
|
|
455
|
+
"Collect their Perception, Stealth and knowledge modifiers on a card at session zero, so you can roll secret checks without breaking the scene to ask. The party tracker linked above is exactly this, with the passive DCs already worked out.",
|
|
456
|
+
"The first time someone declares Search and finds the trap, say so plainly: <i>you found it because you said you were looking.</i> That single moment does more teaching than this whole tab.",
|
|
457
|
+
"Let a critical failure on Recall Knowledge actually give them a confident wrong answer. Then let it bite. They'll never forget the four degrees again.",
|
|
458
|
+
] },
|
|
459
|
+
],
|
|
460
|
+
},
|
|
461
|
+
|
|
462
|
+
/* ---------------------------------------------------------- */
|
|
463
|
+
{
|
|
464
|
+
key: "talk", label: "Talk", icon: "speech",
|
|
465
|
+
title: "The pillar without a mode",
|
|
466
|
+
lede: "Social play doesn't get its own gear. It happens inside whichever mode you're in — a tense parley in encounter mode, a night of drinking in exploration, a season of favours in downtime.",
|
|
467
|
+
sections: [
|
|
468
|
+
{ type: "prose", h: "Roleplay first, dice second", p: [
|
|
469
|
+
"PF2e's social rules are not there to replace the conversation. You say what your character says. <i>Then</i>, if it's genuinely uncertain and something's at stake, the GM names an action and you roll to find out how well it landed. A good pitch might get a circumstance bonus; a tactless one might get a penalty.",
|
|
470
|
+
"What the rules add is <b>consequence with teeth</b>. Every social action has four written outcomes, and the bad ones cost you something specific — a door that closes, a friend who turns wary.",
|
|
471
|
+
] },
|
|
472
|
+
{ type: "prose", h: "Attitude is a real number", p: [
|
|
473
|
+
"Every NPC has an attitude toward you: <b>hostile, unfriendly, indifferent, friendly, helpful</b>. Most people start indifferent. Social actions move NPCs up and down that ladder, and where they sit decides what they'll agree to.",
|
|
474
|
+
"You can only <b>Request</b> something of someone who's already friendly or helpful. So the actual skill of social play in this system is: make an impression first, ask second. Walking up to a stranger and asking for the harbour manifest is a failed roll waiting to happen.",
|
|
475
|
+
] },
|
|
476
|
+
{ type: "demo", id: "attitude", h: "Work on " + FLAVOR.npc,
|
|
477
|
+
p: "Indifferent to start, Will DC 15. Try to get to friendly, then ask for something — and watch what Coerce costs you even when it works." },
|
|
478
|
+
{ type: "cards", h: "The moves", items: [
|
|
479
|
+
{ h: "Make an Impression — Diplomacy", p: "A minute of charm against their Will DC. Critical success moves them two steps. The opener." },
|
|
480
|
+
{ h: "Request — Diplomacy", p: "One action, and they must already be friendly. Critical failure knocks them back a step for having the cheek to ask." },
|
|
481
|
+
{ h: "Coerce — Intimidation", p: "Threats. It works, and then they're unfriendly afterwards <i>even on a critical success</i>. A tool with a bill attached." },
|
|
482
|
+
{ h: "Lie — Deception", p: "Against their Perception DC. Failure gives them +4 against everything you say for the rest of the conversation." },
|
|
483
|
+
{ h: "Demoralize — Intimidation", p: "The one that works mid-fight. One action, 30 feet, and they're frightened." },
|
|
484
|
+
{ h: "Sense Motive — Perception", p: "Is this person straight with me? Secret check, so ask and then trust what you're told — or don't." },
|
|
485
|
+
] },
|
|
486
|
+
{ type: "note", tone: "tip", p: [
|
|
487
|
+
"<b>Aid is the most under-used action in the game.</b> Say how you're helping, prepare it on your turn, and when your ally rolls, you roll too — a success hands them +1, a critical success +2. Two characters working one NPC is mechanically better than the charming one going alone, and it's how you get the quiet player into a social scene.",
|
|
488
|
+
] },
|
|
489
|
+
{ type: "ref", h: "The social actions, in the book's own words", kind: "action",
|
|
490
|
+
slugs: ["make-an-impression", "request", "coerce", "lie", "demoralize", "sense-motive", "feint", "gather-information", "impersonate", "aid"] },
|
|
491
|
+
{ type: "ref", h: "The attitudes", kind: "condition",
|
|
492
|
+
slugs: ["hostile", "unfriendly", "indifferent", "friendly", "helpful"] },
|
|
493
|
+
{ type: "gm", h: "At the table", p: [
|
|
494
|
+
"Give every named NPC an attitude before the scene and say it out loud when it changes. \"Bel goes from indifferent to friendly\" teaches the ladder in one sentence.",
|
|
495
|
+
"Never make them roll for the conversation itself — make them roll when the conversation has a decision point. If there's no way to fail interestingly, just let them have it.",
|
|
496
|
+
"Reward the pitch with the dice: a genuinely good argument is a +1 or +2 circumstance bonus, and saying so out loud tells them that talking well is mechanically worth doing.",
|
|
497
|
+
"Watch for the Coerce trap. Let it work the first time, then let the unfriendly consequence land two scenes later. That's the lesson the text is trying to teach.",
|
|
498
|
+
"If one player is doing all the talking, call for Aid explicitly: \"" + FLAVOR.npc + " glances at your friend — are you backing this up?\"",
|
|
499
|
+
] },
|
|
500
|
+
],
|
|
501
|
+
},
|
|
502
|
+
|
|
503
|
+
/* ---------------------------------------------------------- */
|
|
504
|
+
{
|
|
505
|
+
key: "ashore", label: "Ashore", icon: "anchor",
|
|
506
|
+
title: "Downtime mode",
|
|
507
|
+
lede: "Days and weeks between adventures. The gear most games don't have rules for — which is exactly why it's worth knowing this one does.",
|
|
508
|
+
sections: [
|
|
509
|
+
{ type: "prose", h: "The slowest gear", p: [
|
|
510
|
+
"When the party is in port with nothing chasing them, time moves in days. You each say what you're spending those days on, roll once or twice, and the GM tells you what a week of it bought.",
|
|
511
|
+
"It's optional in the sense that some campaigns never stop moving. But it's where a character gets a trade, a reputation, a workshop, and the chance to un-pick a level-1 decision they've come to regret.",
|
|
512
|
+
] },
|
|
513
|
+
{ type: "demo", id: "downtime", h: "Plan a week ashore",
|
|
514
|
+
p: "Give each character something to do with the days and see what it needs from you and the GM." },
|
|
515
|
+
{ type: "prose", h: "Retraining deserves a paragraph of its own", p: [
|
|
516
|
+
"You can spend downtime <b>swapping out a feat or a skill</b> you don't enjoy. Not a house rule, not GM mercy — a written activity with a time cost.",
|
|
517
|
+
"Say this to a new player at character creation and watch their shoulders drop. Nobody has to get the build right on day one. Pick the thing that sounds fun; if it isn't, a week ashore fixes it.",
|
|
518
|
+
] },
|
|
519
|
+
{ type: "ref", h: "What a week can buy", kind: "action",
|
|
520
|
+
slugs: ["earn-income", "craft", "learn-a-spell", "retraining", "long-term-rest", "research", "treat-disease", "subsist", "repair"],
|
|
521
|
+
p: "Earn Income's rate depends on a task level your GM assigns and on your proficiency rank — the table lives in Player Core, and it's the one number this app deliberately doesn't try to remember for you." },
|
|
522
|
+
{ type: "gm", h: "At the table", p: [
|
|
523
|
+
"One downtime turn per port, even if it's only \"you have four days, one activity each\". It costs five minutes and it makes the world feel like it continues without them.",
|
|
524
|
+
"Ask for a sentence of colour with each declaration — <i>where</i> are they earning that income, and who did they annoy doing it? That's where your next hook comes from, free.",
|
|
525
|
+
"Tell them about Retraining out loud at session one, before either of them has committed to a build they're unsure about.",
|
|
526
|
+
"Downtime is the natural place to hand out the campaign's ship-and-crew business if you're running one. Repairs, wages, and cargo all fit here without needing a subsystem.",
|
|
527
|
+
] },
|
|
528
|
+
],
|
|
529
|
+
},
|
|
530
|
+
|
|
531
|
+
/* ---------------------------------------------------------- */
|
|
532
|
+
{
|
|
533
|
+
key: "cards", label: "Cards", icon: "cards",
|
|
534
|
+
title: "Table cards",
|
|
535
|
+
lede: "The bits worth having open during play. Search the whole rules set below, or keep the quick card on screen.",
|
|
536
|
+
sections: [
|
|
537
|
+
{ type: "quickcard" },
|
|
538
|
+
{ type: "glossary", h: "The jargon" },
|
|
539
|
+
{ type: "browser" },
|
|
540
|
+
{ type: "links" },
|
|
541
|
+
{ type: "gm", h: "At the table", p: [
|
|
542
|
+
"Leave this tab open on a phone or a second screen during the first two sessions. The search box covers every basic, skill, exploration and downtime action plus all 43 conditions — it will answer most rules questions faster than the index will.",
|
|
543
|
+
"The quick card is the only thing here worth printing.",
|
|
544
|
+
] },
|
|
545
|
+
],
|
|
546
|
+
},
|
|
547
|
+
];
|