-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathsolo-roleplaying-toolkit.html
7078 lines (6131 loc) · 673 KB
/
solo-roleplaying-toolkit.html
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
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Solo Roleplaying Toolkit</title>
<script>
(function(solo) {
///////////////////////////////////////////////////////////////////
/* browser support */
if (String.prototype.trimStart === undefined) {
String.prototype.trimStart = String.prototype.trimLeft || function() { return this.replace(/^\s*/, ''); };
}
if (String.prototype.trimEnd === undefined) {
String.prototype.trimEnd = String.prototype.trimRight || function() { return this.replace(/\s*$/, ''); };
}
if (String.prototype.padStart === undefined) {
String.prototype.padStart = function(count, text) {
var output = this.toString();
var a;
var padding = "";
for (a = 0; a < count - output.length; ++a) {
padding += text.toString();
};
return padding + this.toString();
};
}
if (String.prototype.repeat === undefined) {
String.prototype.repeat = function(count) {
return String.prototype.padStart(count - 1, this.toString());
}
}
if (Array.isArray === undefined) {
Array.isArray = function(arg) {
return Object.prototype.toString.call(arg) === '[object Array]';
};
}
///////////////////////////////////////////////////////////////////
/* generic functions */
var upperCase = function(text) {
return text.charAt(0).toUpperCase() + text.substr(1);
};
var random = function (min, max) {
var getRandom = function() {
if (window.crypto === undefined) return Math.random();
var byte_array = new Uint32Array(10);
window.crypto.getRandomValues(byte_array);
return byte_array[0]/(0xffffffff + 1);
};
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(getRandom() * (max - min + 1)) + min;
};
var randomItem = function(list) {
if (!isArray(list)) list = Object.keys(list);
return list[random(0, list.length - 1)];
};
var getDiceRolls = function(die) {
var combineGenMods = function(list, abbrev) {
abbrev = abbrev ? 1 : 0;
var compare = [
[["Success", "Failure"], ["Advantage", "Threat"]],
[["S", "F"], ["A", "T"]]
];
var S = compare[abbrev][0][0];
var F = compare[abbrev][0][1];
var A = compare[abbrev][1][0];
var T = compare[abbrev][1][1];
var success = (list[S] || 0) - (list[F] || 0);
var advantage = (list[A] || 0) - (list[T] || 0);
if (success > 0) { list[S] = success; delete list[F]; }
else if (success === 0) { delete list[S]; delete list[F]; }
else { delete list[S]; list[F] = 0 - success; }
if (advantage > 0) { list[A] = advantage; delete list[T]; }
else if (advantage === 0) { delete list[A]; delete list[T]; }
else { delete list[A]; list[T] = 0 - advantage; }
};
var addGenDie = function(die, amount) {
if (amount === undefined) amount = 1;
gen_dice[die] = gen_dice[die] || 0;
gen_dice[die] += amount;
};
var getGenesys = function(die) {
var roll = random(0, genesys[die].length - 1);
var result = genesys[die][roll];
var a, char;
for (a = 0; a < result.length; ++a) {
char = result.charAt(a);
if (char === "S") addGenDie("Success");
if (char === "A") addGenDie("Advantage");
if (char === "F") addGenDie("Failure");
if (char === "T") {
if (die === "GP") addGenDie("Triumph");
else addGenDie("Threat");
}
if (char === "L") addGenDie("Light Side");
if (char === "D") {
if (die === "GC") addGenDie("Despair");
else addGenDie("Dark Side");
}
}
return result;
};
var getVampire = function(die) {
var roll = random(1, 10);
if (roll === 1 && die === "VH") result = "BF";
else if (roll < 6) result = "F";
else if (roll < 10) result = "S";
else if (die === "VH") result = "MC";
else result = "C";
vamp_dice[result] = vamp_dice[result] || 0;
vamp_dice[result] += 1;
return result;
};
if (!/^([0-9]+)?D(VH?|(?:G[ABCDFPS](\+([0-9]+)?[FSAT])*|([0-9]+([XRGBYPO]+)?|F)([+-][0-9]+)*))$/i.test(die)) return null;
var dice = die.toUpperCase().match(/^([0-9]+)?D([0-9]+|F|VH?|G[A-Z])(.*)$/i);
var number = parseInt(dice[1] || 1);
var size = dice[2];
var mods = dice[3];
var match;
var colors = [];
var color_map = {"R": "#ff7979", "G": "#72cb72", "B": "#8e8eff", "Y": "#ffff00", "P": "#ca7eff;", "O": "#ffa93e"};
if (/[XRGBYPO]/.test(mods)) {
match = mods.match(/([XRGBYPO]+)([+-][0-9]+)?/);
colors = match[1].split("");
mods = match[2];
}
var gen_dice = {};
var vamp_dice = {};
var genesys = {
"GB": ["B", "B", "S", "SA", "AA", "A"],
"GS": ["B", "B", "F","F", "T", "T"],
"GA": ["B", "S", "S", "SS", "A", "A", "SA", "AA"],
"GD": ["B", "F", "FF", "T", "T", "T", "TT", "FT"],
"GP": ["B", "S", "S", "SS", "SS", "A", "SA", "SA", "SA", "AA", "AA", "T"],
"GC": ["B", "F", "F", "FF", "FF", "T", "T", "TF", "TF", "FF", "FF", "D"],
"GF": ["D", "D", "D", "D", "D", "D", "DD", "L", "L", "LL", "LL", "LL"],
"F": "Failure", "S": "Success", "A": "Advantage", "T": "Threat"
};
var a;
var mod = 0;
if (mods) {
var gen_mod;
var FSAT = {};
var mods = mods.match(/(\+([0-9]*)([FSAT])|[+-][0-9]+)/g);
for (a = 0; a < mods.length; ++a) {
if (size.charAt(0) === "G") {
gen_mod = mods[a].match(/\+([0-9]+)?([FSAT])/);
gen_mod[1] = parseInt(gen_mod[1] || 1);
if (!(gen_mod[2] in FSAT)) FSAT[gen_mod[2]] = 0;
FSAT[gen_mod[2]] += gen_mod[1];
}
else mod += parseInt(mods[a]);
}
if (Object.keys(FSAT).length) {
combineGenMods(FSAT, true);
var gen_mods = [];
for (gen_mod in FSAT) {
gen_mods.push(FSAT[gen_mod] + gen_mod);
addGenDie(genesys[gen_mod], FSAT[gen_mod]);
}
mod = gen_mods.length ? gen_mods.join(",") : "";
}
}
var roll;
var total = 0;
var rolls = [];
var add_total, color;
for (a = 0; a < number; ++a) {
add_total = true;
if (size === "F") roll = random(-1, 1);
else if (size === "V" || size === "VH") roll = getVampire(size);
else if (/G[ABCDFPS]/.test(size)) { roll = getGenesys(size); add_total = false; }
else roll = random(1, size);
if (add_total) total += roll;
if (colors.length) {
color = colors.shift();
if (color !== "X") roll = "<span style='color:" + color_map[color] + "'>" + roll + "</span>";
}
rolls.push(roll);
}
if (Object.keys(gen_dice).length) combineGenMods(gen_dice);
return {size: size, rolls: rolls, mod: mod, total: total + mod, genesys: gen_dice, vampire: vamp_dice};
};
var rollDice = function(die) {
return getDiceRolls(die).total;
};
var $ = function(id) {
id = id.trim();
if (id.charAt(0) === "#" && id.indexOf(" ") === -1) return document.querySelector(id);
return document.querySelectorAll(id);
}
var scrollToTop = function() {
document.body.scrollTop = 0; // For Safari
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
};
var getRolledItem = function(roll, list) {
var num;
if (isArray(list)) {
var a;
for (a = 0; a < list.length; ++a) {
if (roll <= list[a]) return a;
}
return 0;
}
for (num in list) {
if (roll <= parseInt(num)) return list[num];
}
return list[num];
};
var list = function() {
var obj = {};
var a;
for (a = 0; a < arguments.length; ++a) {
obj[arguments[a]] = true;
}
return obj;
};
var sortList = function(list) {
return list.sort(function(a, b) { return a - b; });
};
var clamp = function(value, min, max) {
return Math.min(Math.max(value, min), max);
};
var isArray = function(val) {
return (val instanceof Array || Array.isArray(val));
};
var enumArray = function(start, end) {
if (end === undefined) {
end = start;
start = 0;
}
var a;
var arr = [];
for (a = start; a <= end; ++a) { arr.push(a); }
return arr;
};
var getElement = function(id) {
return (typeof id === 'string' || id instanceof String) ? document.getElementById(id.replace(/^\s*#?\s*([a-zA-Z_-]+)\s*$/, "$1")) : id;
};
var addClass = function(id, classname) {
var el = getElement(id);
var classes = el.className.split(" ");
if (classes.indexOf(classname) === -1) classes.push(classname);
el.className = classes.join(" ").trim();
};
var removeClass = function(id, classname) {
var el = getElement(id);
var classes = el.className.split(" ");
var index = classes.indexOf(classname);
if (index !== -1) classes.splice(index, 1);
el.className = classes.join(" ").trim();
};
var getOptions = function(name, id, list, selected) {
var options = "";
if (!isArray(list)) list = Object.keys(list);
var a;
for (a = 0; a < list.length; ++a) {
options += "<option value='" + list[a] + "'";
if (selected === list[a]) options += " selected";
options += ">" + list[a] + "</option>";
}
options = "<select id='" + id + "'>" + options + "</select>";
if (name) options = "<label for='" + id + "'>" + name + "</label><br>" + options;
return options;
};
var getLink = function(name, action, quote) {
if (quote === undefined) quote = '"';
return '<p><a onclick=' + quote + action + quote + ">" + name + '</a></p>';
};
var getLinks = function() {
var a;
var output = "";
var quote;
for (a = 0; a < arguments.length; ++a) {
quote = (arguments[a].length < 3) ? quote = undefined : arguments[a][2];
output += getLink(arguments[a][0], arguments[a][1], quote);
}
return output;
}
var copyText = function(id) {
var text = $("#copy-button").outerHTML;
var copy = $("#" + id).innerText;
while (/\n\n\n\n/.test(copy)) { copy = copy.replace(/\n\n\n\n/g, "\n\n\n"); }
copy = copy.replace(/\n\n/g, "\n");
navigator.clipboard
.writeText(copy)
.then(
function() { $("#copy-button").outerHTML = "<span id='copy-button'><b>Copied!</b></span>"; },
function() { $("#copy-button").outerHTML = "<span id='copy-button'><b>Failed to copy!</b></span>"; }
);
setTimeout(function() {
if ($("#copy-button") === null) return;
$("#copy-button").outerHTML = text;
}, 2000);
};
var fadeIn = function(id, delay, text) {
var el;
var default_delay = 20.0;
if (!id) {
el = document.createElement("span");
el.className = "hide";
el.innerHTML = text;
setTimeout(function() {
removeClass(el, "hide");
}, default_delay + delay);
return el.outerHTML;
}
el = getElement(id);
addClass(el, "hide");
el.innerHTML = (text === undefined) ? el.innerHTML : text;
setTimeout(function() {
removeClass(el, "hide");
}, default_delay + delay);
};
///////////////////////////////////////////////////////////////////
/* array data */
// motif
var engines = {
"action": {
"success": {
"Success": {
2: "Fail, lose. You do not achieve your goal.",
4: "Mixed. Win at cost, fail but gain advantage, or partial win.",
6: "Succeed, win. Your effort is carried out successfully."
},
"Cost": {
1: "It comes with a heavy price and/or major complications.",
3: "You must pay a moderate price or face an average obstacle.",
5: "You succeed at a minor cost or no cost. Without a hitch.",
6: "You not only win, but even gain a brief minor advantage."
},
"Mixed Option": {
2: "Fail, lose. You do not achieve your goal.",
4: "Mixed. -2 Strength, +1 Flavor.",
6: "Succeed, win. Your effort is carried out successfully."
}
},
"strength": {
"Strength": {
1: "Weak, inconsequential, or minimal.",
2: "Flawed, minor, or modest.",
3: "Mundane or barely passable.",
4: "Good, notable, or average.",
5: "Strong, major, or overwhelming.",
6: "Powerful or maximum."
},
"Strength Variation": {
"Loss": {
1: "Hardest or worse possible “no” with a serious complication.",
3: "Complete hard “no” with a minor complication or obstacle.",
5: "Simple but firm “no”.",
6: "“No” can be made “yes” by solving an obstacle or complication. ",
},
"Win": {
1: "“Yes” with a minor obstacle or difficulty.",
3: "Simple but firm “yes”.",
5: "Strong “yes” with some minor bonus.",
6: "“Yes” with an additional unexpected strong benefit."
}
}
},
"flavor": {
"Impact": {
1: "No noteworthy or meaningful impact to speak of.",
2: "A brief, fleeting, and typical minor effect.",
3: "A short-term, easily resolved or negated impact.",
4: "Near-term effects that linger for a short while.",
5: "Outcomes reach into heavier impacts and longer lasting effects.",
6: "As potent as possible of a lasting outcome, relative to the action and strength; as close to full impact and indefinite as possible."
},
"Favorability": {
1: "The answer could not possibly be more unfavorable to the characters; interpret in the most hostile or negative way possible.",
2: "Generally unfavorable for the protagonists.",
3: "Neutral or mildly disadvantageous.",
4: "Neutral or mildly favorable.",
5: "On par to the advantage of the characters.",
6: "The answer is the best possible result, for whatever reason; interpret in the most favorable light or with the best advantage."
},
"Attention": {
1: "You make a huge scene and draw major notice.",
3: "Way too many people are wondering what is wrong with you.",
5: "A clean uncomplicated action without drawing attention.",
6: "You even plant red herrings and bluff through any wrinkles."
},
"Caution": {
1: "You stumble across the worst dangers or leave major evidence.",
3: "Very clumsy, cannot seem to find a flow.",
5: "Manage to avoid the worst.",
6: "The very picture of perfect awareness, forethought, and caution."
},
"Discovery": {
1: "You not only fail to find anything useful, but get caught in the act.",
3: "Unproductive attempt that draws some suspicion and notice.",
5: "Low quality but useful materials and information.",
6: "You discover as good of parts or espionage as can be found.",
}
}
},
"story": {
"turns": {
11: "A sudden turn in favor of the player character(s) and/or their interests.",
22: "Any useful progress or clues in the scene will be offset by ostacles of delays.",
33: "Helpful non-player characters suddenly arrive.",
44: "Hostile non-player characters suddenly arrive.",
55: "An especially unusual item or well-hidden clue is unlocked within the scene.",
66: "A sudden turn in favor of the Big Bad or other forces aligned against the main characters and their interests."
},
"answer": {
"Mixed": {
2: "No, negative answer; small, a little.",
4: "Maybe, mixed answer; middle, average.",
6: "Yes, positive answer; big, a lot."
},
"Yes, and": {
1: "No, and also…",
2: "No.",
3: "No, but…",
4: "Yes, but…",
5: "Yes.",
6: "Yes, and also…"
},
"Must Succeed": {
1: "Extreme personal cost or debt.",
3: "At a high cost or with a big catch.",
5: "Moderate cost.",
6: "Minor but still notable price."
}
},
"degree": {
"Straight": {
1: "Weak, inconsequential, or minimal.",
2: "Flawed, minor, or modest.",
3: "Mundane, cheap, or barely passable.",
4: "Good, notable, or average.",
5: "Strong, major, or overwhelming.",
6: "Powerful, vital, or maximum."
},
"But/And": {
2: "But. Qualified answer, “yes, but…”, “no, but…”",
4: "“Flat” or simple answer. Direct yes or no.",
6: "And. Bonus answer, “yes, and also…”, “no, and also…”"
}
},
"flavor": {
"General": {
1: "Minimum, absent, or the direct opposite.",
2: "Little, rare, or bare hints of it.",
3: "Modest, sparse, or clear suggestions of it.",
4: "Average, present, or visibly influential.",
5: "A lot, abundant, or strongly shaping the answer.",
6: "Maximum, overflowing, or as much as possible."
},
"Favorability": {
1: "The answer could not possibly be more unfavorable to the characters; interpret in the most hostile or negative way possible.",
2: "Generally unfavorable for the protagonists.",
3: "Neutral or mildly disadvantageous.",
4: "Neutral or mildly favorable.",
5: "On par to the advantage of the characters.",
6: "The answer is the best possible result, for whatever reason; interpret in the most favorable light or with the best advantage."
},
"Weirdness": {
1: "Common, simple items and animals.",
2: "A few uncommon things, but mundane",
3: "A couple unusual oddities, like a brightly colored owl or little-too-curious large squirrel.",
4: "Things are getting weird, with oddly behaving animals and minor alien, mad science, or supernatural creatures.",
5: "Straight up bizarre and surreal features and creatures. The sky burns a somehow bright black. Roads twist and warp back onto themselves. Major monsters and wild things will appear, along with unnatural variants of more common animals.",
6: "The rarest and most horrifying things. Things-FromBeyond, legendary beasts, dark relics, portals to the spirit realms, timeline shifts, and other heavy weirdness manifest."
},
"Danger": {
1: "No extra or hidden dangers or just easily avoided threats.",
2: "One or two minor threats or annoyances.",
3: "A few serious obstacles, but modest risks.",
4: "A few serious obstacles, with serious risks.",
5: "A minefield of risks, traps, and dangers.",
6: "The entire area is a trap, filled with numerous hidden threats and nearly unavoidable dangers."
},
"Rarity": {
2: "Easy to find, fairly common, few barriers to access, relatively low importance.",
4: "Requires effort to find, uncommon, at least a few obstacles, somewhat important.",
6: "Hard to find, unusually rare, typically harsh barrier to access, most important."
},
"Cool": {
1: "Dull, boring, mundane, drab, uptight, conservative.",
2: "Behind the times, minor flash, limited fashion.",
4: "Average, generally fashionable, fairly cool.",
5: "Fashion heights, elevated, cutting edge, elite.",
6: "Wild, extreme, hip as possible, bleeding edge."
},
"Drama": {
1: "Dull lecture, lukewarm agreement, lack of tension.",
2: "Subtle hostility, mild disagreement, stale rivalry.",
4: "Simmering tension, love glances, minor face-off.",
5: "Major intrigue, social jockeying, bursting passion.",
6: "Erupting passion, heated conflict, shocking twists."
},
"Sympathy": {
1: "As hostile as possible. Extremely unwelcome.",
2: "Sneers and cold shoulders. Unfriendly reception.",
4: "Neutral, average, or about expected.",
5: "Warm smiles and helpful attitudes. Friendly climate.",
6: "As friendly as possible. Overflowing hospitality."
},
"Rumor": {
1: "None, minimal, or directly opposite.",
2: "Little, sprinkling, or generally contrary.",
4: "Moderate, average, mixed, or overall neutral.",
5: "A lot, prominent, or generally expected.",
6: "Overwhelming, maximum, or as much as possible."
}
},
"NPC": {
"Personality": {
3: "Monstrous or sociopathic.",
5: "“Type A” or power-hungry.",
6: "Outgoing and friendly.",
7: "Hard-hearted hard worker.",
8: "Shy and reserved.",
10: "Deceptive and manipulative.",
12: "Delusional or extremely obsessive."
},
"Motive": {
3: "Causing harm and torment.",
5: "Acquiring rare items or influence.",
6: "Doing their job or fulfilling a role.",
7: "Maintaining lifestyle and happiness.",
8: "Improving their life or helping someone.",
10: "An unusual philosophical goal.",
12: "Creating radical change.",
},
"Attitude": {
3: "Distrustful and paranoid.",
5: "Colorful showoff or performer.",
6: "Quiet and agreeable.",
7: "Enthusiastic team player.",
8: "Blowhard or bully.",
10: "Grumpy lone wolf.",
12: "Excessively zealous preacher."
},
"Approach": {
3: "Chaotic and piecemeal.",
5: "Methodical, exacting, and calculated.",
6: "Relying on intuition and gut reactions.",
7: "Reacts based on the best available information, but with minimal planning.",
8: "Loosely but expertly planned, flexible.",
10: "Passionate and impulsive.",
12: "Over the top and overcomplicated plans, methods, and mechanisms."
}
},
"prompts": {
"Event": {
3: "A rare or unusual market.",
5: "Civil unrest or disturbance.",
6: "Flood of tourists or explorers.",
7: "Festival or holiday.",
8: "Unusually severe weather.",
10: "Severe fire or disaster.",
12: "Weird or surreal phenomena."
},
"Meetings": {
3: "Secret society",
4: "Criminal or cult leader",
5: "Niche or subculture group",
6: "Activist or religious speaker",
7: "Request for help",
8: "Authorities or civic leaders",
9: "Local community stars or leaders",
10: "Threats or warnings",
12: "Someone thought missing or dead"
},
"Challenge": {
2: "Explore and escape a very strange place.",
3: "Solve a hostage situation. May be an object instead of people, as fits your plot.",
4: "The main characters are attacked. Not always a physical confrontation; it could be an assault on their assets or a social positioning move.",
5: "Conflict or argument with the authorities, elders, or other ranking NPCs.",
6: "Solve a crime or mystery.",
7: "Assist people in need.",
8: "Retrieve an item or evidence.",
9: "Navigate a tense situation.",
10: "Run into trouble.",
11: "Escape from a trap or seemingly unbeatable foe.",
12: "Face a worst fear in dreams or the flesh."
},
"Request": {
3: "Find and/or capture a dangerous criminal, cult leader, or group enemy.",
4: "Non-violently stop a neighborhood bully from harassing a member of a respected family.",
5: "Locate a missing person or lost items.",
6: "Help traumatized or injured people cope and heal.",
7: "Difficult to acquire information or items are needed by influential figures or group leaders.",
8: "A major danger is harming people and needs to be repaired or otherwise neutralized.",
9: "Discontent or a criminal outbreak is creating chaos and needs to be fixed.",
10: "Retrieve resources or personal effects from a dangerous or poorly explored area.",
12: "Make a secret handoff in violation of the law or regional social norms."
},
"Twist": {
2: "What A Twist! Reveal a new Big Bad or a fresh major story complication in a typical “big twist” way. While this creates new problems, it should also introduce new resources and possibilities for the player characters.",
4: "The authorities turn against the PCs OR a major ally betrays them.",
6: "The approach the PCs were taking turns out to be the wrong tactic or insufficient to fix the problem. However, they should be directed or receive clues to help transfer them to the new path and evolving storyline.",
7: "A mixed or neutral high-level NPC appears. It could be anything from a secret agency director to a blazing archangel. Use the main oracle and 3 questions to determine its purpose and attitude",
9: "The player character actions turn out to be more effective than expected or just flat out lucky, granting them major progress towards their goals. However, the gains should also introduce new problems and puzzles for the characters to solve.",
11: "Hostile authorities make peace with the PCs OR a major opposition figure turns to their side.",
12: "What A Twist! Reveal a new Big Bad or a fresh major story complication in a typical “big twist” way. While this creates new problems, it should also introduce new resources and possibilities for the player characters."
}
}
},
"world": {
"twists": {
11: "Interpret the roll in worse than the worst way possible. What is the most inconvenient or troublesome unexpected event you can think of?",
22: "Interpret the answer in the weirdest way possible. What is the most bizarre or surreal event possible?",
33: "Interpret the roll as dragging the action to a completely different kind of scene and encounter. What is the most disruptive or interesting way for the circumstances to shift?",
44: "Interpret the answer as having a frenemy or grudging ally show up to provide decisive help for the next couple of scenes. For a high price. Who or what would be most irritating or difficult owing a favor to?",
55: "Interpret the answer in the most unexpected way imaginable. What is the most unlikely occurrence or surprising twist?",
66: "Interpret the answer as perfect for the main characters. What is the best possible answer for them? What would be most advantageous or beneficial?"
},
"straight": {
"Mixed": {
1: "Strong no. No and.",
2: "Weak no. No but.",
3: "Maybe or mixed, leaning unfavorable or negative.",
4: "Maybe or mixed, leaning favorable or affirmative.",
5: "Weak yes. Yes but.",
6: "Strong yes. Yes and."
},
"Binary": {
1: "Strong no. No and.",
2: "Flat no. No.",
3: "Weak no. No but.",
4: "Weak yes. Yes but.",
5: "Flat yes. Yes.",
6: "Strong yes. Yes and."
}
},
"depth": {
"Depth": {
1: "Minimal, extremely weak, as little as possible, short-lived.",
3: "Few, weak, scarce, brief.",
5: "Average, moderate, plentiful, lingering.",
6: "Maximum, strong, very many or abundance, long-lasting.",
}
},
"generator": {
"Scale": {
1: "The very opposite. Not at all. Not relevant.",
2: "Mostly the contrary. A little bit. Maybe a vague reference.",
3: "Slightly opposed. Modestly. Tenuous connection.",
4: "Mildly conducive. Somewhat. Simple tie or theme.",
5: "Strongly present. Substantially. Meaningful association.",
6: "The very icon of it. Entirely. Deep, thorough connections."
},
"Theme": {
1: "The exact opposite. (If absurd, the world is very rational or serious. With magic, magic is long dead or never existed.)",
2: "Very weak influence or only small hints of it.",
3: "A tertiary or minor recurring theme.",
4: "A secondary recurring theme with modest influence.",
5: "A major theme threaded through the story and world.",
6: "An overwhelming or heavily emphasized theme. Almost everything about the world or answer reflects or ties into it."
}
}
},
"character": {
"general": {
"Answer": {
2: "No, negative, refusal.",
3: "Uncertain or mixed answer, leaning no.",
4: "Mixed or uncertain answer, leaning yes.",
6: "Yes, positive, agreement.",
},
"Motivation": {
1: "Unmotivated or resistant, maybe even hostile.",
3: "Unengaged, but will go along with the flow.",
5: "Average interest and general player motivation level.",
6: "Higher engaged and motivated, maybe even obsessed. "
},
"Directness": {
1: "The Rube Goldberg of responses, unnecessarily roundabout and indirect.",
2: "A normal indirect approach, a bit complex but still sensible",
4: "Pretty average response, not the most direct but on-point.",
5: "The typical blunt approach, taking things head-on but not rushing in.",
6: "An over-the-top, recklessly direct and single-minded approach. "
},
"Curiousity": {
1: "Could hardly care less, utterly uninterested.",
3: "Not completely apathetic, but pretty far down their list of questions.",
5: "Active curiosity or mild obsession, will pursue at most opportunities.",
6: "Completely obsessed, an unhealthy level of interest. ",
},
"Impulsiveness": {
2: "Overly cautious and slow to act, almost absent impulses.",
3: "Generally cautious, but not to the point of hindering reactions.",
4: "Generally impulsive, but not the point of recklessness.",
6: "Careless, reckless, and driven to do something, anything."
},
"Aggressiveness": {
1: "Pretty much acting the pacifist, only reacting to extreme pressure.",
3: "Trying to avoid conflict, but willing to act in defense.",
5: "Looking for conflict, but will not invent or inflate a reason.",
6: "The slightest thing will set off a tirade or attack, as appropriate."
},
"Troublemaker": {
1: "Just not in the mood to rock the boat or look for trouble right now.",
3: "Will only cause a problem if a really good opportunity falls in the lap.",
5: "Will take most chances to play pranks, cause chaos, or stir up trouble.",
6: "Looking for that button that will set off a huge chain reaction or response."
},
"Cooperation": {
1: "Uncooperative and unhelpful, even contrarian.",
3: "Grudgingly cooperative at best, but looking for an out.",
5: "More or less helpful and supportive, but holding their own goals.",
6: "Willing to put aside their aims to help the group or another player."
},
"Tactical": {
1: "Tactics? There is no time for tactics! Think less, act more!",
3: "Unconcerned with strategy, but may listen to advice and/or direction.",
5: "General optimization mindset, looking for the best approach.",
6: "Obviously, the situation requires detailed planning and strategy."
}
}
},
"mystery": {
"simplified": {
"Leads": {
1: "Cold trail, misdirection.",
3: "Weak fading trail.",
5: "On the main path, the right direction.",
6: "Hot on the trail, catching up."
},
"Clues": {
1: "Misleading or useless.",
3: "Incomplete or circumstantial.",
5: "Standard usable clues.",
6: "High value, very useful evidence."
}
},
"direction": {
"Trail": {
2: "Weak fading trail. -1 on evidence, -1 on utility.",
4: "On the main path, the right direction. -1 on evidence, +1 on leads.",
6: "Hot on the trail, catching up. +1 on evidence, +1 on utility."
},
"Time": {
2: "Moving slow, falling behind.",
4: "Keeping pace.",
6: "Catching up, making up time."
},
"Favorability": {
1: "The answer could not possibly be more unfavorable to the characters; interpret in the most hostile or negative way possible.",
2: "Generally unfavorable for the protagonists.",
3: "Neutral or mildly disadvantageous.",
4: "Neutral or mildly favorable.",
5: "On par to the advantage of the characters.",
6: "The answer is the best possible result, for whatever reason; interpret in the most favorable light or with the best advantage."
},
"Twist": {
11: "Sabotage. Somebody has sabotaged your vehicle, the road, the exits, or something else that impedes your progress. However, they may have left clues in doing so.",
22: "Lucky find. Despite going down a wrong turn in the overall investigation, you happen upon a minor clue or slightly helpful witness. +1 clue point.",
33: "Confusion. The trail of the mystery seems to split off in contradictory ways after an unusual encounter or bizarre event gets you mixed up. Suffer moderate penalties or increased risks, as fits your roleplaying system, on investigation-related attempts for the scene.",
44: "Inspiration. Something random you see or an omen suddenly makes everything clear with a flash of insight. -1 clue point requirement for all remaining steps, including the current mystery step.",
55: "Ambush. You are getting a little too close and are ambushed. Depending on your game and genre, this could range from a literal ambush attack to social enemies picking an inconvenient time to badger you.",
66: "Surprise witness. A witness comes forward with surprise testimony or an unexpected piece of evidence. Gain +2 on the evidence die and +1 on the utility die on your next clue oracle roll, as well as gain +1 clue point."
}
},
"clues": {
"Evidence": {
2: "Incomplete or circumstantial.",
4: "Standard usable clues.",
6: "High value, very useful evidence."
},
"Utility": {
"yes": {
2: "1 clue point.",
4: "2 clue points.",
6: "3 clue points."
},
"mixed": {
3: "1 clue point.",
6: "2 clue points."
},
"no": {
4: "0 clue points.",
5: "0 clue points, but +1 on leads die.",
6: "0 clue points, but +2 on leads die."
}
},
"Leads": {
1: "Non-existent, perhaps even misleading, leads. Take a -1 to two of the dice (player choice) on the next direction roll.",
2: "Weak leads. Take a -1 to one of the dice (player choice) on the next direction roll.",
4: "Standard leads. Make the next direction roll without modifiers.",
5: "Good lead. Take a +1 to one of the dice (player choice) on the next direction roll.",
6: "Strong leads. Take a +1 to two of the dice (player choice) on the next direction roll.",
7: "Perfect leads. Take +1 on all three dice on the next direction roll OR +2 on a dice of choice."
},
"Twist": {
11: "Red herring. Misleading or planted evidence leads you to false conclusions, throwing off your investigation and wasting precious time. -2 clue points.",
22: "Overlooked witness. Perhaps they are child or someone of low social status, but there is a key witness everyone overlooked. They seek your companionship or protection in exchange for cooperation. +2 clue points if you accept their offer, but it will attract hostility or danger, drawing you into potentially distracting conflict.",
33: "Corruption. Authorities or major leaders are allied against you or wish to bury the mystery for their own selfish purposes. For the remainder of the step, take severe penalties or high risks when dealing with affiliated authorities or underlings. Also presume their default attitude is hostile.",
44: "Old friends. Someone who owes you a favor, was a childhood friend, or otherwise has old ties to you shows up to offer their help. On the next direction roll and following clue roll, rearrange the dice as desired.",
55: "Old enemies. Enemies from your past or someone you have wronged vows to make your life difficult. They successfully spread rumors that you are responsible for any wrongdoing or are corrupt with suspicious motives. Local authorities and witnesses will be generally uncooperative and suspicious to hostile by default.",
66: "Perfect lead. You stumble upon rock solid evidence or a direct lead. Immediately jump to the climax of the current step and gain minor bonuses or slightly reduced risks while confronting it. "
}
},
"solution": {
"Evidence": {
2: "Weak evidence. You are missing a vital piece despite the amount of evidence collected.",
3: "Workable evidence. It will be sufficient to prove your theory, but it needs extra effort to pull together.",
5: "Solid evidence. You have enough clues to present a strong case, nothing more or less.",
6: "Airtight evidence. Everything you have gathered fits together perfectly and almost speaks for itself."
},
"Analysis": {
1: "Botched analysis. You get distracted by a random useless pattern. You need more evidence to correct the error.",
3: "Scrambled analysis. The pieces do not quite fit together right. You need more evidence to fill in the gaps and logical connections.",
5: "Solid analysis. You arrange the pieces into a convincing narrative.",
6: "Legendary analysis. You find an unusual amount of insight in your study."
},
"Entropy": {
1: "You have a terrible turn of luck. (Examples: A Big Bad suddenly interferes. A representative invokes an obscure loophole.) A lot more evidence is needed to find a true solution.",
3: "Roll two dice. Read the first die result using the direction twist chart and the second using the clue twist chart. If they are both positive results, roll again. Apply both twists at the same time. Resolve, then revise solution and roll again.",
5: "Luck is smiling upon you, or at least ignoring you. Nothing happens and things move on.",
6: "You are unusually lucky. For final resolutions, extra independent confirmation pours in or additional useful details are revealed. For steps, you gain a +1 bonus on all the dice for the next direction and clue rolls."
}
},
"sudden events": {
"Event": {
1: "Attack. You are ambushed, your assets are suddenly frozen, or you are otherwise attacked. You gain fresh leads to track down the reason for the attack.",
2: "Threats and intimidation. Similar to an attack, but more subtle and involving threats of harm, rather than actual direct harm upfront. You gain fresh leads to find out more about who was trying to scare you off.",
4: "New client or contact. Someone related to your existing case or a witness to it makes contact.",
5: "Surfacing or exposure. Key evidence, a witness, or something else directly connected to the case surfaces.",
6: "Hidden ally. Someone comes to your aid with crucial information."
},
"Strength": {
1: "Weak leads. -1 to all dice on next direction roll.",
3: "Partial leads. -1 on the first direction die (trail).",
5: "Solid leads. +2 on the first direction die (trail).",
6: "Amazing help. +1 on all dice on the next direction roll and the following clue roll."
},
"Cost": {
1: "Painful, severe costs. Perhaps your office is destroyed in an attack. Maybe your source demands a price equal to all your available cash. The cost is steep.",
3: "A heavy price. While not destructive or the most severe cost, the price tag is still harsh. You may end up in deep debt to someone you would rather not owe or have to spend most of your resources to settle it.",
5: "A delayed and moderate cost. Most typically comes in the form of a substantive favor owed.",
6: "The aid or fresh help comes without any price."
}
},
"fresh leads": {
"Source": {
1: "Someone connected the case having second thoughts.",
2: "You randomly happen upon a relevant scene or stumble upon new evidence.",
4: "One of your regular contacts or friends.",
5: "Someone is overheard bragging about a key element.",
6: "An anonymous source with questionable motives."
},
"Quality": {
2: "Weak but useful rumors. -1 on the trail die.",
4: "A common lead, useful but nothing special.",
6: "High quality leads, +1 on all direction dice next roll."
},
"Catch": {
2: "Roll a single die and read it as an event cost die.",
4: "You owe a modest favor or reasonable price.",
6: "You offer a vague promise to take a case later on."
}
}
}
}
// calypso
var calypso = {
"dramatic": ["Declare a new danger or inflict harm as promised.", "Use someone’s character aspects against them.", "Put someone in a compromising or high-stakes position.", "Bring in someone interesting with an agenda.", "Reveal an unwelcome truth.", "Offer a hard bargain or an ugly choice.", "Turn someone’s action back on them.", "Show a drawback to or new facet of your gear or abilities.", "Expose a weakness or a past mistake’s consequences.", "Take something or someone away, or threaten to.", "Show signs of something bad happening off-screen.", "Tempt or provoke a reaction."],
"breaks": ["binge or exhaust self", "flee or disappear", "indulge vice or trauma", "put others in harm’s way", "put self in harm’s way", "destroy something beloved"],
"events": {
"Plot": ["A new or randomly chosen actor becomes important or arrives on screen.", "A random plot thread becomes important or is called back into play.", "Introduce a new actor.", "Introduce a new plot thread or motif.", "Show how a new or random actor and a random plot thread are linked.", "Something happens to an ally (random or logical); roll again for what."],
"Action": ["A bomb drops, literally or figuratively.", "An unexpected enemy attacks from ambush.", "Someone’s looking for a fight.", "Someone is being mugged or murdered or something else noisy nearby.", "Badly wounded person is discovered, being chased or stalked.", "An unexpected ally appears or reveals themselves."],
"Weird": ["A chaos bomb drops, literally or figuratively.", "Magical effect occurs, to the hero or an ally's detriment.", "Magical effect occurs, to everyone's detriment.", "Someone is compelled to act out of character or to feel a certain way.", "Wild coincidence aids the hero -- at a cost.", "Something changes in an utterly improbable way."],
"Environment": ["Natural disaster.", "Fire or established natural hazard erupts.", "An actor's long term plans begin to bear fruit.", "An actor's long term plans go awry.", "A hidden enemy is revealed.", "Someone dies or is very badly injured off-screen."],
"Social": ["A bomb drops, figuratively.", "A powerful, dangerous, or humiliating secret or weakness is revealed.", "An embarrassing, revealing or damaging secret or weakness is revealed.", "An unexpected ally makes a move.", "Someone unexpectedly discovers or develops emotions for someone else.", "Someone isn't who they seem or switches motivations, ambitions, or goals suddenly."],
"General": ["A bomb drops, literally or figuratively.", "Someone acts out of character.", "A hidden enemy is revealed.", "A new threat emerges from the seeds of earlier events.", "Something of value is lost or imperiled.", "An actor makes a risky move in a bid to gain a Formidable Condition."]
},
"intent": [
["I am", "I have", "I think", "I feel", "I will", "I analyze"],
["I balance", "I desire", "I understand", "I use", "I know", "I believe"]
],
"personality": [
["devotion", "compassion", "obedience", "energy", "devotion to great work", "noscere, to learn"],
["truthfulness", "independence", "skepticism", "contentment, idleness", "unselfishness", "velle, to will"],
["unchastity, lust", "pride", "greed, gluttony", "cruelty, wrath", "dishonesty, envy", "tacere, to be silent"]
],
"motifs": {
"Elemental": {
"EARTH": ["power, resist, nature • resilience", ["Tower. Alliance (Solitude). A beauty in a tower, calling, greedy for affection.", "Autumn. Plenty (Scarcity). Naming something gives it power.", "Fairy. Despair (Hope). A soul, torn to pieces, and hidden away.", "Status Quo. Order (Rebellion). Do the ends ever justify the means?", "Whip. Pleasure (Pain). Indulgence without restraint leads to ruin.", "Rose. Beauty (Thorn). A beautiful gesture, but consider the source.", "Anchor. Security (Weight). A drunken jest taken seriously; a dare accepted.", "Bear. Caution (Aggression). A blow strikes true, unexpectedly.", "Crossroads. Choice (Restriction). Five spiteful ghosts, plotting revenge.", "Armor. Protection (Overprotection). A knight, dying, offers a shield to a squire.", "Law. Justice (Injustice). Six lords pass judgement on the seventh.", "Fist. Power (Corruption). A glittering mask, briefly cast aside.", "Fertility. Purposeful Growth (Wantonness). A casual proposition hides a dark motive.", "Earth. Resist (Succumb). A rock pushed uphill, rolling back down."]],
"AIR": ["skill, strategy, society • intellect", ["Key. Open (Close). Recklessness leads to adventure.", "Spring. Newness (Decay). Rejoice in the ephemeral, before it is gone.", "Wolf. Outsider (Outcast). Together, we will succeed where one might fail.", "Knowledge. Truth (Falsehood). Did you stop to think if you should?", "Succubus. Power at a Cost (Temptation). Poised on the line between love and obsession.", "Serpent. Self-interest (Treachery). Long-nurtured patience, rewarded.", "Palace. Luxury (Bureaucracy). A gilded cage for an irreplaceable songbird.", "Messenger. Communicate (Miscommunicate). What price peace and safety?", "Merchant. Calculated Risk (Debt). Fatuous contentment, willful blindness.", "Stars. Insight (Overreach). What price when reach exceeds grasp?", "Fox. Cunning (Cynicism). There's a trick to it; you just have know where to look.", "Empress. Generosity (Generosity with Strings). Parlay from a position of power.", "Emperor. Authority (Tyranny). A crumbling throne, a dying line, a final heir.", "Air. Community (Individual). A spider in a vast web, the threads of fate."]],
"WATER": ["luck, weird, other • sensitivity", ["Fool. Freedom (Isolation). An eye willingly traded for knowledge.", "Winter. Hard Choice (Selfishness). Bitter regret; lashing out in fury.", "Vampire. Natural (Supernatural). What price is too high for immortality?", "Chance. Safety (Risk). A chance encounter leads to unexpected fortune.", "Unicorn. Innocence (Ruse). A treasured gift sacrificed to save another.", "Veil. Disguise (Self-deception). When you part the veil, what stares back?", "Mirror. Reflection (Vanity). Take care, lest you become what you fear.", "Muse. Inspiration (Madness). Burning the candle at both ends.", "Memory. Remember (Forget). A restless night of uneasy dreams leads to action.", "Cross. Belief (Disbelief). The way only opens with sacrifice.", "Birds. Intuition (Logic). Shattered wax wings, carefully mended.", "Moon. Sensuality (Fickleness). The quicksilver book of night with no moon.", "Sun. Revelation (Blindness). A superior rival, challenged to single combat.", "Water. Healing (Imbalance). Moonlight reflecting off dark water."]],
"FIRE": ["body, action, transform • vigor", ["Phoenix. Rebirth (Destruction). It matters not, how dark it is; I will be the light.", "Summer. Passion (Exhaustion). The hum of bees on the heated night air.", "Vigor. Ready (Spent). A long-overdue rest, welcomed with glad heart.", "Sin. Virtue (Vice). A tearful confession, coerced, uncertain.", "Satyr. Tolerance (Enthusiasm). People don't always know when they are happy.", "Dragon. Desire (Obsession). A long-harbored desire, turned to obsession.", "The Call. Adventure (Abandonment). A lover, abandoned for the promise of riches.", "Sword. Strike (Parry). A double-edged sword, not yet bloody.", "Lion. Strength (Arrogance). Who better to lead than the one who will seize it?", "Shadows. JustifiedCaution (Fear of Shadows). A terrible secret whispered in the dark.", "Hero. Heroic (Unheroic). Can you ever truly go home again?", "Love. Selflessness (Jealousy). Beloved wings, given up for a true love.", "Death. Change (Stasis). Death is only the beginning.", "Fire. Transformation (Consumption)."]]
},
"General": {
"CROSSROADS": ["A hero, certain of their cause, who is ignoring all the signs of danger.", "A murder threatening to drag down a confessor haunted by forbidden desire.", "A valued artifact, sacred to birds, desired by a snake cult.", "A doctor, gifted but shaken by their first failure, and their ailing sibling.", "A gathering of scholars and academics, with a forgery discovered.", "A once a year festival celebrating a local commodity, threatened by greed."],
"FOOL": ["A skilled hunter, sworn to an order of knights, in love with one of the prey.", "A prince, lonely, who serves dutifully but wants freedom.", "A gentle teacher, determined and afraid, bearing the key.", "The arrogant outcast belonging to a dying culture, desperate to return home.", "A con artist in need, practicing their skills on a gullible mark.", "A prisoner of their own wild gifts, afraid and hunted by the greedy."],
"SHADOWS": ["A dead man’s daughter, attacked by a fiend a year to a day after his death.", "A witness, in hiding and armed, but unaware that the hunter draws near.", "The letter said to come, so I did; I owe them that much.", "A reporter, certain of the facts, missing in the woods.", "A gathering of people, the will read, the winner whoever survives the night.", "A chance encounter, and an offer to help unwittingly made to a ghost."],
"VEIL": ["An unwelcome inheritance, dreams of a stranger, a clue in the earth.", "An experiment gone awry, that which has been opened unable to be closed, the unseen seen and looking back.", "A small-time psychic, offering details of a crime only the killer could know.", "Madness plaguing the set of a film about madness, contagious like the flu.", "A witch, surrounded by ritual and sacrifice, claiming innocence.", "Twenty-one years ago it opened, and they disappeared. It’s almost time again."],
"HERO": ["A grieving seeker, returning with one wronged, from The City of the Dead.", "The wealthy mine owner, hiring swords to go after justifiably angry outlaws.", "A weary and taciturn barkeep, who was once a legendary warrior.", "The orb, sought by witches and by kings, possessed by a child.", "A gift from a dying courier, a collision course with authority and evil.", "The prodigal child, returning to find illness, and a hidden dark force."],
"WOLF": ["An heir, usurped, hidden behind a mask and a curse.", "One deemed lacking is called to do the impossible.", "A funeral calls the wayward child home, their skills now legendary.", "A girl, descended from the sea, sings of return to it.", "An ancient scroll, bearing the sigil of a wizard, and himself, imprisoned.", "A wolf, as big as a pony, padding silently through mists, and then gone."],
"FOX": ["A drunken angel, muttering under a streetlight as shadows creep in.", "The corpse in the driver’s seat, dead before he hit the water.", "Rain threatening on a solitary walk along the docks at night.", "A key player, fingers in every pie despite blatant retirement, asking a favor.", "A cop, desperate for help, banished for insisting they’re all connected.", "A drunken binge ending badly, in an alley, surrounded by predators."],
"PALACE": ["A widow, searching for a needed inheritance, stolen from the rightful owner.", "Old graffiti, found near a body, telling where the next one will be found.", "A young politician, looking for his own blackmailer, discovers his family has a dark secret.", "A reporter, waking up dead, piecing together the last night.", "The last survivor of an ancient house, pursued by an old foe, falling in love with a mortal.", "A seer, drawing demons like a magnet, who fights but wants only peace."],
"MOON": ["A mistaken identity, a dangerous conspiracy, a desperate gambit.", "A vampire, who steals their victims' memories, and longs for a name.", "A lonely detective cursed with visions at a touch, searching for a killer.", "A lost soul, given a second chance and new gifts, struggling to deal with both.", "An heir, robbed of love, bound by duty, descended from a bloody demon.", "An artist, frightened and gifted, with eyes that can see ghosts."],
"LOVE": ["A selfless act of courage, mixing a shy introvert up with a bewitching thief.", "A double agent, dangerously in thrall to the target.", "A young healer must overcome fears about love, and an eccentric family.", "A knight, bound by duty and oaths, assigned to shepherd an unruly charge to a fate neither wishes on the other.", "A reformed thief, turning back to crime for what seem like noble reasons.", "An eccentric expert who always plays it safe but longs for adventure."],
"MESSENGER": ["A scientist, scapegoat for over a god-alien’s death, sentenced to exile.", "A jaded celebrity, selling recorded memories, who has done almost everything.", "A captain, disgraced, leading an archaeological dig into dangerous ruins.", "A clone, believing itself the original, usurping the latter’s position of power.", "The heir to a corporate fortune, keeping a low profile on a cargo ship.", "A human, altered, alien, disdained, with gifts beyond understanding."],
"LAW": ["An elite unit, sent in to liberate a base held hostage by an android.", "A former secret agent, with a dirty past, sending his former allies to die.", "A smuggled psychic weapon and a betrayal that leaves someone thought dead.", "A debt called due to an old friend, dying but not yet dead, and one last trip.", "A traveler, cryosleep sick and amnesiac, and a solicitous crewmate.", "A pilot, running, whose mentor was killed by mysterious assassins."],
"SWORD": ["A warrior without a name or a king, searching for a lost heir.", "An heir, longing and dutiful, returning having retrieved the first crown.", "A lost love, a new love, a legendary sword, and a final chance at redemption.", "An ill-prepared novice, scarred in their first fight, grimly pursuing vengeance.", "A broken warrior, forsaking honor for pay and sneering at duty.", "A goddess, betrayed by a king she championed, awaiting the return of sword that will free her."],
"ROSE": ["The Queen of the Fairies lies dying, her last wish for her heir’s return.", "A cruel enchantment, robbing a warrior of her skills, forcing adaptation.", "A faerie muse, inspiring their lovers, even as they intoxicate and drain them.", "A knight, caught between love and duty, honor and their future.", "A fragile betrothal, unconsummated until a transformation is reversed.", "The lonely queen of a warlord, tempted to play dangerous games."],
"CALL": ["A wrong turn in the desert, a ranch under siege, a desperate victim.", "A newly-discovered artifact points to a legendary find, if the map and key can be retrieved.", "A scientist, married to logic, suffering visions of a mystical tomb.", "A survivor, scarred, unwittingly bearing the map to the lost treasure.", "A desperate mercenary, chasing the one person who can provide a cure.", "A ruthless gangster, dying, pursuing a rumor of immortality."],
"CHANCE": ["A clever pawn, assuming the identity of a criminal to expose a traitor.", "An assassin, grieving spouse and normal life, dragged back into the game.", "A jaded agent, investigating a possible resurrection everyone wants to exploit.", "A shipwreck on an island time forgot, science without ethics, an invitation.", "A killer with a deadline, ruthlessly settling old scores.", "A deadly prize, with unfathomable costs, in the hands of a vengeful scientist."],
"FIST": ["A palace, belonging to a preoccupied king, fought over by princes.", "A prince, bereft of patience but not morals, born of an unsuitable lineage.", "An heir, dispossessed, greedy, and indolent, listening to the wrong whispers.", "A trusted lawman who upholds the law but desperately needs money.", "A soldier, right-hand to the king, who owes old allegiance to a dark master.", "Two allied queens, balanced but envious of each other, each looking for an edge against the other."],
"SERPENT": ["A fun eral, for a despised patron, who offers up his throne to the worthy.", "The greedy scion of a dying religion, seeking the favor of her god.", "A lord, grieving, whose only heir was taken by bandits.", "A sword, the work of a chained master smith, destined to crown a ruler.", "The ambitious courtier, child of an exiled House, newly arrived and hungry.", "The celebration feast of a much-anticipated wedding, uniting two families long at odds."]
},
"Minor": [
["Heaven, sky", "Earth, worldly", "danger and obscurity", "youth and ignorance", "waiting, sincere desire, caution", "strength in adversity"],