-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfrwc64.warriors.js
More file actions
101 lines (93 loc) · 3.35 KB
/
Copy pathfrwc64.warriors.js
File metadata and controls
101 lines (93 loc) · 3.35 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
frwc64 = typeof frwc64 != 'undefined' ? frwc64 : {}
frwc64.warriorManager = (function() {
// Do some posthoc processing
let posthoc = function() {
// data source
let warriors = frwc64.warriors
// data variables
let _warriors = {}
let names = {firstNames:{}, jobs:{}, suffixes: {}}
let traits = {
backgrounds: {},
companions : {},
bodies : {},
heads : {},
shields : {},
weapons : {},
runes : {},
}
let affinities = {}
// calculation variables
let allowed_attributes = ['background','companion','body','head','shield','weapon','rune']
let mapped_attributes = {background: 'backgrounds', companion: 'companions', body: 'bodies', head: 'heads', shield: 'shields', weapon: 'weapons', rune: 'runes'}
// loop
for (var k in warriors) {
let warrior = warriors[k]
let id = warrior.image.replace("https://portal.forgottenrunes.com/api/warriors/img/", '')
// handle name
let name = warrior.name
if (name.match('of')) {
let firstname = name.match(/^\w+/)
if (firstname) {
names.firstNames[firstname] = names.firstNames[firstname] || []
names.firstNames[firstname].push(id)
} else {
names.firstNames['no-first'] = names.firstNames['no-first'] || []
names.firstNames['no-first'].push(id)
}
let suffix = name.replace(firstname, '')
let t;
t = suffix.split('of the')
if (t.length < 2) {
t = suffix.split('of')
if (t.length < 2) {
t = suffix
}
}
t = t.map(n => n.trim())
if (t.length == 2) {
names.jobs[t[0]] = names.jobs[t[0]] || []
names.jobs[t[0]].push(id)
names.suffixes[t[1]] = names.suffixes[t[1]] || []
names.suffixes[t[1]].push(id)
} else {
names.suffixes[suffix] = names.suffixes[suffix] || []
names.suffixes[suffix].push(id)
}
/*
names.suffixes[suffix] = names.suffixes[suffix] || []
names.suffixes.push(id)*/
}
// handle traits
var attributes = warrior.attributes
var outputs = {}
for (var m in attributes) {
var attr = attributes[m]
if (allowed_attributes.indexOf(attr.trait_type) != -1) {
let key = mapped_attributes[attr.trait_type]
traits[key] = traits[key] || {}
traits[key][attr.value] = traits[key][attr.value] || []
traits[key][attr.value].push(id)
outputs[attr.trait_type] = attr.value
}
if (attr.trait_type == 'Affinity') {
affinities[attr.value] = affinities[attr.value] || {}
affinities[attr.value]['list'] = affinities[attr.value]['list'] || []
affinities[attr.value]['list'].push(id)
allowed_attributes.forEach(function(attribute) {
let mapped = mapped_attributes[attribute]
affinities[attr.value][mapped] = affinities[attr.value][mapped] || []
affinities[attr.value][mapped][outputs[attribute]] = affinities[attr.value][mapped][outputs[attribute]] || []
affinities[attr.value][mapped][outputs[attribute]].push(id)
})
}
}
}
console.log(traits)
console.log(affinities)
console.log(names)
}
return {
posthoc: posthoc,
}
})()