-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathcardHelper.js
More file actions
112 lines (101 loc) · 2.67 KB
/
cardHelper.js
File metadata and controls
112 lines (101 loc) · 2.67 KB
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
const cardHelper = wrap(() => {
const unset = [undefined, null];
function max(rarity) { // eslint-disable-line no-shadow
switch (rarity) {
case 'DETERMINATION':
case 'LEGENDARY': return 1;
case 'EPIC': return 2;
case 'RARE':
case 'BASE':
case 'COMMON': return 3;
case 'GENERATED': return 0;
default:
debug(`Unknown rarity: ${rarity}`);
return undefined;
}
}
function isShiny(el) {
return el.classList.contains('shiny');
}
function find(id, shiny) {
const elements = document.querySelectorAll(`[id="${id}"]`);
if (shiny !== undefined) {
for (let i = 0; i < elements.length; i++) {
const el = elements[i];
if (shiny === isShiny(el)) {
return el;
}
}
}
return elements[0];
}
function name(el) {
return el.querySelector('.cardName').textContent;
}
function rarity(el) {
return getCardData(el.id).rarity;
}
function quantity(el) {
return parseInt(el.querySelector('.cardQuantity .nb, #quantity .nb, .quantity .nb').textContent, 10);
}
function cost(el) {
return parseInt(el.querySelector('.cardCost').textContent, 10);
}
function totalDust() {
return parseInt(document.querySelector('span#dust').textContent, 10);
}
function dustCost(r, s) {
if (typeof r === 'object') {
if (typeof s !== 'boolean') {
s = isShiny(r);
}
r = rarity(r);
}
switch (r) {
default:
case 'DETERMINATION': return null;
case 'LEGENDARY': return s ? 3200 : 1600;
case 'EPIC': return s ? 1600 : 400;
case 'RARE': return s ? 800 : 100;
case 'COMMON': return s ? 400 : 40;
case 'BASE': return s ? 400 : null;
}
}
function dustGain(r, s) {
if (typeof r === 'object') {
if (typeof s !== 'boolean') {
s = isShiny(r);
}
r = rarity(r);
}
switch (r) {
default: fn.debug(`Unknown Rarity: ${r}`); // fallthrough
case 'GENERATED': // You can't craft this, but I don't want an error
case 'DETERMINATION': return undefined;
case 'LEGENDARY': return s ? 1600 : 400;
case 'EPIC': return s ? 400 : 100;
case 'RARE': return s ? 100 : 20;
case 'COMMON': return s ? 40 : 5;
case 'BASE': return s ? 40 : 0;
}
}
function getCardData(id) {
const cards = global('allCards').filter((card) => card.id === parseInt(id, 10));
if (cards.length) return cards[0];
throw new Error(`Unknown card ${id}`);
}
return {
cost,
find,
name,
rarity,
shiny: isShiny,
craft: {
max,
quantity,
totalDust,
cost: dustCost,
worth: dustGain,
},
};
});