forked from crnormand/gurps
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pdf-refs.js
114 lines (110 loc) · 5.56 KB
/
pdf-refs.js
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
import * as Settings from '../lib/miscellaneous-settings.js'
export const SJGProductMappings = {
ACT1: 'https://www.warehouse23.com/products/gurps-action-1-heroes',
ACT3: 'https://www.warehouse23.com/products/gurps-action-3-furious-fists',
B: 'https://www.warehouse23.com/products/gurps-basic-set-characters-and-campaigns',
BS: 'https://www.warehouse23.com/products/gurps-banestorm',
DF1: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-1-adventurers-1',
DF3: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-3-the-next-level-1',
DF4: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-4-sages-1',
DF8: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-8-treasure-tables',
DF11: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-11-power-ups',
DF12: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-12-ninja',
DF13: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-13-loadouts',
DF14: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-14-psi',
DFM1: 'https://www.warehouse23.com/products/gurps-dungeon-fantasy-monsters-1',
DFA: 'https://www.warehouse23.com/products/dungeon-fantasy-roleplaying-game',
DFM: 'https://www.warehouse23.com/products/dungeon-fantasy-roleplaying-game',
DFS: 'https://www.warehouse23.com/products/dungeon-fantasy-roleplaying-game',
DFE: 'https://www.warehouse23.com/products/dungeon-fantasy-roleplaying-game',
DR: 'https://www.warehouse23.com/products/gurps-dragons-1',
F: 'https://www.warehouse23.com/products/gurps-fantasy',
FDG: 'https://gaming-ballistic.myshopify.com/products/fantastic-dungeon-grappling?variant=42552585322751',
GUL: 'https://www.gamesdiner.com/gulliver/',
H: 'https://www.warehouse23.com/products/gurps-horror-1',
HF: 'https://www.mygurps.com/historical_folks_4e.pdf',
HT: 'https://www.warehouse23.com/products/gurps-high-tech-2',
IW: 'https://www.warehouse23.com/products/gurps-infinite-worlds-1',
LT: 'https://www.warehouse23.com/products/gurps-fourth-edition-low-tech',
LTC1: 'https://www.warehouse23.com/products/gurps-low-tech-companion-1-philosophers-and-kings',
LTIA: 'https://www.warehouse23.com/products/gurps-low-tech-instant-armor',
LITE: 'https://www.warehouse23.com/products/SJG31-0004',
M: 'https://www.warehouse23.com/products/gurps-magic-5',
MPS: 'https://www.warehouse23.com/products/gurps-magic-plant-spells',
MA: 'https://www.warehouse23.com/products/gurps-martial-arts',
MAFCCS: 'https://www.warehouse23.com/products/gurps-martial-arts-fairbairn-close-combat-systems',
MATG: 'https://www.warehouse23.com/products/gurps-martial-arts-technical-grappling',
MH1: 'https://www.warehouse23.com/products/gurps-monster-hunters-1-champions',
MYST: 'https://www.warehouse23.com/products/gurps-mysteries-1',
MYTH: 'https://www.sjgames.com/gurps/books/myth/',
NB: 'https://github.com/mjeffw/nordlond-bestiary-public/blob/main/README.md',
P: 'https://www.warehouse23.com/products/gurps-powers',
PDF: 'https://www.warehouse23.com/products/gurps-powers-divine-favor',
PSI: 'https://www.warehouse23.com/products/gurps-psionic-powers',
PU1: 'https://www.warehouse23.com/products/gurps-power-ups-1-imbuements-1',
PU2: 'https://www.warehouse23.com/products/gurps-power-ups-2-perks',
PU3: 'https://www.warehouse23.com/products/gurps-power-ups-3-talents',
'PY#': 'https://www.warehouse23.com/products?utf8=%E2%9C%93&keywords=pyramid+magazine&x=0&y=0',
RSWL: 'https://www.warehouse23.com/products/gurps-reign-of-steel-will-to-live',
SU: 'https://www.warehouse23.com/products/gurps-supers-3',
TMS: 'https://www.warehouse23.com/products/gurps-thaumatology-magical-styles',
TRPM: 'https://www.warehouse23.com/products/gurps-thaumatology-ritual-path-magic',
TS: 'https://www.warehouse23.com/products/gurps-tactical-shooting',
TSOR: 'https://www.warehouse23.com/products/gurps-thaumatology-sorcery',
UT: 'https://www.warehouse23.com/products/gurps-ultra-tech',
VOR: 'https://www.warehouse23.com/products/vorkosigan-saga-sourcebook-and-roleplaying-game',
}
// Convert GCS page refs into PDFoundry book & page. Special handling for refs like "PU8:12"
/**
* @param {JQuery.ClickEvent} event
*/
export function handleOnPdf(event) {
event.preventDefault()
event.stopPropagation()
let pdf = event.currentTarget.dataset?.pdf || event.currentTarget.innerText
handlePdf(pdf)
}
/**
* @param {string} links
*/
export function handlePdf(links) {
// @ts-ignore
if (!ui.PDFoundry) {
ui.notifications?.warn('PDFoundry must be installed and configured to use links.')
return
}
// Just in case we get sent multiple links separated by commas, we will open them all
links.split(',').forEach(link => {
let t = link.trim()
let i = t.indexOf(':')
let book = ''
let page = 0
if (i > 0) {
book = t.substring(0, i).trim()
page = parseInt(t.substr(i + 1))
} else {
book = t.replace(/[0-9]*/g, '').trim()
page = parseInt(t.replace(/[a-zA-Z]*/g, ''))
}
// Special case for Separate Basic Set PDFs
if (book === 'B') {
let s = game.settings.get(Settings.SYSTEM_NAME, Settings.SETTING_BASICSET_PDF)
if (page > 336)
if (s === 'Separate') {
book = 'BX'
page = page - 335
} else page += 2
}
// @ts-ignore
const pdf = ui.PDFoundry.findPDFDataByCode(book)
if (pdf === undefined) {
let url = GURPS.SJGProductMappings[book]
if (!url) url = 'https://www.warehouse23.com/products?taxons%5B%5D=558398545-sb' // The main GURPS page
window.open(url, '_blank')
// @ts-ignore
} else {
page += pdf.offset;
ui.PDFoundry.openPDF(pdf, { page });
}
})
}