-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.js
49 lines (46 loc) · 2.43 KB
/
index.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
const diabloDataToNode = require('./lib/loader')
const fs = require('fs')
function loadCsv (path, propertiesDelimiter, customHeaders) {
const data = fs.readFileSync(path, 'utf8')
const lines = data.split('\n')
let headers
if (customHeaders === undefined) {
headers = lines.shift().split('\t')
} else {
headers = customHeaders
}
return lines
.map(line => line.split(propertiesDelimiter))
.map(arr => arr.reduce((acc, e, i) => {
acc[headers[i]] = e
return acc
}, {}))
}
module.exports = function (diabloVersion) {
const itemEnums = require(`./data/${diabloVersion}/item`)
const responses = require(`./data/${diabloVersion}/responses`)
const diabloData = {
npcs: loadCsv(`${__dirname}/data/${diabloVersion}/monster_names.txt`, '\t', ['name']),
areas: loadCsv(`${__dirname}/data/${diabloVersion}/areas.txt`, ',', ['name', 'id']),
skills: loadCsv(`${__dirname}/data/${diabloVersion}/skills.txt`, '\t'),
objects: loadCsv(`${__dirname}/data/${diabloVersion}/objects.txt`, '\t'),
itemEnums: itemEnums,
responses: responses,
itemProperties: loadCsv(`${__dirname}/data/${diabloVersion}/item_properties.txt`, '|', ['statName', 'saveBits', 'saveParamBits', 'saveAdd']),
itemData: loadCsv(`${__dirname}/data/${diabloVersion}/item_data.txt`, '|', ['name', 'code', 'classificationString', 'width', 'height', 'stackable', 'usable', 'throwable']),
itemTypes: loadCsv(`${__dirname}/data/${diabloVersion}/itemtypes.txt`, '\t'),
qualityItems: loadCsv(`${__dirname}/data/${diabloVersion}/qualityitems.txt`, '\t'),
uniqueItems: loadCsv(`${__dirname}/data/${diabloVersion}/uniqueitems.txt`, '\t'),
weapons: loadCsv(`${__dirname}/data/${diabloVersion}/weapons.txt`, '\t'),
superUniques: loadCsv(`${__dirname}/data/${diabloVersion}/superuniques.txt`, '\t'),
setItems: loadCsv(`${__dirname}/data/${diabloVersion}/setitems.txt`, '\t'),
runes: loadCsv(`${__dirname}/data/${diabloVersion}/setitems.txt`, '\t'),
misc: loadCsv(`${__dirname}/data/${diabloVersion}/misc.txt`, '\t'),
monStats: loadCsv(`${__dirname}/data/${diabloVersion}/monstats.txt`, '\t'),
missiles: loadCsv(`${__dirname}/data/${diabloVersion}/missiles.txt`, '\t'),
armor: loadCsv(`${__dirname}/data/${diabloVersion}/armor.txt`, '\t'),
gems: loadCsv(`${__dirname}/data/${diabloVersion}/gems.txt`, '\t'),
belts: loadCsv(`${__dirname}/data/${diabloVersion}/belts.txt`, '\t')
}
return diabloDataToNode(diabloData)
}