-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path24xx.typ
401 lines (311 loc) · 14.7 KB
/
24xx.typ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
// inline styling
#set text(
9pt, top-edge: 9pt, luma(10%),
font: "Barlow",
stretch: 87.5%,
number-width: "tabular",
)
#show "₡": set text(font: "IBM Plex Sans", stretch: 100%)
#show "➡": set text(7.5pt, font: "Noto Sans CJK SC")
// block styling
#let leading = 3pt
#let top-edge = 9pt
#let line-height = leading + top-edge
#let block-spacing = line-height / 2 + leading
#set block(spacing: block-spacing)
#set par(leading: leading)
#show heading.where(level: 1): upper
#show heading.where(level: 1): set text(
36pt, top-edge: 25.5pt,
weight: 500, stretch: 75%,
)
#show heading.where(level: 1): it => {
set block(below: 4 * line-height - leading - text.top-edge)
colbreak(weak: true) + it
}
#let marked(marker, gap, content) = context block(
inset: (left: -(gap + measure(marker).width)),
spacing: block-spacing,
grid(
columns: (auto, 1fr),
column-gutter: gap,
marker, content
)
)
#show heading.where(level: 2): it => {
set text(9pt, rgb(255, 47, 23), weight: 400)
marked(
text(
6pt, baseline: -0.75pt,
font: "Noto Sans CJK SC",
"▶"
),
2pt,
it.body
)
}
#let design-note(text-fill: rgb(50, 165, 194), content) = {
set text(text-fill, style: "italic")
marked(text(tracking: -1pt, "//"), 2.5pt, content)
}
#set enum(numbering: "1", body-indent: 1em)
#let columns-full(count, body) = context {
let line-height = text.size + par.leading
let line-count = calc.ceil(
(measure(body).height + par.leading) /
(line-height * count)
)
block(
height: line-height * line-count - par.leading,
spacing: block-spacing,
columns(count, gutter: (100% - measure(body).width * count) / count, block(body))
)
}
#let footer(body) = {
set text(
7pt, top-edge: 6pt, rgb(133, 142, 140),
style: "italic"
)
set par(leading: 3pt)
body
}
// document styling
#set document(
title: "24XX System Reference Document",
author: "Jason Tocci"
)
#set page(paper: "us-statement")
#set columns(gutter: 18pt)
// ===================
// content begins here
// ===================
#set page(margin: 0pt)
#place(image("cover.png"))
// Typst currently doesn't support blending modes
// so this is a rough emulation
#block(
width: 100%, height: 100%,
inset: 18pt,
fill: rgb(92.5%, 92.5%, 100%, 6%),
)[
#set par(leading: 0pt)
#set text(fill: rgb(70%, 70%, 100%, 22.5%))
= #stack(
{
set text(125pt, top-edge: 89pt)
h(-6pt)
text(stretch: 87.5%)[24]
text(stretch: 75%)[XX]
},
text(21pt, top-edge: 23.5pt)[
#upper[System Reference Document]
]
)
]
// page 1
#set page(
margin: 18pt,
columns: 2,
)
= Rules
*PLAY:* Players describe what their characters do. The GM advises when their action is impossible, demands a cost or extra steps, or presents a risk. Players can revise plans before committing so as to change goal/stakes. Only roll to _avoid risk_.
*ROLLING:* Roll a _skill die_ — d6 by default, higher with a relevant skill, or d4 if _hindered_ by injury or circumstances. If _helped_ by circumstances, roll an extra d6; if _helped_ by an ally, they roll their skill die and share the risk. Take the highest die.
#grid(
columns: (auto, 1fr),
column-gutter: 0.5em,
row-gutter: leading,
[*1–2*], [*Disaster.* Suffer the full risk. GM decides if you succeed at all. If risking death, you die.],
[*3–4*], [*Setback.* A lesser consequence or partial success. If risking death, you’re injured.],
[*5+*], [*Success.* The higher the roll, the better.]
)
If success can’t get you what you want (_you make the shot, but it’s bulletproof!_), you’ll at least get useful info or set up an advantage.
*LOAD:* Carry as much as makes sense, but more than one _bulky_ item may hinder you at times.
*ADVANCEMENT:* After a job, each character increases a skill (_none ➡ d8 ➡ d10 ➡ d12_) and gains d6 credits (₡).
*DEFENSE:* Say how one of your items _breaks_ to turn a hit into a brief _hindrance_. _Broken_ gear is useless until repaired.
*HARM:* Injuries take time and/or medical attention to heal. If killed, make a new character to introduce ASAP. Favor inclusion over realism.
// allow this paragraph to overflow a bit to the right to ensure that it doesn't go to the second column
#block(inset: (right: -1.5pt))[*GM:* Describe characters in terms of behaviors, risks, and obstacles, not skill dice. Lead the group in setting lines not to cross in play. _Fast-forward, pause,_ or _rewind/redo_ for pacing and safety; invite players to do likewise. Present dilemmas you don’t know how to solve. Move spotlight to give all time to shine. Test as needed for bad luck (e.g., run out of ammo, or into guards) — roll a die to check for (1– 2) trouble or (3–4) signs of it. Improvise rulings to cover gaps in rules; on a break, revise unsatisfactory rulings as a group.]
= Characters
#design-note[SRD design notes start with two slashes, like this. Other paragraphs are player/GM-facing text.]
#design-note[Characters start with 6ish skill increases and/or credits in items, possibly combining “specialty” and “origin” (or “3 skill increases” as a stand-in).]
== Choose your character’s *specialty*.
*FACE:* Skilled in _Reading People_ (d8), _Deception_ (d8). Take an _extensive disguise wardrobe_.
*MUSCLE:* Skilled in _Intimidation_ (d8) and either _Hand-to-hand_ (d8) or _Shooting_ (d8). Take a _sword_, _firearm_, or _cyber-arm_.
*PSYCHIC:* Skilled in _Telepathy_ (d8, sense surface thoughts), _Telekinesis_ (d8, as strong as your arms), or pick one at d10. Take a _bottle of PsychOut_ (amplify powers; addictive).
*MEDIC:* Skilled in _Medicine_ (d8), _Electronics_ (d8). Take a _medkit_ and _cyber-surgery tools_ (_bulky_).
*SNEAK:* Skilled in _Climbing_ (d8), _Stealth_ (d8). Take _climbing gear_ and _night vision goggles_.
*TECH:* Skilled in _Hacking_ (d8), _Electronics_ (d8). Take _repair tools_ and a _custom computer_ (_bulky_).
== Choose your character’s *origin*.
*ALIEN:* Invent 2 traits, like _electric current_, _wings_, _natural camouflage_, or _six-limbed_.
*ANDROID:* You have an upgrade-ready cyber-body. Take _synth skin_ (looks human) or a _case_ (break harmlessly for _defense_). Increase 1 skill.
*HUMAN:* Apply 3 skill increases (from _no skill ➡ d8 ➡ d10 ➡ d12_). You can take new skills and/or increase skills you already have.
== Choose or invent *skills* (if prompted by origin).
_Climbing, Connections, Deception, Electronics, Engines, Explosives, Hacking, Hand-to-hand, Intimidation, Labor, Persuasion, Piloting, Running, Shooting, Spacewalking, Stealth, Tracking_
#design-note[Characters who start with broader skills should start with fewer skills, or with less useful skills.]
// page 2
= Gear
#design-note[If an item costs less than a new video game system, the only cost is the time it takes to get it.]
== Take a *_comm_* (smartphone) and ₡2. Most items and upgrades cost ₡1 each. Ignore microcredit transactions like a knife or a meal.
*ARMOR:* _Vest_ (break once for _defense_), _battle armor_ (₡2, _bulky_, break up to 3×), _hardsuit_ (₡3, _bulky_, break up to 3×, vacuum-rated, mag boots).
*CYBERNETICS:* _Cyber-ear_ (upgrade with _echolocation, vocal stress detector_), _cyber-eye_ (upgrade with _infrared, telescopic, x-ray_), _cyber-limb_ (upgrade with _fast, strong, compartments, tool or weapon implant_), _cranial jack_ (upgrade with _sensory data backup, skill increase_), _healing nanobots, toxin filter, voice mimic_.
*TOOLS:* _Flamethrower (bulky), low-G jetpack, med scanner, mini drone, repair tools, survey pack_ (climbing gear, flare gun, tent; _bulky_).
*WEAPONS:* _Grenades_ (4, any of _fragmentation, flashbang, smoke, EMP_), _pistol, rifle (bulky), shotgun (bulky), stun baton, tranq gun_.
#block(inset: (right: -1.5pt))[== *Starships* have basic versions of these functions; upgrades cost ₡10 each. In an emergency, players pick an action to perform or _help_ with.]
*COMMS:* Upgrade with _eavesdropper, jammer, tachyon burst_ (no lag in-system).
*CRAFTS:* Comes with _escape pod_. Upgrade with _fighter, shuttle_ (reentry-rated).
*DRIVE:* FTL jump and sublight speeds. Upgrade with _longer jumps, faster speed, greater agility_.
*EQUIPMENT:* _Vac suits_ for crew. Upgrade with _armory, heavy loader, mining gear, tow cable_.
*HULL ARMOR:* Break harmlessly for _defense_. Upgrade with _reentry-rated, sun shielding_.
*SENSORS:* Upgrade with _deep-space, life-sign scan, planetary survey, tactical vessel scan_.
*WEAPONS:* Deflector turrets. Upgrade with _laser cutter, military-grade turret, torpedos_.
= Details
#design-note[Additional character and setting details often need to be customized for specific settings (especially when aliens and fashion are involved). Feel free to draw from these options, which should work in a range of sci-fi settings.]
== Invent or roll for *personal details*.
*SURNAME*
#columns-full(4)[
+ Acker
+ Black
+ Cruz
+ Dallas
+ Engel
+ Fox
+ Gee
+ Haak
+ Iyer
+ Joshi
+ Kask
+ Lee
+ Moss
+ Nash
+ Park
+ Qadir
+ Singh
+ Tran
+ Ueda
+ Zheng
]
*NICKNAME*
#columns-full(4)[
+ Ace
+ Bliss
+ Crater
+ Dart
+ Edge
+ Fuse
+ Gray
+ Huggy
+ Ice
+ Jinx
+ Killer
+ Lucky
+ Mix
+ Nine
+ Prof
+ Red
+ Sunny
+ Treble
+ V8
+ Zero
]
*DEMEANOR*
#columns-full(2)[
+ Anxious
+ Appraising
+ Blunt
+ Brooding
+ Calming
+ Casual
+ Cold
+ Curious
+ Dramatic
+ Dry
+ Dull
+ Earnest
+ Formal
+ Gentle
+ Innocent
+ Knowing
+ Pricky
+ Reckless
+ Terse
+ Weary
]
*SHIP NAME*
#columns-full(2)[
+ _Arion_
+ _Blackjack_
+ _Caleuche_
+ _Canary_
+ _Caprice_
+ _Chance_
+ _Darter_
+ _Falkor_
+ _Highway Star_
+ _Moonshot_
+ _Morgenstern_
+ _Phoenix_
+ _Peregrine_
+ _Restless_
+ _Silber Blaze_
+ _Stardust_
+ _Sunchaser_
+ _Swift_
+ _Thunder Road_
+ _Wayfarer_
]
// back page
#set page(
margin: (top: 18pt - block-spacing),
footer-descent: 6pt,
footer: footer[
Version 1.41.typ.2 • Text, layout & 24XX logo all CC BY Jason Tocci • Art CC BY Beeple (Mike Winkelmann) • Typst version CC BY Paro
],
)
#place(hide[= The Back Page])
#block(
fill: rgb(37, 101, 136),
inset: (bottom: line-height),
outset: (x: 7pt, top: block-spacing)
)[
#set text(white, style: "italic")
#text(tracking: -1pt, "//") *THE PREMISE:* Explain the basics of the setting. If it’s not made clear elsewhere, give a reason for the characters to stick together, and hint at what they’ll spend their time doing.
]
#design-note[*THE BACK PAGE:* If you’d like to mimic the style of the original micro RPGs this SRD is based on, the back page (or the left half of one side of a letter-sized sheet of paper) can fit 4 tables of 20 items each. A GM can use these to generate ideas for an improvised session, like, “[Name] has hired you for [Job] at [Location], but there’s a [Twist]!” An example table is offered below.]
#design-note[*ADDING TO RULES:* This SRD is very brief, with the hope experienced RPG players will fill in the gaps confidently, and RPG newcomers will be free of too many preconceived notions. Anything left vague is deliberately open to interpretation. (Like: Can you get help dice from an ally AND circumstances on one roll? Your call!) Expand or clarify as needed. My own principles for new rules are to minimize addition and subtraction, avoid too much bookkeeping (on top of tracking credits, hindrances, number of bulky items, and which items are broken), and strive to use terms either self-evident in meaning or invitingly vague.]
== *Roll d20 for a contact, client, rival, or target.*
+ Arcimboldo, quirky tech dealer & tinkerer
+ Aurora, wealthy collector of unique items
+ Blackout, quiet evidence removal specialist
+ Bleach, wry janitor android turned assassin
+ Bron, dour security chief with a metal arm
+ Bullet, no-nonsense android gun runner
+ Carryout, cocky courier with fast cyber-legs
+ Fisher, eager street kid looking for a crew
+ Ginseng, people-loving drug dealer
+ Hot Ticket, extremely cautious fence
+ Kaiser, grinning loan shark in a silver suit
+ Osiris, tired, street-level sawbones
+ Powder Blue, android fixer, generous rates
+ Reacher, sharp mercenary tac squad leader
+ Rhino, thickheaded, bighearted bodyguard
+ Sam, plucky journalist, likely to get killed
+ Shifter, hard-working chop-shop owner
+ Walleye, businesslike information broker
+ Whistler, smiling cabbie/getaway driver
+ “X,” unflappable broker for an unnamed corp
== *Roll d6 to try to find a job. Spend ₡1 to re-roll.*
#grid(
columns: (auto, 1fr),
column-gutter: 0.5em,
row-gutter: leading,
[1–2], [_Nothing. Owe somebody to get in on a job._],
[3–4], [_Found a job, but something seems off._],
[5-6], [_Choose between 2 jobs._]
)
#v(6pt)
#block(inset: (right: 1.5pt))[#design-note[*FINDING JOBS:* Many teams don’t need to look for paying work (e.g., military units). If your game does use this setup, though, dangerous jobs should pay more to cover 1–3 credits in “expenses” for medical treatment, fixing/ replacing broken gear, re-rolling unsavory jobs, or getting through dry spells with no jobs. Also, in the table above, the phrase “owe somebody” is intentionally vague, but may be worth clarifying or alluding to elsewhere (e.g., put a loan shark in your “Contacts” table).]]
#design-note[*JOBS:* The list of jobs (or missions, situations, quests, etc.) should be tailored for your setting, and suggest scenarios where every character’s skills will be useful. Common job templates include “deal with an unusual threat,” “investigate something seemingly inexplicable,” or “retrieve a thing from a location for a person.” They serve as “gameable lore” — elements that hint at a setting, ready-made for use in play.]
#design-note(text-fill: rgb(50, 145, 73))[*LICENSE:* This SRD is released under a Creative Commons Attribution 4.0 license (#underline[CC BY 4.0]). You’re welcome to use this text and layout in your own game, provided you do the following:]
#design-note(text-fill: rgb(50, 145, 73))[GIVE CREDIT: See that tiny text along the bottom of the page? That’s where I cram the version number and credit for licensed content (like the cover art). You’re welcome to put it elsewhere in your game, but be sure to include it somewhere — like, “24XX rules are CC BY Jason Tocci.”]
#design-note(text-fill: rgb(50, 145, 73))[USE 24XX, NOT 2400: You can say your game is “compatible with 2400” or “for use with 2400,” but please don’t use material directly from 2400, or name your game so it looks like it’s part of my 2400 series (unless you have explicit approval).]
#design-note(text-fill: rgb(50, 145, 73))[NO BIGOTRY: Please don’t use any text from this game, the 24XX logo, or my name in any product that promotes or condones white supremacy, racism, misogyny, ableism, homophobia, transphobia, or other bigotry against marginalized groups.]