botc-character-sheet 0.10.0 → 0.11.0-beta.2

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/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
- import { options as k, Fragment as g } from "preact";
2
- var E = 0;
3
- function e(n, i, s, t, a, l) {
1
+ import { options as x, Fragment as g } from "preact";
2
+ var N = 0;
3
+ function e(t, i, a, n, o, h) {
4
4
  i || (i = {});
5
- var c, d, o = i;
6
- if ("ref" in o) for (d in o = {}, i) d == "ref" ? c = i[d] : o[d] = i[d];
7
- var r = { type: n, props: o, key: s, ref: c, __k: null, __: null, __b: 0, __e: null, __c: null, constructor: void 0, __v: --E, __i: -1, __u: 0, __source: a, __self: l };
8
- if (typeof n == "function" && (c = n.defaultProps)) for (d in c) o[d] === void 0 && (o[d] = c[d]);
9
- return k.vnode && k.vnode(r), r;
5
+ var s, c, l = i;
6
+ if ("ref" in l) for (c in l = {}, i) c == "ref" ? s = i[c] : l[c] = i[c];
7
+ var r = { type: t, props: l, key: a, ref: s, __k: null, __: null, __b: 0, __e: null, __c: null, constructor: void 0, __v: --N, __i: -1, __u: 0, __source: o, __self: h };
8
+ if (typeof t == "function" && (s = t.defaultProps)) for (c in s) l[c] === void 0 && (l[c] = s[c]);
9
+ return x.vnode && x.vnode(r), r;
10
10
  }
11
- function T(n) {
12
- if (n.startsWith("#") && (n = n.slice(1)), n.length === 3 && (n = n.split("").map((a) => a + a).join("")), n.length !== 6)
11
+ function J(t) {
12
+ if (t.startsWith("#") && (t = t.slice(1)), t.length === 3 && (t = t.split("").map((o) => o + o).join("")), t.length !== 6)
13
13
  throw new Error("Invalid HEX color.");
14
- const i = parseInt(n.slice(0, 2), 16), s = parseInt(n.slice(2, 4), 16), t = parseInt(n.slice(4, 6), 16);
15
- return [i, s, t];
14
+ const i = parseInt(t.slice(0, 2), 16), a = parseInt(t.slice(2, 4), 16), n = parseInt(t.slice(4, 6), 16);
15
+ return [i, a, n];
16
16
  }
17
- function I(n, i, s) {
18
- const t = (a) => {
19
- const l = a.toString(16);
20
- return l.length === 1 ? "0" + l : l;
17
+ function L(t, i, a) {
18
+ const n = (o) => {
19
+ const h = o.toString(16);
20
+ return h.length === 1 ? "0" + h : h;
21
21
  };
22
- return `#${t(n)}${t(i)}${t(s)}`;
22
+ return `#${n(t)}${n(i)}${n(a)}`;
23
23
  }
24
- function _(n, i) {
25
- const [s, t, a] = T(n), l = Math.round(s * i), c = Math.round(t * i), d = Math.round(a * i);
26
- return I(l, c, d);
24
+ function k(t, i) {
25
+ const [a, n, o] = J(t), h = Math.round(a * i), s = Math.round(n * i), c = Math.round(o * i);
26
+ return L(h, s, c);
27
27
  }
28
- const f = {
28
+ const u = {
29
29
  townsfolk: "#00469e",
30
30
  outsider: "#00469e",
31
31
  minion: "#580709",
@@ -34,53 +34,53 @@ const f = {
34
34
  traveller: "#390758ff"
35
35
  // loric: '#1f5807',
36
36
  };
37
- function U({
38
- title: n,
37
+ function D({
38
+ title: t,
39
39
  author: i,
40
- characters: s,
41
- color: t = "#4a5568",
42
- jinxes: a = [],
43
- showSwirls: l = !0,
44
- includeMargins: c = !1,
45
- solidTitle: d = !1,
46
- iconScale: o = 1.6,
40
+ characters: a,
41
+ color: n = "#4a5568",
42
+ jinxes: o = [],
43
+ showSwirls: h = !0,
44
+ includeMargins: s = !1,
45
+ solidTitle: c = !1,
46
+ iconScale: l = 1.6,
47
47
  appearance: r = "normal"
48
48
  }) {
49
- const h = [
49
+ const d = [
50
50
  {
51
51
  key: "townsfolk",
52
52
  title: "Townsfolk",
53
- chars: s.townsfolk,
54
- color: f.townsfolk
53
+ chars: a.townsfolk,
54
+ color: u.townsfolk
55
55
  },
56
56
  {
57
57
  key: "outsider",
58
58
  title: "Outsiders",
59
- chars: s.outsider,
60
- color: f.outsider
59
+ chars: a.outsider,
60
+ color: u.outsider
61
61
  },
62
62
  {
63
63
  key: "minion",
64
64
  title: "Minions",
65
- chars: s.minion,
66
- color: f.minion
65
+ chars: a.minion,
66
+ color: u.minion
67
67
  },
68
68
  {
69
69
  key: "demon",
70
70
  title: "Demons",
71
- chars: s.demon,
72
- color: f.demon
71
+ chars: a.demon,
72
+ color: u.demon
73
73
  }
74
- ].filter((m) => m.chars.length > 0), u = _(t, 0.4);
74
+ ].filter((m) => m.chars.length > 0), y = k(n, 0.4);
75
75
  return /* @__PURE__ */ e(
76
76
  "div",
77
77
  {
78
78
  className: "character-sheet",
79
79
  id: "character-sheet",
80
80
  style: {
81
- "--header-color-light": t,
82
- "--header-color-dark": u,
83
- transform: c ? "scale(0.952)" : void 0
81
+ "--header-color-light": n,
82
+ "--header-color-dark": y,
83
+ transform: s ? "scale(0.952)" : void 0
84
84
  },
85
85
  children: [
86
86
  /* @__PURE__ */ e(
@@ -90,44 +90,44 @@ function U({
90
90
  src: "/images/parchment_texture_a4_lightened.jpg"
91
91
  }
92
92
  ),
93
- /* @__PURE__ */ e(x, { color: t }),
93
+ /* @__PURE__ */ e(W, { color: n }),
94
94
  /* @__PURE__ */ e("div", { className: "sheet-content", children: [
95
95
  /* @__PURE__ */ e(
96
- R,
96
+ T,
97
97
  {
98
- showSwirls: l,
99
- title: n,
98
+ showSwirls: h,
99
+ title: t,
100
100
  author: i,
101
- solidHeader: d
101
+ solidHeader: c
102
102
  }
103
103
  ),
104
104
  /* @__PURE__ */ e("div", { className: "characters-grid", children: [
105
- h.map((m, N) => /* @__PURE__ */ e(g, { children: [
105
+ d.map((m, f) => /* @__PURE__ */ e(g, { children: [
106
106
  /* @__PURE__ */ e(
107
- j,
107
+ A,
108
108
  {
109
109
  title: m.title.toUpperCase(),
110
110
  characters: m.chars,
111
- sidebarColor: t,
111
+ sidebarColor: n,
112
112
  charNameColor: m.color,
113
- iconScale: o,
113
+ iconScale: l,
114
114
  appearance: r
115
115
  },
116
116
  m.key
117
117
  ),
118
- N < h.length - 1 && /* @__PURE__ */ e("img", { src: "/images/divider.png", className: "section-divider" })
118
+ f < d.length - 1 && /* @__PURE__ */ e("img", { src: "/images/divider.png", className: "section-divider" })
119
119
  ] })),
120
- a.length > 0 && /* @__PURE__ */ e(g, { children: [
120
+ o.length > 0 && /* @__PURE__ */ e(g, { children: [
121
121
  /* @__PURE__ */ e("img", { src: "/images/divider.png", className: "section-divider" }),
122
122
  /* @__PURE__ */ e(
123
- A,
123
+ P,
124
124
  {
125
- jinxes: a,
125
+ jinxes: o,
126
126
  allCharacters: [
127
- ...s.townsfolk,
128
- ...s.outsider,
129
- ...s.minion,
130
- ...s.demon
127
+ ...a.townsfolk,
128
+ ...a.outsider,
129
+ ...a.minion,
130
+ ...a.demon
131
131
  ]
132
132
  }
133
133
  )
@@ -146,15 +146,15 @@ function U({
146
146
  }
147
147
  );
148
148
  }
149
- function R({
150
- showSwirls: n,
149
+ function T({
150
+ showSwirls: t,
151
151
  title: i,
152
- author: s,
153
- solidHeader: t = !1
152
+ author: a,
153
+ solidHeader: n = !1
154
154
  }) {
155
155
  return console.log("title:", i), /* @__PURE__ */ e(g, { children: [
156
156
  /* @__PURE__ */ e("h1", { className: "sheet-header", children: [
157
- n && /* @__PURE__ */ e(
157
+ t && /* @__PURE__ */ e(
158
158
  "img",
159
159
  {
160
160
  src: "/images/black-swirl-divider.png",
@@ -165,12 +165,12 @@ function R({
165
165
  "span",
166
166
  {
167
167
  style: {
168
- mixBlendMode: t ? "normal" : "multiply"
168
+ mixBlendMode: n ? "normal" : "multiply"
169
169
  },
170
170
  children: i
171
171
  }
172
172
  ),
173
- n && /* @__PURE__ */ e(
173
+ t && /* @__PURE__ */ e(
174
174
  "img",
175
175
  {
176
176
  src: "/images/black-swirl-divider.png",
@@ -178,132 +178,132 @@ function R({
178
178
  }
179
179
  )
180
180
  ] }),
181
- s && /* @__PURE__ */ e("h2", { className: "sheet-author", children: [
181
+ a && /* @__PURE__ */ e("h2", { className: "sheet-author", children: [
182
182
  "by ",
183
- s
183
+ a
184
184
  ] })
185
185
  ] });
186
186
  }
187
- function x({ color: n }) {
187
+ function W({ color: t }) {
188
188
  return /* @__PURE__ */ e("div", { className: "sidebar-container", children: [
189
189
  /* @__PURE__ */ e("div", { className: "sidebar-background" }),
190
- /* @__PURE__ */ e("div", { className: "sidebar-overlay", style: { backgroundColor: n } })
190
+ /* @__PURE__ */ e("div", { className: "sidebar-overlay", style: { backgroundColor: t } })
191
191
  ] });
192
192
  }
193
- function j({
194
- title: n,
193
+ function A({
194
+ title: t,
195
195
  characters: i,
196
- charNameColor: s,
197
- iconScale: t,
198
- appearance: a = "normal"
196
+ charNameColor: a,
197
+ iconScale: n,
198
+ appearance: o = "normal"
199
199
  }) {
200
- const l = i.length > 8 ? "space-between" : "flex-start";
200
+ const h = i.length > 8 ? "space-between" : "flex-start";
201
201
  return /* @__PURE__ */ e("div", { className: "character-section", children: [
202
- /* @__PURE__ */ e("h2", { className: "section-title", children: n }),
202
+ /* @__PURE__ */ e("h2", { className: "section-title", children: t }),
203
203
  /* @__PURE__ */ e("div", { className: "character-list", children: [
204
- /* @__PURE__ */ e("div", { className: "character-column", children: i.slice(0, Math.ceil(i.length / 2)).map((c) => /* @__PURE__ */ e(
205
- y,
204
+ /* @__PURE__ */ e("div", { className: "character-column", children: i.slice(0, Math.ceil(i.length / 2)).map((s) => /* @__PURE__ */ e(
205
+ v,
206
206
  {
207
- character: c,
208
- color: s,
209
- iconScale: t,
210
- appearance: a
207
+ character: s,
208
+ color: a,
209
+ iconScale: n,
210
+ appearance: o
211
211
  },
212
- c.id
212
+ s.id
213
213
  )) }),
214
- /* @__PURE__ */ e("div", { className: "character-column", style: { justifyContent: l }, children: i.slice(Math.ceil(i.length / 2), i.length).map((c) => /* @__PURE__ */ e(
215
- y,
214
+ /* @__PURE__ */ e("div", { className: "character-column", style: { justifyContent: h }, children: i.slice(Math.ceil(i.length / 2), i.length).map((s) => /* @__PURE__ */ e(
215
+ v,
216
216
  {
217
- character: c,
218
- color: s,
219
- iconScale: t,
220
- appearance: a
217
+ character: s,
218
+ color: a,
219
+ iconScale: n,
220
+ appearance: o
221
221
  },
222
- c.id
222
+ s.id
223
223
  )) })
224
224
  ] })
225
225
  ] });
226
226
  }
227
- function y({
228
- character: n,
227
+ function v({
228
+ character: t,
229
229
  color: i,
230
- iconScale: s,
231
- appearance: t = "normal"
230
+ iconScale: a,
231
+ appearance: n = "normal"
232
232
  }) {
233
- const a = () => n.wiki_image ? n.wiki_image : n.image ? typeof n.image == "string" ? n.image : n.image[0] : null, l = (m) => {
234
- const N = m.match(/^(.*?)(\[.*?\])$/);
235
- if (N) {
236
- const [, C, M] = N;
233
+ const o = () => t.wiki_image ? t.wiki_image : t.image ? typeof t.image == "string" ? t.image : t.image[0] : null, h = (m) => {
234
+ const f = m.match(/^(.*?)(\[.*?\])$/);
235
+ if (f) {
236
+ const [, S, M] = f;
237
237
  return /* @__PURE__ */ e(g, { children: [
238
- C,
238
+ S,
239
239
  /* @__PURE__ */ e("strong", { className: "setup-ability", children: M })
240
240
  ] });
241
241
  }
242
242
  return m;
243
- }, c = a(), d = t !== "normal" ? `character-card ${t}` : "character-card", o = t === "super-compact" ? "character-icon super-compact" : "character-icon", r = t === "super-compact" ? "character-icon-placeholder super-compact" : "character-icon-placeholder", h = t === "super-compact" ? "character-name super-compact" : "character-name", u = t === "super-compact" ? "character-ability super-compact" : "character-ability";
244
- return /* @__PURE__ */ e("div", { className: d, children: [
245
- /* @__PURE__ */ e("div", { className: "character-icon-wrapper", children: c ? /* @__PURE__ */ e(
243
+ }, s = o(), c = n !== "normal" ? `character-card ${n}` : "character-card", l = n === "super-compact" ? "character-icon super-compact" : "character-icon", r = n === "super-compact" ? "character-icon-placeholder super-compact" : "character-icon-placeholder", d = n === "super-compact" ? "character-name super-compact" : "character-name", y = n === "super-compact" ? "character-ability super-compact" : "character-ability";
244
+ return /* @__PURE__ */ e("div", { className: c, children: [
245
+ /* @__PURE__ */ e("div", { className: "character-icon-wrapper", children: s ? /* @__PURE__ */ e(
246
246
  "img",
247
247
  {
248
- src: c,
249
- alt: n.name,
250
- className: o,
251
- style: { scale: s.toString() }
248
+ src: s,
249
+ alt: t.name,
250
+ className: l,
251
+ style: { scale: a.toString() }
252
252
  }
253
253
  ) : /* @__PURE__ */ e(
254
254
  "div",
255
255
  {
256
256
  className: r,
257
- style: { color: i, scale: s.toString() },
258
- children: n.name.charAt(0)
257
+ style: { color: i, scale: a.toString() },
258
+ children: t.name.charAt(0)
259
259
  }
260
260
  ) }),
261
261
  /* @__PURE__ */ e("div", { className: "character-info", children: [
262
- /* @__PURE__ */ e("h3", { className: h, style: { color: i }, children: n.name }),
263
- /* @__PURE__ */ e("p", { className: u, children: l(n.ability) })
262
+ /* @__PURE__ */ e("h3", { className: d, style: { color: i }, children: t.name }),
263
+ /* @__PURE__ */ e("p", { className: y, children: h(t.ability) })
264
264
  ] })
265
265
  ] });
266
266
  }
267
- function A({ jinxes: n, allCharacters: i }) {
268
- const s = new Map(
267
+ function P({ jinxes: t, allCharacters: i }) {
268
+ const a = new Map(
269
269
  i.map((r) => [r.id.toLowerCase(), r])
270
- ), t = (r) => r.wiki_image ? r.wiki_image : r.image ? typeof r.image == "string" ? r.image : r.image[0] : null, a = (r, h) => {
271
- const u = s.get(r.characters[0]), m = s.get(r.characters[1]);
270
+ ), n = (r) => r.wiki_image ? r.wiki_image : r.image ? typeof r.image == "string" ? r.image : r.image[0] : null, o = (r, d) => {
271
+ const y = a.get(r.characters[0]), m = a.get(r.characters[1]);
272
272
  return /* @__PURE__ */ e("div", { className: "jinx-item", children: [
273
273
  /* @__PURE__ */ e("div", { className: "jinx-icons", children: [
274
- u && /* @__PURE__ */ e("div", { className: "jinx-icon-wrapper", children: t(u) ? /* @__PURE__ */ e(
274
+ y && /* @__PURE__ */ e("div", { className: "jinx-icon-wrapper", children: n(y) ? /* @__PURE__ */ e(
275
275
  "img",
276
276
  {
277
- src: t(u),
278
- alt: u.name,
277
+ src: n(y),
278
+ alt: y.name,
279
279
  className: "jinx-icon"
280
280
  }
281
- ) : /* @__PURE__ */ e("div", { className: "jinx-icon-placeholder", children: u.name.charAt(0) }) }),
281
+ ) : /* @__PURE__ */ e("div", { className: "jinx-icon-placeholder", children: y.name.charAt(0) }) }),
282
282
  /* @__PURE__ */ e("span", { className: "jinx-divider" }),
283
- m && /* @__PURE__ */ e("div", { className: "jinx-icon-wrapper", children: t(m) ? /* @__PURE__ */ e(
283
+ m && /* @__PURE__ */ e("div", { className: "jinx-icon-wrapper", children: n(m) ? /* @__PURE__ */ e(
284
284
  "img",
285
285
  {
286
- src: t(m),
286
+ src: n(m),
287
287
  alt: m.name,
288
288
  className: "jinx-icon"
289
289
  }
290
290
  ) : /* @__PURE__ */ e("div", { className: "jinx-icon-placeholder", children: m.name.charAt(0) }) })
291
291
  ] }),
292
292
  /* @__PURE__ */ e("p", { className: "jinx-text", children: r.jinx })
293
- ] }, h);
294
- }, l = n.length > 4, c = l ? Math.ceil(n.length / 2) : n.length, d = n.slice(0, c), o = n.slice(c);
293
+ ] }, d);
294
+ }, h = t.length > 4, s = h ? Math.ceil(t.length / 2) : t.length, c = t.slice(0, s), l = t.slice(s);
295
295
  return /* @__PURE__ */ e("div", { className: "jinxes-section", children: [
296
296
  /* @__PURE__ */ e("h2", { className: "section-title" }),
297
- l ? /* @__PURE__ */ e("div", { className: "jinxes-list jinxes-two-columns", children: [
298
- /* @__PURE__ */ e("div", { className: "jinx-column", children: d.map((r, h) => a(r, h)) }),
299
- /* @__PURE__ */ e("div", { className: "jinx-column", children: o.map((r, h) => a(r, c + h)) })
300
- ] }) : /* @__PURE__ */ e("div", { className: "jinxes-list", children: n.map((r, h) => a(r, h)) })
297
+ h ? /* @__PURE__ */ e("div", { className: "jinxes-list jinxes-two-columns", children: [
298
+ /* @__PURE__ */ e("div", { className: "jinx-column", children: c.map((r, d) => o(r, d)) }),
299
+ /* @__PURE__ */ e("div", { className: "jinx-column", children: l.map((r, d) => o(r, s + d)) })
300
+ ] }) : /* @__PURE__ */ e("div", { className: "jinxes-list", children: t.map((r, d) => o(r, d)) })
301
301
  ] });
302
302
  }
303
- function v(n) {
304
- return typeof n == "string" ? n === "dawn" ? "/images/dawn-icon.png" : n === "dusk" ? "/images/dusk-icon.png" : n === "minioninfo" ? "/images/minioninfo.png" : "/images/demoninfo.png" : typeof n.image == "string" ? n.image : Array.isArray(n.image) && n.image.length ? n.image[0] : n.wiki_image;
303
+ function b(t) {
304
+ return typeof t == "string" ? t === "dawn" ? "/images/dawn-icon.png" : t === "dusk" ? "/images/dusk-icon.png" : t === "minioninfo" ? "/images/minioninfo.png" : "/images/demoninfo.png" : typeof t.image == "string" ? t.image : Array.isArray(t.image) && t.image.length ? t.image[0] : t.wiki_image;
305
305
  }
306
- const b = /* @__PURE__ */ new Set([
306
+ const w = /* @__PURE__ */ new Set([
307
307
  "the",
308
308
  "of",
309
309
  "in",
@@ -323,64 +323,64 @@ const b = /* @__PURE__ */ new Set([
323
323
  "upon",
324
324
  "after",
325
325
  "before"
326
- ]), p = (n, i) => b.has(n) || i === 0 && b.has(n.toLowerCase()), O = (n) => n.split(/\s+/).reduce((i, s, t, a) => {
327
- const l = p(s, t), c = t > 0 && p(a[t - 1], t - 1);
328
- if (t === 0 || l !== c) {
329
- const o = [];
330
- for (let h = t; h < a.length && p(a[h], h) === l; h++)
331
- o.push(a[h]);
326
+ ]), p = (t, i) => w.has(t) || i === 0 && w.has(t.toLowerCase()), C = (t) => t.split(/\s+/).reduce((i, a, n, o) => {
327
+ const h = p(a, n), s = n > 0 && p(o[n - 1], n - 1);
328
+ if (n === 0 || h !== s) {
329
+ const l = [];
330
+ for (let d = n; d < o.length && p(o[d], d) === h; d++)
331
+ l.push(o[d]);
332
332
  const r = i.length > 0;
333
333
  i.push(
334
334
  /* @__PURE__ */ e(
335
335
  "span",
336
336
  {
337
- className: l ? "minor-word" : void 0,
337
+ className: h ? "minor-word" : void 0,
338
338
  children: [
339
339
  r && " ",
340
- o.join(" ")
340
+ l.join(" ")
341
341
  ]
342
342
  },
343
- t
343
+ n
344
344
  )
345
345
  );
346
346
  }
347
347
  return i;
348
- }, []), $ = ({
349
- title: n,
348
+ }, []), E = ({
349
+ title: t,
350
350
  color: i,
351
- includeMargins: s,
352
- formatMinorWords: t = !1,
353
- displayNightOrder: a = !1,
354
- firstNightOrder: l = [],
355
- otherNightOrder: c = []
351
+ includeMargins: a,
352
+ formatMinorWords: n = !1,
353
+ displayNightOrder: o = !1,
354
+ firstNightOrder: h = [],
355
+ otherNightOrder: s = []
356
356
  }) => /* @__PURE__ */ e(
357
357
  "div",
358
358
  {
359
359
  className: "sheet-backing",
360
360
  style: {
361
- transform: s ? "scale(0.952)" : void 0
361
+ transform: a ? "scale(0.952)" : void 0
362
362
  },
363
363
  children: [
364
364
  /* @__PURE__ */ e("div", { className: "sheet-background", children: [
365
365
  /* @__PURE__ */ e("div", { className: "title-container", children: /* @__PURE__ */ e("h1", { children: (() => {
366
- const o = n.split("&");
367
- return o.map((r, h) => /* @__PURE__ */ e(g, { children: [
368
- t ? O(r) : r,
369
- h < o.length - 1 && /* @__PURE__ */ e("span", { className: "ampersand", children: "&" })
366
+ const l = t.split("&");
367
+ return l.map((r, d) => /* @__PURE__ */ e(g, { children: [
368
+ n ? C(r) : r,
369
+ d < l.length - 1 && /* @__PURE__ */ e("span", { className: "ampersand", children: "&" })
370
370
  ] }));
371
371
  })() }) }),
372
- a && /* @__PURE__ */ e(g, { children: /* @__PURE__ */ e("div", { className: "night-order-container", children: [
372
+ o && /* @__PURE__ */ e(g, { children: /* @__PURE__ */ e("div", { className: "night-order-container", children: [
373
373
  /* @__PURE__ */ e("div", { className: "night-order", children: [
374
374
  /* @__PURE__ */ e("span", { children: "First Night:" }),
375
- /* @__PURE__ */ e("div", { className: "night-icons", children: l.map((o) => {
376
- const r = v(o);
375
+ /* @__PURE__ */ e("div", { className: "night-icons", children: h.map((l) => {
376
+ const r = b(l);
377
377
  return r && /* @__PURE__ */ e("img", { src: r, class: "night-order-icon" });
378
378
  }) })
379
379
  ] }),
380
380
  /* @__PURE__ */ e("div", { className: "night-order", children: [
381
381
  /* @__PURE__ */ e("span", { children: "Other Nights:" }),
382
- /* @__PURE__ */ e("div", { className: "night-icons", children: c.map((o) => {
383
- const r = v(o);
382
+ /* @__PURE__ */ e("div", { className: "night-icons", children: s.map((l) => {
383
+ const r = b(l);
384
384
  return r && /* @__PURE__ */ e("img", { src: r, class: "night-order-icon" });
385
385
  }) })
386
386
  ] })
@@ -395,30 +395,30 @@ const b = /* @__PURE__ */ new Set([
395
395
  )
396
396
  ]
397
397
  }
398
- ), B = (n) => /* @__PURE__ */ e(g, { children: [
399
- /* @__PURE__ */ e(w, { ...n, children: [
398
+ ), O = (t) => /* @__PURE__ */ e(g, { children: [
399
+ /* @__PURE__ */ e(I, { ...t, children: [
400
400
  /* @__PURE__ */ e("div", { className: "night-sheet-heading", children: [
401
401
  /* @__PURE__ */ e("h3", { className: "night-title", children: "First Night" }),
402
- /* @__PURE__ */ e("h3", { className: "script-title", children: n.title })
402
+ /* @__PURE__ */ e("h3", { className: "script-title", children: t.title })
403
403
  ] }),
404
- /* @__PURE__ */ e("div", { className: "night-sheet-order", children: n.firstNightOrder.map((i) => /* @__PURE__ */ e(S, { entry: i, night: "first" })) })
404
+ /* @__PURE__ */ e("div", { className: "night-sheet-order", children: t.firstNightOrder.map((i) => /* @__PURE__ */ e(j, { entry: i, night: "first" })) })
405
405
  ] }),
406
- /* @__PURE__ */ e(w, { ...n, children: [
406
+ /* @__PURE__ */ e(I, { ...t, children: [
407
407
  /* @__PURE__ */ e("div", { className: "night-sheet-heading", children: [
408
408
  /* @__PURE__ */ e("h3", { className: "night-title", children: "Other Nights" }),
409
- /* @__PURE__ */ e("h3", { className: "script-title", children: n.title })
409
+ /* @__PURE__ */ e("h3", { className: "script-title", children: t.title })
410
410
  ] }),
411
- /* @__PURE__ */ e("div", { className: "night-sheet-order", children: n.otherNightOrder.map((i) => /* @__PURE__ */ e(S, { entry: i, night: "first" })) })
411
+ /* @__PURE__ */ e("div", { className: "night-sheet-order", children: t.otherNightOrder.map((i) => /* @__PURE__ */ e(j, { entry: i, night: "first" })) })
412
412
  ] })
413
- ] }), w = (n) => {
414
- const i = _(n.color, 0.4);
413
+ ] }), I = (t) => {
414
+ const i = k(t.color, 0.4);
415
415
  return /* @__PURE__ */ e(g, { children: /* @__PURE__ */ e(
416
416
  "div",
417
417
  {
418
418
  className: "night-sheet",
419
419
  style: {
420
- transform: n.includeMargins ? "scale(0.952)" : void 0,
421
- "--header-color-light": n.color,
420
+ transform: t.includeMargins ? "scale(0.952)" : void 0,
421
+ "--header-color-light": t.color,
422
422
  "--header-color-dark": i
423
423
  },
424
424
  children: [
@@ -429,7 +429,7 @@ const b = /* @__PURE__ */ new Set([
429
429
  src: "/images/parchment_texture_a4_lightened.jpg"
430
430
  }
431
431
  ),
432
- /* @__PURE__ */ e("div", { className: "sheet-content", children: n.children }),
432
+ /* @__PURE__ */ e("div", { className: "sheet-content", children: t.children }),
433
433
  /* @__PURE__ */ e("div", { className: "spacer" }),
434
434
  /* @__PURE__ */ e("div", { className: "info-author-credit", children: [
435
435
  /* @__PURE__ */ e("p", { children: "© Steven Medway bloodontheclocktower.com" }),
@@ -441,37 +441,37 @@ const b = /* @__PURE__ */ new Set([
441
441
  "div",
442
442
  {
443
443
  className: "info-footer-overlay",
444
- style: { backgroundColor: n.color }
444
+ style: { backgroundColor: t.color }
445
445
  }
446
446
  )
447
447
  ] })
448
448
  ]
449
449
  }
450
450
  ) });
451
- }, D = () => /* @__PURE__ */ e("img", { className: "reminder-icon", src: "/images/reminder.png" }), S = (n) => {
452
- const i = v(n.entry), { reminderText: s, name: t } = H(n.entry, n.night), a = typeof n.entry == "string" ? "#222" : f[n.entry.team];
453
- if (!s)
454
- return console.warn("No reminder text found for:", n.entry), /* @__PURE__ */ e(g, {});
455
- const l = (d) => d.split(":reminder:").map((o, r) => r % 2 === 0 ? o : /* @__PURE__ */ e(D, {}));
451
+ }, z = () => /* @__PURE__ */ e("img", { className: "reminder-icon", src: "/images/reminder.png" }), j = (t) => {
452
+ const i = b(t.entry), { reminderText: a, name: n } = R(t.entry, t.night), o = typeof t.entry == "string" ? "#222" : u[t.entry.team];
453
+ if (!a)
454
+ return console.warn("No reminder text found for:", t.entry), /* @__PURE__ */ e(g, {});
455
+ const h = (c) => c.split(":reminder:").map((l, r) => r % 2 === 0 ? l : /* @__PURE__ */ e(z, {}));
456
456
  return /* @__PURE__ */ e("div", { className: "night-sheet-entry", children: [
457
457
  /* @__PURE__ */ e("img", { src: i }),
458
458
  /* @__PURE__ */ e("div", { className: "night-sheet-entry-text", children: [
459
- /* @__PURE__ */ e("p", { className: "reminder-name", style: { color: a }, children: t }),
460
- /* @__PURE__ */ e("p", { className: "reminder-text", children: ((d) => {
461
- const o = d.split("*").map((r, h) => h % 2 === 0 ? r : /* @__PURE__ */ e("strong", { children: r })).map((r) => typeof r == "string" ? l(r) : r);
462
- return /* @__PURE__ */ e(g, { children: o });
463
- })(s) })
459
+ /* @__PURE__ */ e("p", { className: "reminder-name", style: { color: o }, children: n }),
460
+ /* @__PURE__ */ e("p", { className: "reminder-text", children: ((c) => {
461
+ const l = c.split("*").map((r, d) => d % 2 === 0 ? r : /* @__PURE__ */ e("strong", { children: r })).map((r) => typeof r == "string" ? h(r) : r);
462
+ return /* @__PURE__ */ e(g, { children: l });
463
+ })(a) })
464
464
  ] })
465
465
  ] });
466
- }, H = (n, i) => {
467
- if (typeof n == "object") {
468
- const s = i === "first" ? n.firstNightReminder : n.otherNightReminder, t = n.name;
469
- return console.log("night, entry, reminderText:", i, n, s), { reminderText: s, name: t };
466
+ }, R = (t, i) => {
467
+ if (typeof t == "object") {
468
+ const a = i === "first" ? t.firstNightReminder : t.otherNightReminder, n = t.name;
469
+ return console.log("night, entry, reminderText:", i, t, a), { reminderText: a, name: n };
470
470
  } else {
471
- const s = P[n], t = i === "first" ? s.first : s.other ?? "", a = s.name;
472
- return { reminderText: t, name: a };
471
+ const a = H[t], n = i === "first" ? a.first : a.other ?? "", o = a.name;
472
+ return { reminderText: n, name: o };
473
473
  }
474
- }, P = {
474
+ }, H = {
475
475
  dusk: {
476
476
  first: "Start the Night Phase.",
477
477
  name: "Dusk",
@@ -490,12 +490,1075 @@ const b = /* @__PURE__ */ new Set([
490
490
  first: "If there are 7 or more players, wake all Minions: Show the *THIS IS THE DEMON* token. Point to the Demon. Show the *THESE ARE YOUR MINIONS* token. Point to the other Minions.",
491
491
  name: "Minion Info"
492
492
  }
493
- };
493
+ }, G = [
494
+ {
495
+ characters: [
496
+ "alchemist",
497
+ "boffin"
498
+ ],
499
+ jinx: "If the Alchemist has the Boffin ability, the Alchemist does not learn what ability the Demon has."
500
+ },
501
+ {
502
+ characters: [
503
+ "alchemist",
504
+ "marionette"
505
+ ],
506
+ jinx: "An Alchemist-Marionette has no Marionette ability & the Marionette is in play."
507
+ },
508
+ {
509
+ characters: [
510
+ "alchemist",
511
+ "mastermind"
512
+ ],
513
+ jinx: "An Alchemist-Mastermind has no Mastermind ability & the Mastermind is not-in-play."
514
+ },
515
+ {
516
+ characters: [
517
+ "alchemist",
518
+ "organgrinder"
519
+ ],
520
+ jinx: "If the Alchemist has the Organ Grinder ability, the Organ Grinder is in play. If both are sober, both are drunk.",
521
+ oldJinx: "If the Alchemist has the Organ Grinder ability, the Organ Grinder is in play & if both the Alchemist and Organ Grinder are sober, both are drunk."
522
+ },
523
+ {
524
+ characters: [
525
+ "alchemist",
526
+ "spy"
527
+ ],
528
+ jinx: "An Alchemist-Spy has no Spy ability & a Spy is in play. After each execution, a living Alchemist-Spy may publicly guess a living player as the Spy. If correct, the Demon must choose the Spy tonight.",
529
+ oldJinx: "If the Alchemist has the Spy ability, they do not, and a Spy is in play. Each day, after the execution phase, the living Alchemist may publicly guess a living player as the Spy. If correct, the Demon must choose the Spy tonight."
530
+ },
531
+ {
532
+ characters: [
533
+ "alchemist",
534
+ "summoner"
535
+ ],
536
+ jinx: "The Alchemist-Summoner does not get bluffs, and chooses which Demon but not which player. If they die before this happens, evil wins. [No Demon]"
537
+ },
538
+ {
539
+ characters: [
540
+ "alchemist",
541
+ "widow"
542
+ ],
543
+ jinx: "An Alchemist-Widow has no Widow ability & a Widow is in play. After each execution, a living Alchemist-Widow may publicly guess a living player as the Widow. If correct, the Demon must choose the Widow tonight.",
544
+ oldJinx: "If the Alchemist has the Widow ability, they do not, and a Widow is in play. Each day, after the execution phase, the living Alchemist may publicly guess a living player as the Widow. If correct, the Demon must choose the Widow tonight."
545
+ },
546
+ {
547
+ characters: [
548
+ "alchemist",
549
+ "wraith"
550
+ ],
551
+ jinx: "An Alchemist-Wraith has no Wraith ability & a Wraith is in play. After each execution, a living Alchemist-Wraith may publicly guess a living player as the Wraith. If correct, the Demon must choose the Wraith tonight.",
552
+ oldJinx: "If the Alchemist has the Wraith ability, they do not, and a Wraith is in play. Each day, after the execution phase, the living Alchemist may publicly guess a living player as the Wraith: if correct, the Demon must choose the Wraith tonight."
553
+ },
554
+ {
555
+ characters: [
556
+ "alhadikhia",
557
+ "princess"
558
+ ],
559
+ jinx: "If the Princess nominated & executed a player on their 1st day, no one dies to the Al-Hadikhia tonight.",
560
+ oldJinx: "If the Princess nominated & executed a player on their 1st day, no one dies to the Al-Hadikhia ability tonight."
561
+ },
562
+ {
563
+ characters: [
564
+ "boffin",
565
+ "cultleader"
566
+ ],
567
+ jinx: "If the Demon has the Cult Leader ability, they can’t turn good due to this ability."
568
+ },
569
+ {
570
+ characters: [
571
+ "boffin",
572
+ "drunk"
573
+ ],
574
+ jinx: "The Demon cannot have the Drunk ability.",
575
+ oldJinx: "If the Demon would have the Drunk ability, the Boffin chooses a Townsfolk player to have this ability instead."
576
+ },
577
+ {
578
+ characters: [
579
+ "boffin",
580
+ "goon"
581
+ ],
582
+ jinx: "If the Demon has the Goon ability, they can’t turn good due to this ability."
583
+ },
584
+ {
585
+ characters: [
586
+ "boffin",
587
+ "ogre"
588
+ ],
589
+ jinx: "The Demon cannot have the Ogre ability."
590
+ },
591
+ {
592
+ characters: [
593
+ "boffin",
594
+ "politician"
595
+ ],
596
+ jinx: "The Demon cannot have the Politician ability."
597
+ },
598
+ {
599
+ characters: [
600
+ "boffin",
601
+ "villageidiot"
602
+ ],
603
+ jinx: "If there is a spare token, the Boffin can give the Demon the Village Idiot ability."
604
+ },
605
+ {
606
+ characters: [
607
+ "bountyhunter",
608
+ "kazali"
609
+ ],
610
+ jinx: "If the Kazali turns the Bounty Hunter into a Minion, an evil Townsfolk is not created.",
611
+ oldJinx: "An evil Townsfolk is only created if the Bounty Hunter is still in play after the Kazali acts."
612
+ },
613
+ {
614
+ characters: [
615
+ "bountyhunter",
616
+ "philosopher"
617
+ ],
618
+ jinx: "If the Philosopher gains the Bounty Hunter ability, a Townsfolk might turn evil."
619
+ },
620
+ {
621
+ characters: [
622
+ "butler",
623
+ "organgrinder"
624
+ ],
625
+ jinx: "If the Organ Grinder is causing eyes closed voting, the Butler may raise their hand to vote but their vote is only counted if their master voted too."
626
+ },
627
+ {
628
+ characters: [
629
+ "cannibal",
630
+ "butler"
631
+ ],
632
+ jinx: "If the Cannibal gains the Butler ability, the Cannibal learns this."
633
+ },
634
+ {
635
+ characters: [
636
+ "cannibal",
637
+ "juggler"
638
+ ],
639
+ jinx: "If the Juggler guesses on their first day and dies by execution, tonight the living Cannibal learns how many guesses the Juggler got correct."
640
+ },
641
+ {
642
+ characters: [
643
+ "cannibal",
644
+ "princess"
645
+ ],
646
+ jinx: "If the Cannibal nominated, executed, & killed the Princess today, the Demon doesn’t kill tonight."
647
+ },
648
+ {
649
+ characters: [
650
+ "cannibal",
651
+ "zealot"
652
+ ],
653
+ jinx: "If the Cannibal gains the Zealot ability, the Cannibal learns this."
654
+ },
655
+ {
656
+ characters: [
657
+ "cerenovus",
658
+ "goblin"
659
+ ],
660
+ jinx: "The Cerenovus may choose to make a player mad that they are the Goblin."
661
+ },
662
+ {
663
+ characters: [
664
+ "heretic",
665
+ "baron"
666
+ ],
667
+ jinx: "Only 1 jinxed character can be in play.",
668
+ oldJinx: "The Baron might only add 1 Outsider, not 2."
669
+ },
670
+ {
671
+ characters: [
672
+ "heretic",
673
+ "godfather"
674
+ ],
675
+ jinx: "Only 1 jinxed character can be in play."
676
+ },
677
+ {
678
+ characters: [
679
+ "heretic",
680
+ "lleech"
681
+ ],
682
+ jinx: "Only 1 jinxed character can be in play.",
683
+ oldJinx: "If the Lleech has poisoned the Heretic then the Lleech dies, the Heretic remains poisoned."
684
+ },
685
+ {
686
+ characters: [
687
+ "heretic",
688
+ "pithag"
689
+ ],
690
+ jinx: "Only 1 jinxed character can be in play.",
691
+ oldJinx: "A Pit-Hag can not create a Heretic."
692
+ },
693
+ {
694
+ characters: [
695
+ "heretic",
696
+ "spy"
697
+ ],
698
+ jinx: "Only 1 jinxed character can be in play."
699
+ },
700
+ {
701
+ characters: [
702
+ "heretic",
703
+ "widow"
704
+ ],
705
+ jinx: "Only 1 jinxed character can be in play."
706
+ },
707
+ {
708
+ characters: [
709
+ "legion",
710
+ "engineer"
711
+ ],
712
+ jinx: "If Legion is created, all evil players become Legion. If Legion is in play, the Engineer starts knowing this but has no ability.",
713
+ oldJinx: "Legion and the Engineer can not both be in play at the start of the game. If the Engineer creates Legion, most players (including all evil players) become evil Legion."
714
+ },
715
+ {
716
+ characters: [
717
+ "legion",
718
+ "hatter"
719
+ ],
720
+ jinx: "If Legion is created, all evil players become Legion. If Legion is in play, the Hatter has no ability.",
721
+ oldJinx: "If the Hatter dies and Legion is in play, nothing happens. If the Hatter dies and an evil player chooses Legion, all current evil players become Legion."
722
+ },
723
+ {
724
+ characters: [
725
+ "legion",
726
+ "minstrel"
727
+ ],
728
+ jinx: "If Legion died by execution today, Legion keeps their ability, but the Minstrel might learn they are Legion."
729
+ },
730
+ {
731
+ characters: [
732
+ "legion",
733
+ "politician"
734
+ ],
735
+ jinx: "The Politician might register as evil to Legion."
736
+ },
737
+ {
738
+ characters: [
739
+ "legion",
740
+ "preacher"
741
+ ],
742
+ jinx: "If the Preacher chooses Legion, Legion keeps their ability, but the Preacher might learn they are Legion."
743
+ },
744
+ {
745
+ characters: [
746
+ "legion",
747
+ "summoner"
748
+ ],
749
+ jinx: "If Legion is summoned, all evil players become Legion.",
750
+ oldJinx: "If the Summoner creates Legion, most players (including all evil players) become evil Legion."
751
+ },
752
+ {
753
+ characters: [
754
+ "legion",
755
+ "zealot"
756
+ ],
757
+ jinx: "The Zealot might register as evil to Legion.",
758
+ oldJinx: "The Zealot might register as evil to Legion's ability."
759
+ },
760
+ {
761
+ characters: [
762
+ "leviathan",
763
+ "banshee"
764
+ ],
765
+ jinx: "Each night*, the Leviathan chooses an alive good player (different to previous nights): a chosen Banshee dies & gains their ability."
766
+ },
767
+ {
768
+ characters: [
769
+ "leviathan",
770
+ "exorcist"
771
+ ],
772
+ jinx: "If the Leviathan nominates and executes the Exorcist-chosen player, good wins.",
773
+ oldJinx: "Evil does not win when more than 1 good player has been executed, if the Exorcist is alive and has ever successfully chosen the Leviathan."
774
+ },
775
+ {
776
+ characters: [
777
+ "leviathan",
778
+ "farmer"
779
+ ],
780
+ jinx: "Each night*, the Leviathan chooses an alive good player (different to previous nights): a chosen Farmer uses their ability but does not die."
781
+ },
782
+ {
783
+ characters: [
784
+ "leviathan",
785
+ "grandmother"
786
+ ],
787
+ jinx: "If the Leviathan is in play and the Grandchild dies by execution, evil wins.",
788
+ oldJinx: "If Leviathan is in play and the Grandchild dies by execution, evil wins."
789
+ },
790
+ {
791
+ characters: [
792
+ "leviathan",
793
+ "hatter"
794
+ ],
795
+ jinx: "The Leviathan cannot enter play after day 5.",
796
+ oldJinx: "If the Hatter dies on or after day 5, the Demon cannot choose Leviathan."
797
+ },
798
+ {
799
+ characters: [
800
+ "leviathan",
801
+ "innkeeper"
802
+ ],
803
+ jinx: "If the Leviathan nominates and executes an Innkeeper-protected player, good wins.",
804
+ oldJinx: "If the Leviathan is in play, the Innkeeper-protected-players are safe from all evil abilities."
805
+ },
806
+ {
807
+ characters: [
808
+ "leviathan",
809
+ "king"
810
+ ],
811
+ jinx: "If the Leviathan is in play, and at least 1 player is dead, the King learns an alive character each night."
812
+ },
813
+ {
814
+ characters: [
815
+ "leviathan",
816
+ "mayor"
817
+ ],
818
+ jinx: "If the Leviathan and the Mayor are alive on day 5 & no execution occurs, good wins.",
819
+ oldJinx: "If the Leviathan is in play & no execution occurs on day 5, good wins."
820
+ },
821
+ {
822
+ characters: [
823
+ "leviathan",
824
+ "monk"
825
+ ],
826
+ jinx: "If the Leviathan nominates and executes the Monk-protected player, good wins.",
827
+ oldJinx: "If the Leviathan is in play, the Monk-protected-player is safe from all evil abilities."
828
+ },
829
+ {
830
+ characters: [
831
+ "leviathan",
832
+ "pithag"
833
+ ],
834
+ jinx: "The Leviathan cannot enter play after day 5.",
835
+ oldJinx: "After day 5, the Pit-Hag cannot choose Leviathan."
836
+ },
837
+ {
838
+ characters: [
839
+ "leviathan",
840
+ "ravenkeeper"
841
+ ],
842
+ jinx: "Each night*, the Leviathan chooses an alive player (different to previous nights): a chosen Ravenkeeper uses their ability but does not die."
843
+ },
844
+ {
845
+ characters: [
846
+ "leviathan",
847
+ "sage"
848
+ ],
849
+ jinx: "Each night*, the Leviathan chooses an alive good player (different to previous nights): a chosen Sage uses their ability but does not die."
850
+ },
851
+ {
852
+ characters: [
853
+ "leviathan",
854
+ "soldier"
855
+ ],
856
+ jinx: "If the Leviathan nominates and executes the Soldier, good wins.",
857
+ oldJinx: "If the Leviathan is in play, the Soldier is safe from all evil abilities."
858
+ },
859
+ {
860
+ characters: [
861
+ "lilmonsta",
862
+ "hatter"
863
+ ],
864
+ jinx: "If the Hatter dies & the Demon chooses Lil' Monsta, they also choose a Minion to become.",
865
+ oldJinx: "If a Demon chooses Lil' Monsta, they also choose a Minion to become and babysit Lil' Monsta tonight."
866
+ },
867
+ {
868
+ characters: [
869
+ "lilmonsta",
870
+ "magician"
871
+ ],
872
+ jinx: "If the Magician is alive, the Storyteller chooses which Minion babysits Lil' Monsta.",
873
+ oldJinx: "Each night, the Magician chooses a Minion: if that Minion & Lil' Monsta are alive, that Minion babysits Lil’ Monsta."
874
+ },
875
+ {
876
+ characters: [
877
+ "lilmonsta",
878
+ "poppygrower"
879
+ ],
880
+ jinx: "If Lil' Monsta & the Poppy Grower are alive, Minions wake one by one, until one of them chooses to take the Lil' Monsta token.",
881
+ oldJinx: "If the Poppy Grower is in play, Minions don't wake together. They are woken one by one, until one of them chooses to take the Lil' Monsta token."
882
+ },
883
+ {
884
+ characters: [
885
+ "lilmonsta",
886
+ "psychopath"
887
+ ],
888
+ jinx: "If the Psychopath is babysitting Lil' Monsta, they die when executed."
889
+ },
890
+ {
891
+ characters: [
892
+ "lilmonsta",
893
+ "scarletwoman"
894
+ ],
895
+ jinx: "If Lil' Monsta dies with 5 or more players alive, the Scarlet Woman babysits Lil' Monsta for the rest of the game.",
896
+ oldJinx: "If there are 5 or more players alive and the player holding the Lil' Monsta token dies, the Scarlet Woman is given the Lil' Monsta token tonight."
897
+ },
898
+ {
899
+ characters: [
900
+ "lilmonsta",
901
+ "vizier"
902
+ ],
903
+ jinx: "If the Vizier is babysitting Lil' Monsta, they die when executed.",
904
+ oldJinx: "The Vizier can die by execution if they are babysitting Lil' Monsta."
905
+ },
906
+ {
907
+ characters: [
908
+ "lleech",
909
+ "mastermind"
910
+ ],
911
+ jinx: "If the Mastermind is alive and the Lleech host dies by execution, the Lleech lives but loses their ability.",
912
+ oldJinx: "If the Mastermind is alive and the Lleech's host dies by execution, the Lleech lives but loses their ability."
913
+ },
914
+ {
915
+ characters: [
916
+ "lleech",
917
+ "slayer"
918
+ ],
919
+ jinx: "If the Slayer slays the Lleech host, the host dies.",
920
+ oldJinx: "If the Slayer slays the Lleech's host, the host dies."
921
+ },
922
+ {
923
+ characters: [
924
+ "magician",
925
+ "legion"
926
+ ],
927
+ jinx: "The Magician wakes with Legion and might register as evil. Legion knows if a Magician is in play, but not which player it is."
928
+ },
929
+ {
930
+ characters: [
931
+ "magician",
932
+ "marionette"
933
+ ],
934
+ jinx: "If the Magician is alive, the Demon doesn't know which neighbor is the Marionette."
935
+ },
936
+ {
937
+ characters: [
938
+ "magician",
939
+ "spy"
940
+ ],
941
+ jinx: "When the Spy sees the Grimoire, the Demon and Magician's character tokens are removed."
942
+ },
943
+ {
944
+ characters: [
945
+ "magician",
946
+ "vizier"
947
+ ],
948
+ jinx: "If the Vizier is in play, the Magician has no ability but is immune to the Vizier's ability.",
949
+ oldJinx: "If the Vizier and Magician are both in play, the Demon does not learn the Minions."
950
+ },
951
+ {
952
+ characters: [
953
+ "magician",
954
+ "widow"
955
+ ],
956
+ jinx: "When the Widow sees the Grimoire, the Demon and Magician's character tokens are removed."
957
+ },
958
+ {
959
+ characters: [
960
+ "magician",
961
+ "wraith"
962
+ ],
963
+ jinx: "After each execution, the living Magician may publicly guess a living player as the Wraith. If correct, the Demon must choose the Wraith tonight.",
964
+ oldJinx: "Each day, after the execution phase, the living Magician may publicly guess a living player as the Wraith: if correct, the Demon must choose the Wraith tonight."
965
+ },
966
+ {
967
+ characters: [
968
+ "marionette",
969
+ "balloonist"
970
+ ],
971
+ jinx: "If the Marionette thinks that they are the Balloonist, an Outsider might have been added during setup.",
972
+ oldJinx: "If the Marionette thinks that they are the Balloonist, +1 Outsider might have been added."
973
+ },
974
+ {
975
+ characters: [
976
+ "marionette",
977
+ "huntsman"
978
+ ],
979
+ jinx: "If the Marionette thinks that they are the Huntsman, the Damsel was added during setup.",
980
+ oldJinx: "If the Marionette thinks that they are the Huntsman, the Damsel was added."
981
+ },
982
+ {
983
+ characters: [
984
+ "marionette",
985
+ "kazali"
986
+ ],
987
+ jinx: "If there would be a Marionette in play, they enter play after the Demon & must start as their neighbor.",
988
+ oldJinx: "If the Kazali chooses to create a Marionette, they must choose one of their neighbors."
989
+ },
990
+ {
991
+ characters: [
992
+ "marionette",
993
+ "lilmonsta"
994
+ ],
995
+ jinx: "If there would be a Marionette in play, they enter play after the Demon & must start as their neighbor.",
996
+ oldJinx: "The Marionette neighbors a Minion, not the Demon. The Marionette is not woken to choose who takes the Lil' Monsta token, and does not learn they are the Marionette if they have the Lil' Monsta token."
997
+ },
998
+ {
999
+ characters: [
1000
+ "marionette",
1001
+ "summoner"
1002
+ ],
1003
+ jinx: "If there would be a Marionette in play, they enter play after the Demon & must start as their neighbor.",
1004
+ oldJinx: "The Marionette neighbors the Summoner. The Summoner knows who the Marionette is."
1005
+ },
1006
+ {
1007
+ characters: [
1008
+ "mastermind",
1009
+ "vigormortis"
1010
+ ],
1011
+ jinx: "A Mastermind that has their ability keeps it if the Vigormortis dies."
1012
+ },
1013
+ {
1014
+ characters: [
1015
+ "mathematician",
1016
+ "chambermaid"
1017
+ ],
1018
+ jinx: "The Chambermaid can detect if the Mathematician will wake tonight.",
1019
+ oldJinx: "The Chambermaid learns if the Mathematician wakes tonight or not, even though the Chambermaid wakes first."
1020
+ },
1021
+ {
1022
+ characters: [
1023
+ "mathematician",
1024
+ "drunk"
1025
+ ],
1026
+ jinx: "The Mathematician might learn if the Drunk's ability yielded false info or failed to work properly."
1027
+ },
1028
+ {
1029
+ characters: [
1030
+ "mathematician",
1031
+ "lunatic"
1032
+ ],
1033
+ jinx: "The Mathematician might learn if the Lunatic attacks a different player than the real Demon attacked.",
1034
+ oldJinx: "The Mathematician learns if the Lunatic attacks a different player(s) than the real Demon attacked."
1035
+ },
1036
+ {
1037
+ characters: [
1038
+ "mathematician",
1039
+ "marionette"
1040
+ ],
1041
+ jinx: "The Mathematician might learn if the Marionette's ability yielded false info or failed to work properly."
1042
+ },
1043
+ {
1044
+ characters: [
1045
+ "pithag",
1046
+ "cultleader"
1047
+ ],
1048
+ jinx: "If the Pit-Hag turns an evil player into the Cult Leader, they can't turn good due to their own ability."
1049
+ },
1050
+ {
1051
+ characters: [
1052
+ "pithag",
1053
+ "damsel"
1054
+ ],
1055
+ jinx: "If a Pit-Hag creates a Damsel, the Storyteller chooses which player it is."
1056
+ },
1057
+ {
1058
+ characters: [
1059
+ "pithag",
1060
+ "goon"
1061
+ ],
1062
+ jinx: "If the Pit-Hag turns an evil player into the Goon, they can't turn good due to their own ability."
1063
+ },
1064
+ {
1065
+ characters: [
1066
+ "pithag",
1067
+ "ogre"
1068
+ ],
1069
+ jinx: "If the Pit-Hag turns an evil player into the Ogre, they can't turn good due to their own ability."
1070
+ },
1071
+ {
1072
+ characters: [
1073
+ "pithag",
1074
+ "politician"
1075
+ ],
1076
+ jinx: "If the Pit-Hag turns an evil player into the Politician, they can't turn good due to their own ability."
1077
+ },
1078
+ {
1079
+ characters: [
1080
+ "pithag",
1081
+ "villageidiot"
1082
+ ],
1083
+ jinx: "If there is a spare token, the Pit-Hag can create an extra Village Idiot. If so, the drunk Village Idiot might change."
1084
+ },
1085
+ {
1086
+ characters: [
1087
+ "plaguedoctor",
1088
+ "baron"
1089
+ ],
1090
+ jinx: "If the Storyteller would gain the Baron ability, up to two players become Outsiders.",
1091
+ oldJinx: "If the Storyteller gains the Baron ability, up to two players become not-in-play Outsiders."
1092
+ },
1093
+ {
1094
+ characters: [
1095
+ "plaguedoctor",
1096
+ "boomdandy"
1097
+ ],
1098
+ jinx: "If the Storyteller would gain the Boomdandy ability, a player becomes the Boomdandy.",
1099
+ oldJinx: "If the Plague Doctor is executed and the Storyteller would gain the Boomdandy ability, the Boomdandy ability triggers immediately."
1100
+ },
1101
+ {
1102
+ characters: [
1103
+ "plaguedoctor",
1104
+ "eviltwin"
1105
+ ],
1106
+ jinx: "If the Storyteller would gain the Evil Twin ability, a player becomes the Evil Twin.",
1107
+ oldJinx: "The Storyteller cannot gain the Evil Twin ability if the Plague Doctor dies."
1108
+ },
1109
+ {
1110
+ characters: [
1111
+ "plaguedoctor",
1112
+ "fearmonger"
1113
+ ],
1114
+ jinx: "If the Storyteller would gain the Fearmonger ability, a Minion gains it, and learns this.",
1115
+ oldJinx: "If the Plague Doctor dies, a living Minion gains the Fearmonger ability in addition to their own ability, and learns this."
1116
+ },
1117
+ {
1118
+ characters: [
1119
+ "plaguedoctor",
1120
+ "goblin"
1121
+ ],
1122
+ jinx: "If the Storyteller would gain the Goblin ability, a Minion gains it, and learns this.",
1123
+ oldJinx: "If the Plague Doctor dies, a living Minion gains the Goblin ability in addition to their own ability, and learns this."
1124
+ },
1125
+ {
1126
+ characters: [
1127
+ "plaguedoctor",
1128
+ "marionette"
1129
+ ],
1130
+ jinx: "If the Storyteller would gain the Marionette ability, one of the Demon's good neighbors becomes the Marionette.",
1131
+ oldJinx: "If the Demon has a neighbor who is alive and a Townsfolk or Outsider when the Plague Doctor dies, that player becomes an evil Marionette. If there is already an extra evil player, this does not happen."
1132
+ },
1133
+ {
1134
+ characters: [
1135
+ "plaguedoctor",
1136
+ "scarletwoman"
1137
+ ],
1138
+ jinx: "If the Storyteller would gain the Scarlet Woman ability, a Minion gains it, and learns this.",
1139
+ oldJinx: "If the Plague Doctor dies, a living Minion gains the Scarlet Woman ability in addition to their own ability, and learns this."
1140
+ },
1141
+ {
1142
+ characters: [
1143
+ "plaguedoctor",
1144
+ "spy"
1145
+ ],
1146
+ jinx: "If the Storyteller would gain the Spy ability, a Minion gains it, and learns this.",
1147
+ oldJinx: "If the Plague Doctor dies, a living Minion gains the Spy ability in addition to their own ability, and learns this."
1148
+ },
1149
+ {
1150
+ characters: [
1151
+ "plaguedoctor",
1152
+ "wraith"
1153
+ ],
1154
+ jinx: "If the Storyteller would gain the Wraith ability, a Minion gains it, and learns this.",
1155
+ oldJinx: "If the Plague Doctor dies, a living Minion gains the Wraith ability in addition to their own ability, and learns this."
1156
+ },
1157
+ {
1158
+ characters: [
1159
+ "recluse",
1160
+ "sage"
1161
+ ],
1162
+ jinx: "The Recluse might register as the Demon to the Sage."
1163
+ },
1164
+ {
1165
+ characters: [
1166
+ "riot",
1167
+ "atheist"
1168
+ ],
1169
+ jinx: "During a riot, if the Storyteller is nominated, players vote. If they are about to die, the game ends. If not, they nominate again."
1170
+ },
1171
+ {
1172
+ characters: [
1173
+ "riot",
1174
+ "banshee"
1175
+ ],
1176
+ jinx: "Each night*, Riot chooses an alive good player (different to previous nights): a chosen Banshee dies & gains their ability."
1177
+ },
1178
+ {
1179
+ characters: [
1180
+ "riot",
1181
+ "exorcist"
1182
+ ],
1183
+ jinx: "If Riot nominates and executes the Exorcist-chosen player, good wins.",
1184
+ oldJinx: "If the Exorcist chooses Riot on the 3rd night, Minions do not become Riot."
1185
+ },
1186
+ {
1187
+ characters: [
1188
+ "riot",
1189
+ "farmer"
1190
+ ],
1191
+ jinx: "Each night*, Riot chooses an alive good player (different to previous nights): a chosen Farmer uses their ability but does not die."
1192
+ },
1193
+ {
1194
+ characters: [
1195
+ "riot",
1196
+ "grandmother"
1197
+ ],
1198
+ jinx: "If Riot is in play and the Grandchild dies by execution, evil wins.",
1199
+ oldJinx: "If Riot is in play and the Grandchild dies during the day, the Grandmother dies too."
1200
+ },
1201
+ {
1202
+ characters: [
1203
+ "riot",
1204
+ "innkeeper"
1205
+ ],
1206
+ jinx: "If Riot nominates and executes an Innkeeper-protected player, good wins.",
1207
+ oldJinx: "If Riot is in play, the Innkeeper-protected player is safe from all evil abilities."
1208
+ },
1209
+ {
1210
+ characters: [
1211
+ "riot",
1212
+ "king"
1213
+ ],
1214
+ jinx: "If Riot is in play, and at least 1 player is dead, the King learns an alive character each night."
1215
+ },
1216
+ {
1217
+ characters: [
1218
+ "riot",
1219
+ "mayor"
1220
+ ],
1221
+ jinx: "The Mayor may choose to stop the riot. If they do so when only 1 Riot is alive, good wins. Otherwise, evil wins.",
1222
+ oldJinx: "The Mayor may choose to stop nominations. If they do so when only 1 Riot is alive, good wins. Otherwise, evil wins."
1223
+ },
1224
+ {
1225
+ characters: [
1226
+ "riot",
1227
+ "monk"
1228
+ ],
1229
+ jinx: "If Riot nominates and executes the Monk-protected player, good wins.",
1230
+ oldJinx: "If Riot is in play, the Monk-protected player is safe from all evil abilities."
1231
+ },
1232
+ {
1233
+ characters: [
1234
+ "riot",
1235
+ "ravenkeeper"
1236
+ ],
1237
+ jinx: "Each night*, Riot chooses an alive good player (different to previous nights): a chosen Ravenkeeper uses their ability but does not die."
1238
+ },
1239
+ {
1240
+ characters: [
1241
+ "riot",
1242
+ "sage"
1243
+ ],
1244
+ jinx: "Each night*, Riot chooses an alive good player (different to previous nights): a chosen Sage uses their ability but does not die."
1245
+ },
1246
+ {
1247
+ characters: [
1248
+ "riot",
1249
+ "soldier"
1250
+ ],
1251
+ jinx: "If Riot nominates and executes the Soldier, good wins.",
1252
+ oldJinx: "If Riot is in play, the Soldier is safe from all evil abilities."
1253
+ },
1254
+ {
1255
+ characters: [
1256
+ "scarletwoman",
1257
+ "alhadikhia"
1258
+ ],
1259
+ jinx: "If there would be two Demons, one of which was the Scarlet Woman, the Scarlet Woman becomes the Scarlet Woman again.",
1260
+ oldJinx: "If there are two living Al-Hadikhias, the Scarlet Woman Al-Hadikhia becomes the Scarlet Woman again."
1261
+ },
1262
+ {
1263
+ characters: [
1264
+ "scarletwoman",
1265
+ "fanggu"
1266
+ ],
1267
+ jinx: "If there would be two Demons, one of which was the Scarlet Woman, the Scarlet Woman remains the Scarlet Woman.",
1268
+ oldJinx: "If the Fang Gu chooses an Outsider and dies, the Scarlet Woman does not become the Fang Gu."
1269
+ },
1270
+ {
1271
+ characters: [
1272
+ "spy",
1273
+ "damsel"
1274
+ ],
1275
+ jinx: "If the Spy is (or has been) in play, the Damsel is poisoned."
1276
+ },
1277
+ {
1278
+ characters: [
1279
+ "spy",
1280
+ "ogre"
1281
+ ],
1282
+ jinx: "The Spy registers as evil to the Ogre."
1283
+ },
1284
+ {
1285
+ characters: [
1286
+ "spy",
1287
+ "poppygrower"
1288
+ ],
1289
+ jinx: "If the Poppy Grower has their ability, the Spy does not see the Grimoire.",
1290
+ oldJinx: "If the Poppy Grower is in play, the Spy does not see the Grimoire until the Poppy Grower dies."
1291
+ },
1292
+ {
1293
+ characters: [
1294
+ "summoner",
1295
+ "clockmaker"
1296
+ ],
1297
+ jinx: "The Summoner registers as the Demon to the Clockmaker.",
1298
+ oldJinx: "If the Summoner is in play, the Clockmaker does not receive their information until a Demon is created."
1299
+ },
1300
+ {
1301
+ characters: [
1302
+ "summoner",
1303
+ "courtier"
1304
+ ],
1305
+ jinx: "If the living Summoner has no ability, the Storyteller has the Summoner ability.",
1306
+ oldJinx: "If the Summoner is drunk on the 3rd night, the Summoner chooses which Demon, but the Storyteller chooses which player."
1307
+ },
1308
+ {
1309
+ characters: [
1310
+ "summoner",
1311
+ "engineer"
1312
+ ],
1313
+ jinx: "If the living Summoner is removed from play, the Storyteller has the Summoner ability.",
1314
+ oldJinx: "If the Engineer removes a Summoner from play before that Summoner uses their ability, the Summoner uses their ability immediately."
1315
+ },
1316
+ {
1317
+ characters: [
1318
+ "summoner",
1319
+ "hatter"
1320
+ ],
1321
+ jinx: "If the Summoner creates a second living Demon, deaths tonight are arbitrary.",
1322
+ oldJinx: "The Summoner cannot create an in-play Demon. If the Summoner creates a not-in-play Demon, deaths tonight are arbitrary."
1323
+ },
1324
+ {
1325
+ characters: [
1326
+ "summoner",
1327
+ "kazali"
1328
+ ],
1329
+ jinx: "If the Summoner creates a second living Demon, deaths tonight are arbitrary.",
1330
+ oldJinx: "The Summoner cannot create an in-play Demon. If the Summoner creates a not-in-play Demon, deaths tonight are arbitrary."
1331
+ },
1332
+ {
1333
+ characters: [
1334
+ "summoner",
1335
+ "lordoftyphon"
1336
+ ],
1337
+ jinx: "If a Lord of Typhon is summoned, they must neighbor a Minion & their other neighbor becomes an evil Minion.",
1338
+ oldJinx: "If the Summoner creates a Lord of Typhon, the Lord of Typhon must neighbor a Minion. The other neighbor becomes a not-in-play evil Minion."
1339
+ },
1340
+ {
1341
+ characters: [
1342
+ "summoner",
1343
+ "pithag"
1344
+ ],
1345
+ jinx: "If the Summoner creates a second living Demon, deaths tonight are arbitrary.",
1346
+ oldJinx: "The Summoner cannot create an in-play Demon. If the Summoner creates a not-in-play Demon, deaths tonight are arbitrary."
1347
+ },
1348
+ {
1349
+ characters: [
1350
+ "summoner",
1351
+ "poppygrower"
1352
+ ],
1353
+ jinx: "If the Poppy Grower is alive on the 3rd night, the Summoner chooses which Demon but not which player.",
1354
+ oldJinx: "If the Poppy Grower is alive when the Summoner acts, the Summoner chooses which Demon, but the Storyteller chooses which player."
1355
+ },
1356
+ {
1357
+ characters: [
1358
+ "summoner",
1359
+ "preacher"
1360
+ ],
1361
+ jinx: "If the living Summoner has no ability, the Storyteller has the Summoner ability.",
1362
+ oldJinx: "If the Preacher chose the Summoner on or before the 3rd night, the Summoner chooses which Demon, but the Storyteller chooses which player."
1363
+ },
1364
+ {
1365
+ characters: [
1366
+ "summoner",
1367
+ "pukka"
1368
+ ],
1369
+ jinx: "The Summoner may summon a Pukka on the 2nd night instead of the 3rd.",
1370
+ oldJinx: "The Summoner may choose a player to become the Pukka on the 2nd night."
1371
+ },
1372
+ {
1373
+ characters: [
1374
+ "summoner",
1375
+ "zombuul"
1376
+ ],
1377
+ jinx: "If the Summoner summons a dead player into the Zombuul, the Zombuul has already died once.",
1378
+ oldJinx: "If the Summoner turns a dead player into the Zombuul, the Storyteller treats that player as a Zombuul that has died once."
1379
+ },
1380
+ {
1381
+ characters: [
1382
+ "vizier",
1383
+ "alsaahir"
1384
+ ],
1385
+ jinx: "The Storyteller doesn't declare the Vizier is in play.",
1386
+ oldJinx: "If the Vizier is in play, the Alsaahir must also guess which Demon(s) are in play."
1387
+ },
1388
+ {
1389
+ characters: [
1390
+ "vizier",
1391
+ "courtier"
1392
+ ],
1393
+ jinx: "If the Vizier loses their ability, they learn this, and cannot die during the day.",
1394
+ oldJinx: "If the Vizier loses their ability, they learn this. If the Vizier is executed while they have their ability, their team wins."
1395
+ },
1396
+ {
1397
+ characters: [
1398
+ "vizier",
1399
+ "fearmonger"
1400
+ ],
1401
+ jinx: "The Vizier wakes with the Fearmonger, learns who they choose and cannot choose to immediately execute that player."
1402
+ },
1403
+ {
1404
+ characters: [
1405
+ "vizier",
1406
+ "investigator"
1407
+ ],
1408
+ jinx: "The Storyteller doesn't declare the Vizier is in play.",
1409
+ oldJinx: "If the Investigator learns that the Vizier is in play, the existence of the Vizier is not announced by the Storyteller."
1410
+ },
1411
+ {
1412
+ characters: [
1413
+ "vizier",
1414
+ "politician"
1415
+ ],
1416
+ jinx: "The Politician might register as evil to the Vizier."
1417
+ },
1418
+ {
1419
+ characters: [
1420
+ "vizier",
1421
+ "preacher"
1422
+ ],
1423
+ jinx: "If the Vizier loses their ability, they learn this, and cannot die during the day.",
1424
+ oldJinx: "If the Vizier loses their ability, they learn this. If the Vizier is executed while they have their ability, their team wins."
1425
+ },
1426
+ {
1427
+ characters: [
1428
+ "vizier",
1429
+ "zealot"
1430
+ ],
1431
+ jinx: "The Zealot might register as evil to the Vizier."
1432
+ },
1433
+ {
1434
+ characters: [
1435
+ "vortox",
1436
+ "banshee"
1437
+ ],
1438
+ jinx: "If the Vortox kills the Banshee, all players learn that the Banshee has died.",
1439
+ oldJinx: "If the Vortox is in play and the Demon kills the Banshee, the players still learn that the Banshee has died."
1440
+ },
1441
+ {
1442
+ characters: [
1443
+ "widow",
1444
+ "damsel"
1445
+ ],
1446
+ jinx: "If the Widow is (or has been) in play, the Damsel is poisoned."
1447
+ },
1448
+ {
1449
+ characters: [
1450
+ "widow",
1451
+ "poppygrower"
1452
+ ],
1453
+ jinx: "If the Poppy Grower has their ability, the Widow does not see the Grimoire.",
1454
+ oldJinx: "If the Poppy Grower is in play, the Widow does not see the Grimoire until the Poppy Grower dies."
1455
+ },
1456
+ {
1457
+ characters: [
1458
+ "yaggababble",
1459
+ "exorcist"
1460
+ ],
1461
+ jinx: "If the Exorcist chooses the Yaggababble, the Yaggababble does not kill tonight.",
1462
+ oldJinx: "If the Exorcist chooses the Yaggababble, the Yaggababble ability does not kill tonight."
1463
+ }
1464
+ ];
1465
+ function _(t) {
1466
+ const i = {
1467
+ townsfolk: [],
1468
+ outsider: [],
1469
+ minion: [],
1470
+ demon: [],
1471
+ traveller: [],
1472
+ fabled: []
1473
+ };
1474
+ for (const a of t)
1475
+ i[a.team].push(a);
1476
+ return i;
1477
+ }
1478
+ function B(t, i = !1) {
1479
+ const a = new Set(t.map((o) => o.id.toLowerCase())), n = [];
1480
+ for (const o of G) {
1481
+ const [h, s] = o.characters;
1482
+ a.has(h) && a.has(s) && (i && o.oldJinx ? n.push({
1483
+ characters: o.characters,
1484
+ jinx: o.oldJinx
1485
+ }) : n.push({
1486
+ characters: o.characters,
1487
+ jinx: o.jinx
1488
+ }));
1489
+ }
1490
+ for (const o of t) {
1491
+ const h = typeof o == "object" && o !== null, s = "jinxes" in o;
1492
+ if (!h || !s) continue;
1493
+ const c = o, l = c.id.toLowerCase();
1494
+ if (a.has(l) && c.jinxes)
1495
+ for (const r of c.jinxes) {
1496
+ const d = r.id.toLowerCase();
1497
+ a.has(d) && (n.some(
1498
+ (m) => m.characters[0] === l && m.characters[1] === d || m.characters[0] === d && m.characters[1] === l
1499
+ ) || n.push({
1500
+ characters: [l, d],
1501
+ jinx: r.reason
1502
+ }));
1503
+ }
1504
+ }
1505
+ return n;
1506
+ }
1507
+ function F({ script: t, options: i, nightOrders: a }) {
1508
+ var n, o, h, s;
1509
+ return /* @__PURE__ */ e("div", { className: "sheet-wrapper", children: [
1510
+ /* @__PURE__ */ e(
1511
+ D,
1512
+ {
1513
+ title: ((n = t.metadata) == null ? void 0 : n.name) || "Custom Script",
1514
+ author: i.showAuthor ? (o = t.metadata) == null ? void 0 : o.author : void 0,
1515
+ characters: _(t.characters),
1516
+ color: i.color,
1517
+ jinxes: i.showJinxes ? B(t.characters, i.useOldJinxes) : [],
1518
+ showSwirls: i.showSwirls,
1519
+ includeMargins: i.includeMargins,
1520
+ solidTitle: i.solidTitle,
1521
+ iconScale: i.iconScale,
1522
+ appearance: i.appearance
1523
+ }
1524
+ ),
1525
+ /* @__PURE__ */ e("div", { style: "break-after:page;" }),
1526
+ i.showBackingSheet && /* @__PURE__ */ e(g, { children: [
1527
+ /* @__PURE__ */ e(
1528
+ E,
1529
+ {
1530
+ title: ((h = t.metadata) == null ? void 0 : h.name) || "Custom Script",
1531
+ color: i.color,
1532
+ includeMargins: i.includeMargins,
1533
+ firstNightOrder: a.first,
1534
+ otherNightOrder: a.other,
1535
+ formatMinorWords: i.formatMinorWords,
1536
+ displayNightOrder: i.displayNightOrder
1537
+ }
1538
+ ),
1539
+ /* @__PURE__ */ e("div", { style: "break-after:page;" })
1540
+ ] }),
1541
+ i.showNightSheet && /* @__PURE__ */ e(g, { children: [
1542
+ /* @__PURE__ */ e(
1543
+ O,
1544
+ {
1545
+ firstNightOrder: a.first,
1546
+ otherNightOrder: a.other,
1547
+ includeMargins: i.includeMargins,
1548
+ title: ((s = t.metadata) == null ? void 0 : s.name) || "Custom Script",
1549
+ color: i.color
1550
+ }
1551
+ ),
1552
+ /* @__PURE__ */ e("div", { style: "break-after:page;" })
1553
+ ] })
1554
+ ] });
1555
+ }
494
1556
  export {
495
- U as CharacterSheet,
496
- B as NightSheet,
497
- $ as SheetBack,
498
- _ as darken,
499
- T as parseRgb,
500
- I as rgbString
1557
+ D as CharacterSheet,
1558
+ F as FancyDoc,
1559
+ O as NightSheet,
1560
+ E as SheetBack,
1561
+ k as darken,
1562
+ J as parseRgb,
1563
+ L as rgbString
501
1564
  };