-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompendium.html
699 lines (658 loc) · 40.4 KB
/
compendium.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
<!DOCTYPE html>
<html>
<head>
<title>Orcus Compendium</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="data/markdown-to-html/github-markdown-light.css">
<link rel="icon" href="favicon.ico">
<style>
/* markdown css for modal dialogue on markdown-to-html files */
.markdown-body {
box-sizing: border-box;
min-width: 200px;
max-width: 980px;
margin: 0 auto;
padding: 45px;
}
@media (max-width: 767px) {
.markdown-body {
padding: 15px;
}
}
</style>
</head>
<body>
<h2>Orcus Compendium</h2>
<p>Functional Proof of Concept - searchable filters/tables of classes, powers, feats, ancestries, kits and arts</p>
<p>Options marked with a "*" are Advanced Options that do not appear in the Core Orcus Heroes' Handbook yet</p>
<div class="tab">
<button id ="class" class="tablinks" onclick="selectTab(event, 'Classes')">Classes</button>
<button id ="power" class="tablinks" onclick="selectTab(event, 'Powers')">Powers</button>
<button id ="feat" class="tablinks" onclick="selectTab(event, 'Feats')">Feats</button>
<button id ="crux" class="tablinks" onclick="selectTab(event, 'Cruxes')">Ancestries (Cruxes)</button>
<button id ="heritage" class="tablinks" onclick="selectTab(event, 'Heritages')">Ancestries (Heritages)</button>
<button id="kit" class="tablinks" onclick="selectTab(event, 'Kits')">Kits</button>
<button id="prestige" class="tablinks" onclick="selectTab(event, 'Prestige')">Prestige Paths</button>
<button id="epic" class="tablinks" onclick="selectTab(event, 'Epic')">Epic Paths</button>
<button class="tablinks" onclick="selectTab(event, 'Companions')">Companions</button>
<button id="art" class="tablinks" onclick="selectTab(event, 'Arts')">Arts *</button>
<button id ="species" class="tablinks" onclick="selectTab(event, 'Species')">Ancestries (Species) *</button>
</div>
<!-- Class table search -->
<div id="Classes" class="tabcontent">
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlClassName"></datalist>
<datalist id="dlClassTradition"></datalist>
<datalist id="dlClassRole"></datalist>
<datalist id="dlClassKeyAbility"></datalist>
<datalist id="dlClassDisciplines"></datalist>
<table id="classTable" class="filterTable">
<!-- searchable headers, note that you can't currently filter by multiple inputs, only the last search applies -->
<tr class="header">
<th>
<input type="search" id="searchClassName" oninput="searchClassTable()" placeholder="Name" title="Search by Class Name" list="dlClassName">
<button class="sortbutton" onclick="sortTable(event,'classTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchClassTradition" oninput="searchClassTable()" placeholder="Tradition" title="Search by Tradition" list="dlClassTradition">
<button class="sortbutton" onclick="sortTable(event,'classTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchClassRole" oninput="searchClassTable()" placeholder="Role" title="Search by Role" list="dlClassRole">
<button class="sortbutton" onclick="sortTable(event,'classTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchClassKeyAbility" oninput="searchClassTable()" placeholder="Key Ability" title="Search by Key Ability" list="dlClassKeyAbility">
<button class="sortbutton" onclick="sortTable(event,'classTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchClassDisciplines" oninput="searchClassTable()" placeholder="Class Disciplines" title="Search by Class Disciplines" list="dlClassDisciplines">
<button class="sortbutton" onclick="sortTable(event,'classTable','4')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Powers -->
<div id="Powers" class="tabcontent">
<p>
Power Card style:
<!-- colours -->
<input type="radio" id="power_style_colour_orcus" name="power_style_colour" value="Orcus" checked="checked" onclick="deleteUrlSearchParams('power_colour')">
<label for="power_style_orcus">Orcus Colours</label>
<input type="radio" id="power_style_colour_4e" name="power_style_colour" value="4e" onclick="updateUrlSearchParams('power_colour','4e')">
<label for="power_style_colour_4e">4e Colours</label>
<!-- horizontal or vertical power cards -->
<input type="radio" id="power_style_card_compendium" name="power_style_card" value="Compendium" checked="checked" onclick="deleteUrlSearchParams('power_style')">
<label for="power_style_card_compendium">Compendium Cards (horizontal)</label>
<input type="radio" id="power_style_card_4e" name="power_style_card" value="4e" onclick="updateUrlSearchParams('power_style','4e')">
<label for="power_style_card_4e">4e Cards (vertical)</label>
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlPowerName"></datalist>
<datalist id="dlPowerSource"></datalist>
<datalist id="dlPowerList"></datalist>
<datalist id="dlPowerCategory"></datalist>
<datalist id="dlPowerFrequency"></datalist>
<datalist id="dlPowerTier"></datalist>
<datalist id="dlPowerTags"></datalist>
<table id="powerTable" class="filterTable">
<!-- searchable headers, note that you can't currently filter by multiple inputs, only the last search applies -->
<tr class="header">
<th>
<input type="search" id="searchPowerName" oninput="searchPowerTable()" placeholder="Name" title="Search by Power Name" list="dlPowerName">
<button class="sortbutton" onclick="sortTable(event,'powerTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPowerSource" oninput="searchPowerTable()" placeholder="Source" title="Search by Source" list="dlPowerSource">
<button class="sortbutton" onclick="sortTable(event,'powerTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPowerList" oninput="searchPowerTable()" placeholder="List" title="Search by List" list="dlPowerList">
<button class="sortbutton" onclick="sortTable(event,'powerTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPowerCategory" oninput="searchPowerTable()" placeholder="Category" title="Search by Category" list="dlPowerCategory">
<button class="sortbutton" onclick="sortTable(event,'powerTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPowerFrequency" oninput="searchPowerTable()" placeholder="Frequency" title="Search by Frequency" list="dlPowerFrequency">
<button class="sortbutton" onclick="sortTable(event,'powerTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPowerTier" oninput="searchPowerTable()" placeholder="Tier" title="Search by Tier" list="dlPowerTier">
<button class="sortbutton" onclick="sortTable(event,'powerTable','5')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPowerTags" oninput="searchPowerTable()" placeholder="Tags" title="Search by Tags" list="dlPowerTags">
<button class="sortbutton" onclick="sortTable(event,'powerTable','6')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Feats -->
<div id="Feats" class="tabcontent">
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlFeatName"></datalist>
<datalist id="dlFeatType"></datalist>
<datalist id="dlFeatPrerequisite"></datalist>
<datalist id="dlFeatBenefit"></datalist>
<datalist id="dlFeatSpecial"></datalist>
<datalist id="dlFeatPower"></datalist>
<table id="featTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchFeatName" oninput="searchFeatTable()" placeholder="Name" title="Search by Feat Name" list="dlFeatName">
<button class="sortbutton" onclick="sortTable(event,'featTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchFeatType" oninput="searchFeatTable()" placeholder="Feat Type" title="Search by Feat Type" list="dlFeatType">
<button class="sortbutton" onclick="sortTable(event,'featTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchFeatPrerequisite" oninput="searchFeatTable()" placeholder="Prerequisite" title="Search by Prerequisite" list="dlFeatPrerequisite">
<button class="sortbutton" onclick="sortTable(event,'featTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchFeatBenefit" oninput="searchFeatTable()" placeholder="Benefit" title="Search by Benefit" list="dlFeatBenefit">
<button class="sortbutton" onclick="sortTable(event,'featTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchFeatSpecial" oninput="searchFeatTable()" placeholder="Special" title="Search by Special" list="dlFeatSpecial">
<button class="sortbutton" onclick="sortTable(event,'featTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchFeatPower" oninput="searchFeatTable()" placeholder="Power" title="Search by Power" list="dlFeatPower">
<button class="sortbutton" onclick="sortTable(event,'featTable','5')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Ancestries (Cruxes) -->
<div id="Cruxes" class="tabcontent">
<p>
Cruxes and Heritages are the Core option for Ancestries. For games where Species matters more than upbringing, use Ancestries (Species) instead.
</p>
<p>
You are human, or otherwise defined more by upbringing than genetics:<br/>
<strong>Size:</strong> Your size is Medium.<br/>
<strong>Ability Scores:</strong> +2 to two ability scores of your choice.<br/>
<strong>Speed:</strong> Your base walking speed is 6 squares.<br/>
<strong>Languages:</strong> You can speak, read, and write Common and one extra language of your choice.<br/>
</p>
<p>
In addition to the above statistics, pick a <strong>Crux</strong> (below) and a Heritage
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlCruxName"></datalist>
<datalist id="dlCruxSkill"></datalist>
<datalist id="dlCruxFeat1"></datalist>
<datalist id="dlCruxFeat2"></datalist>
<datalist id="dlCruxPower"></datalist>
<table id="cruxTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchCruxName" oninput="searchCruxTable()" placeholder="Name" title="Search by Crux Name" list="dlCruxName">
<button class="sortbutton" onclick="sortTable(event,'cruxTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCruxSkill" oninput="searchCruxTable()" placeholder="Skill" title="Search by Skill" list="dlCruxSkill">
<button class="sortbutton" onclick="sortTable(event,'cruxTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCruxFeat1" oninput="searchCruxTable('searchCruxFeat1',2)" placeholder="Feature 1 Name" title="Search by Feature 1" list="dlCruxFeat1">
<button class="sortbutton" onclick="sortTable(event,'cruxTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCruxFeat2" oninput="searchCruxTable('searchCruxFeat2',3)" placeholder="Feature 2 Name" title="Search by Feature 2" list="dlCruxFeat2">
<button class="sortbutton" onclick="sortTable(event,'cruxTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCruxPower" oninput="searchCruxTable()" placeholder="Power" title="Search by Power" list="dlCruxPower">
<button class="sortbutton" onclick="sortTable(event,'cruxTable','4')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Ancestries (Heritages) -->
<div id="Heritages" class="tabcontent">
<p>
Cruxes and Heritages are the Core option for Ancestries. For games where Species matters more than upbringing, use Ancestries (Species) instead.
</p>
<p>
You are human, or otherwise defined more by upbringing than genetics:<br/>
<strong>Size:</strong> Your size is Medium.<br/>
<strong>Ability Scores:</strong> +2 to two ability scores of your choice.<br/>
<strong>Speed:</strong> Your base walking speed is 6 squares.<br/>
<strong>Languages:</strong> You can speak, read, and write Common and one extra language of your choice.<br/>
</p>
<p>
In addition to the above statistics, pick a Crux and a <strong>Heritage</strong> (below)
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlHeritageName"></datalist>
<datalist id="dlHeritageSkill"></datalist>
<datalist id="dlHeritageFeatName"></datalist>
<datalist id="dlHeritageFeatDesc"></datalist>
<table id="heritageTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchHeritageName" oninput="searchHeritageTable()" placeholder="Name" title="Search by Heritage Name" list="dlHeritageName">
<button class="sortbutton" onclick="sortTable(event,'heritageTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchHeritageSkill" oninput="searchHeritageTable()" placeholder="Skill Bonus" title="Search by Skill" list="dlHeritageSkill">
<button class="sortbutton" onclick="sortTable(event,'heritageTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchHeritageFeatName" oninput="searchHeritageTable()" placeholder="Feature Name" title="Search by Feature Name" list="dlHeritageFeatName">
<button class="sortbutton" onclick="sortTable(event,'heritageTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchHeritageFeatDesc" oninput="searchHeritageTable()" placeholder="Feature Description" title="Search by Feature Description" list="dlHeritageFeatDesc">
<button class="sortbutton" onclick="sortTable(event,'heritageTable','3')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Kits -->
<div id="Kits" class="tabcontent">
<p>
Kits can be taken as further customisation option by giving up your Tier 1 feats (levels 1, 2, 4, 6, 8 and 10).
<br/>
Some GMs may grant players a kit for free without the feat cost, or not allow kits at all.
</p>
<p>
"Dabbles in [X]" kits are a way to multiclass, while "Worships the [X]" represent divine domains and others represent additional options like familiars, shapeshifting, animal companions, poisons, etc.
</p>
<p>
Some classes may grant access to kits automatically (such as Priests choosing a "Worships the [X]" style kit. These kits do not require the sacrifice of your feats.
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlKitName"></datalist>
<datalist id="dlKitDescription"></datalist>
<datalist id="dlKitRequirements"></datalist>
<datalist id="dlKitFeat1"></datalist>
<datalist id="dlKitFeat5"></datalist>
<datalist id="dlKitFeat10"></datalist>
<datalist id="dlKitDiscipline"></datalist>
<table id="kitTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchKitName" oninput="searchKitTable()" placeholder="Name" title="Search by Kit Name" list="dlKitName">
<button class="sortbutton" onclick="sortTable(event,'kitTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchKitDescription" oninput="searchKitTable()" placeholder="Description" title="Search by Description" list="dlKitDescription">
<button class="sortbutton" onclick="sortTable(event,'kitTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchKitRequirements" oninput="searchKitTable()" placeholder="Requirements" title="Search by Requirements" list="dlKitRequirements">
<button class="sortbutton" onclick="sortTable(event,'kitTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchKitFeat1" oninput="searchKitTable()" placeholder="Lv 1 Feature" title="Search by Lv 1 Feature" list="dlKitFeat1">
<button class="sortbutton" onclick="sortTable(event,'kitTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchKitFeat5" oninput="searchKitTable()" placeholder="Lv 5 Feature" title="Search by Lv 5 Feature" list="dlKitFeat5">
<button class="sortbutton" onclick="sortTable(event,'kitTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchKitFeat10" oninput="searchKitTable()" placeholder="Lv 10 Feature" title="Search by Lv 10 Feature" list="dlKitFeat10">
<button class="sortbutton" onclick="sortTable(event,'kitTable','5')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchKitDiscipline" oninput="searchKitTable()" placeholder="Associated Discipline" title="Search by Associated Discipline" list="dlKitDiscipline" >
<button class="sortbutton" onclick="sortTable(event,'kitTable','6')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Prestige Paths -->
<div id="Prestige" class="tabcontent">
<p>
At level 11, each player character gets a prestige path.
<br/>
This path is in addition to their main class, which still gives them some powers.
<br/>
Prestige path powers do not count towards total class powers available.
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlPrestigeName"></datalist>
<datalist id="dlPrestigeRequirements"></datalist>
<datalist id="dlPrestigeFeat11-1"></datalist>
<datalist id="dlPrestigeFeat11-2"></datalist>
<datalist id="dlPrestigeFeat16"></datalist>
<datalist id="dlPrestigePower11"></datalist>
<datalist id="dlPrestigePower12"></datalist>
<datalist id="dlPrestigePower20"></datalist>
<table id="prestigeTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchPrestigeName" oninput="searchPrestigeTable()" placeholder="Name" title="Search by Prestige Path Name" list="dlPrestigeName">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigeRequirements" oninput="searchPrestigeTable()" placeholder="Requirements" title="Search by Requirements" list="dlPrestigeRequirements">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigeFeat11-1" oninput="searchPrestigeTable()" placeholder="Lv 11 Feature 1" title="Search by Lv 11 Feature 1" list="dlPrestigeFeat11-1">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigeFeat11-2" oninput="searchPrestigeTable()" placeholder="Lv 11 Feature 2" title="Search by Lv 11 Feature 2" list="dlPrestigeFeat11-2">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigeFeat16" oninput="searchPrestigeTable()" placeholder="Lv 16 Feature" title="Search by Lv 16 Feature" list="dlPrestigeFeat16">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigePower11" oninput="searchPrestigeTable()" placeholder="Lv 11 Power" title="Search by Lv 11 Power" list="dlPrestigePower11">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','5')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigePower12" oninput="searchPrestigeTable()" placeholder="Lv 12 Power" title="Search by Lv 12 Power" list="dlPrestigePower12">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','6')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchPrestigePower20" oninput="searchPrestigeTable()" placeholder="Lv 20 Power" title="Search by Lv 20 Power" list="dlPrestigePower20">
<button class="sortbutton" onclick="sortTable(event,'prestigeTable','7')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Epic Paths -->
<div id="Epic" class="tabcontent">
<p>
At level 21, each player character gets an epic path.
<br/>
This path is on top of their main class, which still gives them some powers, and their prestige path (which stops giving them powers after level 20).
<br/>
Like prestige path powers, powers granted by epic paths are in addition to those granted you a character’s class and do not count towards total class powers available.
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlEpicName"></datalist>
<datalist id="dlEpicDescription"></datalist>
<datalist id="dlEpicRequirements"></datalist>
<datalist id="dlEpicFeat21"></datalist>
<datalist id="dlEpicFeat24"></datalist>
<datalist id="dlEpicFeat30"></datalist>
<datalist id="dlEpicPower26"></datalist>
<table id="epicTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchEpicName" oninput="searchEpicTable()" placeholder="Name" title="Search by Epic Path Name" list="dlEpicName">
<button class="sortbutton" onclick="sortTable(event,'epicTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchEpicDescription" oninput="searchEpicTable()" placeholder="Description" title="Search by Description" list="dlEpicDescription">
<button class="sortbutton" onclick="sortTable(event,'epicTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchEpicRequirements" oninput="searchEpicTable()" placeholder="Requirements" title="Search by Requirements" list="dlEpicRequirements">
<button class="sortbutton" onclick="sortTable(event,'epicTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchEpicFeat21" oninput="searchEpicTable()" placeholder="Lv 21 Feature" title="Search by Lv 21 Feature" list="dlEpicFeat21">
<button class="sortbutton" onclick="sortTable(event,'epicTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchEpicFeat24" oninput="searchEpicTable()" placeholder="Lv 24 Feature" title="Search by Lv 24 Feature" list="dlEpicFeat24">
<button class="sortbutton" onclick="sortTable(event,'epicTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchEpicFeat30" oninput="searchEpicTable()" placeholder="Lv 30 Feature" title="Search by Lv 30 Feature" list="dlEpicFeat30">
<button class="sortbutton" onclick="sortTable(event,'epicTable','5')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchEpicPower26" oninput="searchEpicTable()" placeholder="Lv 26 Power" title="Search by Lv 26 Power" list="dlEpicPower26">
<button class="sortbutton" onclick="sortTable(event,'epicTable','6')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Companions -->
<div id="Companions" class="tabcontent">
<p>
Some classes and powers grant access to Companions - such as more permanent Animal Companions or temporary Summons from the Cup of Brimstone disciplines' Daily powers.
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlCompanionName"></datalist>
<datalist id="dlCompanionLevel"></datalist>
<datalist id="dlCompanionSource"></datalist>
<datalist id="dlCompanionSize"></datalist>
<datalist id="dlCompanionRole"></datalist>
<datalist id="dlCompanionLanguage"></datalist>
<datalist id="dlCompanionSenses"></datalist>
<datalist id="dlCompanionSpeed"></datalist>
<table id="companionTable" class="filterTable">
<tr class="header">
<th>
<input type="search" id="searchCompanionName" oninput="searchCompanionTable()" placeholder="Name" title="Search by Companion Name" list="dlCompanionName">
<button class="sortbutton" onclick="sortTable(event,'companionTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionLevel" oninput="searchCompanionTable()" placeholder="Level" title="Search by Level" list="dlCompanionLevel">
<button class="sortbutton" onclick="sortTable(event,'companionTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionSource" oninput="searchCompanionTable()" placeholder="Source" title="Search by Source" list="dlCompanionSource">
<button class="sortbutton" onclick="sortTable(event,'companionTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionSize" oninput="searchCompanionTable()" placeholder="Size" title="Search by Size" list="dlCompanionSize">
<button class="sortbutton" onclick="sortTable(event,'companionTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionRole" oninput="searchCompanionTable()" placeholder="Role" title="Search by Role" list="dlCompanionRole">
<button class="sortbutton" onclick="sortTable(event,'companionTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionLanguage" oninput="searchCompanionTable()" placeholder="Language" title="Search by Lv Language" list="dlCompanionLanguage">
<button class="sortbutton" onclick="sortTable(event,'companionTable','5')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionSenses" oninput="searchCompanionTable()" placeholder="Senses" title="Search by Senses" list="dlCompanionSenses" >
<button class="sortbutton" onclick="sortTable(event,'companionTable','6')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchCompanionSpeed" oninput="searchCompanionTable()" placeholder="Speed" title="Search by Speed" list="dlCompanionSpeed" >
<button class="sortbutton" onclick="sortTable(event,'companionTable','7')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Advanced Option: Arts - Incantations and Practices -->
<div id="Arts" class="tabcontent">
<p>* In a game with the Arts Advanced Option, you have access to non-combat arts in the form of magical <i>Incantations</i> and non-magical <i>Practices</i>.</p>
<p>If running with the Gated Arts variant, you'll need either the <i>Incantation Caster</i> or <i>Practical Arts</i> feat to learn the relevant category of Arts.</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlArtName"></datalist>
<datalist id="dlArtLevel"></datalist>
<datalist id="dlArtType"></datalist>
<datalist id="dlArtCategory"></datalist>
<datalist id="dlArtSkill"></datalist>
<datalist id="dlArtTime"></datalist>
<table id="artTable" class="filterTable">
<!-- searchable headers, note that you can't currently filter by multiple inputs, only the last search applies -->
<tr class="header">
<th>
<input type="search" id="searchArtName" oninput="searchArtTable()" placeholder="Name" title="Search by Art Name" list="dlArtName">
<button class="sortbutton" onclick="sortTable(event,'artTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchArtLevel" oninput="searchArtTable()" placeholder="Level" title="Search by Level" list="dlArtLevel">
<button class="sortbutton" onclick="sortTable(event,'artTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchArtType" oninput="searchArtTable()" placeholder="Type" title="Search by Type" list="dlArtType">
<button class="sortbutton" onclick="sortTable(event,'artTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchArtCategory" oninput="searchArtTable()" placeholder="Category" title="Search by Category" list="dlArtCategory">
<button class="sortbutton" onclick="sortTable(event,'artTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchArtSkill" oninput="searchArtTable()" placeholder="Skill" title="Search by Skill" list="dlArtSkill">
<button class="sortbutton" onclick="sortTable(event,'artTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchArtTime" oninput="searchArtTable()" placeholder="Completion Time" title="Search by Skill" list="dlArtTime">
<button class="sortbutton" onclick="sortTable(event,'artTable','5')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Advanced Ancestries Option: Species -->
<div id="Species" class="tabcontent">
<p>
* If using this Advanced Option, you pick a Species as your Ancestory instead of your normal Crux and Heritage.
</p>
<p>
For Ability Scores, you may pick any 2 of the 3 listed (except Humans, who pick any 1 of any of Str/Con/Dex/Int/Wis/Cha instead)
</p>
<!-- datalists to allow dropdown options in search, populated at same time table is -->
<datalist id="dlSpeciesName"></datalist>
<datalist id="dlSpeciesDescription"></datalist>
<datalist id="dlSpeciesAbility"></datalist>
<datalist id="dlSpeciesFeat1"></datalist>
<datalist id="dlSpeciesFeat2"></datalist>
<datalist id="dlSpeciesFeat3"></datalist>
<datalist id="dlSpeciesDarkvision"></datalist>
<datalist id="dlSpeciesSpeed"></datalist>
<table id="speciesTable" class="filterTable">
<!-- searchable headers, note that you can't currently filter by multiple inputs, only the last search applies -->
<tr class="header">
<th>
<input type="search" id="searchSpeciesName" oninput="searchSpeciesTable()" placeholder="Name" title="Search by Species Name" list="dlSpeciesName">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','0')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchSpeciesDescription" oninput="searchSpeciesTable()" placeholder="Description" title="Search by Description" list="dlSpeciesDescription">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','1')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchSpeciesAbility" oninput="searchSpeciesTable()" placeholder="Ability Score" title="Search by Ability Score" list="dlSpeciesAbility">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','2')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchSpeciesFeat1" oninput="searchSpeciesTable()" placeholder="Feature 1 Name" title="Search by Feature 1 Name" list="dlSpeciesFeat1">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','3')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchSpeciesFeat2" oninput="searchSpeciesTable()" placeholder="Feature 2 Name" title="Search by Feature 2 Name" list="dlSpeciesFeat2">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','4')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchSpeciesFeat3" oninput="searchSpeciesTable()" placeholder="Feature 3 Name" title="Search by Feature 3 Name" list="dlSpeciesFeat3">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','5')">Sort ⇅</button>
</th>
<!-- in the csv, it goes speed then darkvision, but due to speed having longer text on some entries or no speed penalty in heavy armour, looks better to display speed as last/longest column -->
<th>
<input type="search" id="searchSpeciesDarkvision" oninput="searchSpeciesTable()" placeholder="Darkvision" title="Search by Darkvision" list="dlSpeciesDarkvision">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','6')">Sort ⇅</button>
</th>
<th>
<input type="search" id="searchSpeciesSpeed" oninput="searchSpeciesTable()" placeholder="Speed" title="Search by Speed" list="dlSpeciesSpeed">
<button class="sortbutton" onclick="sortTable(event,'speciesTable','7')">Sort ⇅</button>
</th>
</tr>
</table>
</div>
<!-- Modal popup for displaying more info on classes, powers, etc -->
<div id="modalShowInfo" class="modal">
<div class="modal-content markdown-body">
<span class="close" onclick="closeModal()">×</span>
<div id="showInfoContent" class="markdown-body"></div>
</div>
</div>
<!-- scripts needed to load table data, modal showinfo functionality, searching, sorting, etc - currently all basic js, no library dependencies -->
<script src="js/misc.js"></script>
<script src="js/classes.js"></script>
<script src="js/powers.js"></script>
<script src="js/feats.js"></script>
<script src="js/cruxes.js"></script>
<script src="js/heritages.js"></script>
<script src="js/kits.js"></script>
<script src="js/prestige.js"></script>
<script src="js/epic.js"></script>
<script src="js/companions.js"></script>
<script src="js/arts.js"></script>
<script src="js/species.js"></script>
<br/><br/>
<footer>
<p><i>Version 0.12 (2023-12-28) - <s>early alpha?</s>, aiming for compatibility with Orcus Heroes' Handbook v1.1 (including updates between 2023-02-27 and 2023-12-18)</i></p>
<br/>
<p>
<strong>Recent Changes</strong>
<br/>
<u>(v0.12 - Merry Orcus 2023!)</u>
<br/>
- 2023 ORCUS UPDATES: Includes all the updates to Orcus between April and the big official 1.0 Orcus release, plus the December 1.1 update
<br/>
- URL now updates with links to individual rules elements (e.g. specific powers, feats) instead of remaining static - means you can paste a link to a specific power instead of having to search every time
<br/>
- URL now includes params for the power card styles - if you prefer the 4e style you can just copy the URL after setting them and they'll be set by default to your preferences
<br/>
- you can now hide the search tables e.g with Classes open, clicking Classes again hides it - makes it easier to scroll down to changelog + known issues
<br/>
<br/>
<u>(v0.11 - April Mega Merge)</u>
<br/>
- EPIC PATHS: basic support for Epic Paths
<br/>
- APRIL ORCUS UPDATES: includes changes from the past few months, most notably recent changes to descriptions, components and completion times for a lot of Arts
<br/>
- DISCIPLINE SUMMARIES: Listings of Disciplines (such as on Class, Powers and Kits) now link to summaries for the whole Discipline, including flavour text, ability scores, sources to gain that discipline and an overview of powers.
<br/>
- MORE LINKS TO POWER CARDS: Feats, Prestige Paths and Epic Paths that grant Powers now include direct links to the power cards from the appropriate table columns.
<br/>
- UNDER THE HOOD: behind the scenes bug fixes, some slightly better error handling in a few places (e.g. a few cases where unfinished content lacks proper summaries will now show placeholders in the showInfo popup instead of being blank or failing to popup), slight improvements to tools for automatically generating/updating json and html from sources
<br/>
<br/>
<u>(v0.10 - Companions and Powers)</u>
<br/>
- COMPANIONS: searchable table of animal companions and creatures from summons-keyword powers alike (and summon powers from Cup of Brimstone now link you to the companion statblock)
<br/>
- POWER CARDS: 4e and Orcus colour schemes not enough? Can now toggle between Compendium-style horizontal cards and their slimmer, taller 4e-style vertical power card look. Oh and powers now show a little info about the Discipline they're from - including what Classes, Kits, Feats and Cruxes grant access (and a quick-link to the source for reference)
<br/>
- CORRUPT POWERS FIX: "Squeeeeze", "Back-To-Back", "Frenzy" and "Onslaught" no longer have mangled data in the category field and beyond. Also, power cards (in any style) now render the ♦ character properly
<br/>
<br/>
<u>(v0.09 - THE GOTTA GO FAST UPDATE)</u>
<br/>
- FAST: major improvements to speed of sorting and searching on tables
<br/>
- PRESTIGE: basic support for Prestige Paths
<br/>
- POWERS UNCHAINED: can finally sort on the Powers table thanks to speed improvements, and searching no longer visibly takes a second or two to resolve itself
<br/>
- MISTAKEN IDENTITY FIXED: Daily Power cards no longer use 4e colours if Orcus style is selected and vice versa (oops)
</p>
<br/>
<p>
<strong>Known Issues </strong>
<br/>
- doesn't work well on mobile <i>(not sure I'll ever fix this tbh)</i>
<br/>
- no option to filter by non-core options (with exception of Species and Arts we ignore non-core material like the Warrior for the moment)
<br/>
- minimal error handling <i>(but it's getting better)</i>
<br/>
- code is constantly being refactored to be slightly less horrible (I'm pretty much learning html, js and css as I go here)
<br/>
- cannot run locally like 4e Offline Compendium due to browser security protections avoiding the loading of json files from local filesystem
<br/>
- some elements of Orcus still need manual intervention to update (e.g. no automation of xslx to csv, some data like cruxes and kits had to be hand-entered due to lack of xslx, need to check diffs on Orcus markdown to see when they've changed)
<br/>
- the "Eats Monster Hearts" kit has no name for the Lv 5 and Lv 10 features (this is a problem with the Orcus core book, I can't provide a name that doesn't exist)
<br/>
- many powers and species are missing flavour text (everything I've checked so far has missing flavour and description in the Orcus markdown files, so AFAIK this isn't a Compendium issue)
</p>
</footer>
</body>
</html>