@massif/lancer-data 4.0.0-beta.17 → 4.0.0-beta.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
- {
2
- "name": "@massif/lancer-data",
3
- "version": "4.0.0-beta.17",
4
- "description": "Data for the LANCER TTRPG",
5
- "main": "index.js",
6
- "scripts": {
7
- "build": "node ./scripts/build.js",
8
- "test": "node ./scripts/test.js"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "https://github.com/massif-press/lancer-data.git"
13
- },
14
- "directories": {
15
- "lib": "lib"
16
- },
17
- "author": "Massif Press",
18
- "license": "GPL-3.0-or-later",
19
- "devDependencies": {
20
- "zip-lib": "^0.7.3"
21
- },
22
- "keywords": [
23
- "lancer",
24
- "compcon",
25
- "comp/con",
26
- "lancerrpg",
27
- "massif"
28
- ]
29
- }
1
+ {
2
+ "name": "@massif/lancer-data",
3
+ "version": "4.0.0-beta.19",
4
+ "description": "Data for the LANCER TTRPG",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "build": "node ./scripts/build.js",
8
+ "test": "node ./scripts/test.js"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/massif-press/lancer-data.git"
13
+ },
14
+ "directories": {
15
+ "lib": "lib"
16
+ },
17
+ "author": "Massif Press",
18
+ "license": "GPL-3.0-or-later",
19
+ "devDependencies": {
20
+ "zip-lib": "^0.7.3"
21
+ },
22
+ "keywords": [
23
+ "lancer",
24
+ "compcon",
25
+ "comp/con",
26
+ "lancerrpg",
27
+ "massif"
28
+ ]
29
+ }
@@ -1,134 +1,134 @@
1
- const fs = require('fs');
2
-
3
- const weapons = require('../lib/weapons.json');
4
- const systems = require('../lib/systems.json');
5
- const mods = require('../lib/mods.json');
6
- const frames = require('../lib/frames.json');
7
-
8
- // const items = [weapons, systems, mods, frames]
9
- const items = [weapons];
10
-
11
- function row(x) {
12
- if (x.data_type === 'weapon') return weaponRow(x);
13
- return `${x.source},${x.name},0,0,0,0,0,0\n`;
14
- // return `${x.data_type},${x.id},${x.source},${x.name},0,0,0,0,0,0\n`
15
- }
16
-
17
- function weaponRow(x) {
18
- // return `${x.data_type},${x.id},${x.source},${x.name},0,${rangedAp(x)},0,0,0,0\n`
19
- return `${x.source},${x.name},${closeAp(x)},${rangedAp(x)},0,0,0,0\n`;
20
- }
21
-
22
- function getDamage(d, tags) {
23
- let dscore = 0;
24
- let guaranteed = 0;
25
- let possible = 0;
26
- if (typeof d.val === 'string') {
27
- const dmgArr = d.val.split(/d|\+/g);
28
- if (dmgArr.length === 1) guaranteed = parseInt(dmgArr[0]); // straight value, no dice
29
- else {
30
- if (dmgArr.length === 3) guaranteed = parseInt(dmgArr[2]); // bonus val
31
- // handle dice
32
- guaranteed += parseInt(dmgArr[0]); // min number we can get on the dice
33
- possible = parseInt(dmgArr[0]) * parseInt(dmgArr[1]) - parseInt(dmgArr[0]);
34
- }
35
- // guaranteed = 1pt, possible = 0.5
36
- dscore += guaranteed * (possible / 2);
37
- } else {
38
- guaranteed = d.val;
39
- }
40
-
41
- if (tags.find((x) => x.id === 'tg_accurate')) dscore += possible * 0.25;
42
- if (tags.find((x) => x.id === 'tg_inaccurate')) dscore -= possible * 0.25;
43
- if (tags.find((x) => x.id === 'tg_reliable'))
44
- dscore += tags.find((x) => x.id === 'tg_reliable').val * 3;
45
-
46
- return dscore;
47
- }
48
-
49
- function closeAp(x) {
50
- let score = 0;
51
- const tags = x.tags || [];
52
- if (x.type.toLowerCase() !== 'melee' || !x.damage || !x.damage.length) return score.toString();
53
-
54
- x.damage.forEach((d) => {
55
- score += getDamage(d, tags);
56
- });
57
-
58
- const threat = x.range.find((y) => y.type.toLowerCase() === 'threat');
59
- // console.log(threat)
60
- if (threat) score *= (threat.val + 1) / 2;
61
-
62
- if (tags.find((x) => x.id === 'tg_ap')) score = score * 1.35;
63
- if (tags.find((x) => x.id === 'tg_arcing')) score = score * 1.15;
64
- if (tags.find((x) => x.id === 'tg_smart')) score = score * 1.15;
65
- if (tags.find((x) => x.id === 'tg_overkill')) score = score * 1.15;
66
- if (tags.find((x) => x.id === 'tg_loading')) score = score * 0.85;
67
-
68
- return Math.ceil(score).toString();
69
- }
70
-
71
- function rangedAp(x) {
72
- let score = 0;
73
- const tags = x.tags || [];
74
- if (
75
- x.type.toLowerCase() === 'melee' ||
76
- !x.range ||
77
- !x.range.length ||
78
- !x.damage ||
79
- !x.damage.length
80
- )
81
- return score.toString();
82
- x.damage.forEach((d) => {
83
- score += getDamage(d, tags);
84
- });
85
- //collect range pts
86
- x.range.forEach((r) => {
87
- let rscore = 0;
88
- if (typeof r.val === 'string') return 'XXXX';
89
- if (r.type.toLowerCase() === 'range') {
90
- if (r.val <= 10) score += r.val / 2;
91
- else {
92
- rscore += 5 + (r.val - 10);
93
- }
94
- }
95
- if (r.type.toLowerCase() === 'blast') {
96
- rscore += Math.pow(r.val * 3, 2) / 2;
97
- }
98
- if (r.type.toLowerCase() === 'burst') {
99
- rscore += Math.pow(r.val * 3, 2) / 3;
100
- }
101
- if (r.type.toLowerCase() === 'cone') {
102
- rscore += Math.pow(r.val, 2) / 2;
103
- }
104
- if (r.type.toLowerCase() === 'line') {
105
- rscore += r.val * 2;
106
- }
107
- if (r.type.toLowerCase() === 'thrown') {
108
- rscore = score / 3;
109
- }
110
- score += rscore;
111
- });
112
-
113
- if (tags.find((x) => x.id === 'tg_ap')) score = score * 1.35;
114
- if (tags.find((x) => x.id === 'tg_arcing')) score = score * 1.15;
115
- if (tags.find((x) => x.id === 'tg_smart')) score = score * 1.15;
116
- if (tags.find((x) => x.id === 'tg_overkill')) score = score * 1.15;
117
- if (tags.find((x) => x.id === 'tg_loading')) score = score * 0.85;
118
-
119
- return Math.ceil(score).toString();
120
- }
121
-
122
- // let output = 'TYPE,ID,SOURCE,NAME,CQB,RANGED,SURVIVABILITY,MANEUVERABILITY,SUPPORT,CONTROL\n'
123
- let output = 'SOURCE,NAME,MELEE,RANGED,SURVIVABILITY,MANEUVERABILITY,SUPPORT,CONTROL\n';
124
-
125
- items.forEach((e) => {
126
- e.forEach((x) => {
127
- output += row(x);
128
- });
129
- });
130
-
131
- fs.writeFile('./util/output/equipment.csv', output, function (err) {
132
- if (err) return console.log(err);
133
- console.log('Export Complete');
134
- });
1
+ const fs = require('fs');
2
+
3
+ const weapons = require('../lib/weapons.json');
4
+ const systems = require('../lib/systems.json');
5
+ const mods = require('../lib/mods.json');
6
+ const frames = require('../lib/frames.json');
7
+
8
+ // const items = [weapons, systems, mods, frames]
9
+ const items = [weapons];
10
+
11
+ function row(x) {
12
+ if (x.data_type === 'weapon') return weaponRow(x);
13
+ return `${x.source},${x.name},0,0,0,0,0,0\n`;
14
+ // return `${x.data_type},${x.id},${x.source},${x.name},0,0,0,0,0,0\n`
15
+ }
16
+
17
+ function weaponRow(x) {
18
+ // return `${x.data_type},${x.id},${x.source},${x.name},0,${rangedAp(x)},0,0,0,0\n`
19
+ return `${x.source},${x.name},${closeAp(x)},${rangedAp(x)},0,0,0,0\n`;
20
+ }
21
+
22
+ function getDamage(d, tags) {
23
+ let dscore = 0;
24
+ let guaranteed = 0;
25
+ let possible = 0;
26
+ if (typeof d.val === 'string') {
27
+ const dmgArr = d.val.split(/d|\+/g);
28
+ if (dmgArr.length === 1) guaranteed = parseInt(dmgArr[0]); // straight value, no dice
29
+ else {
30
+ if (dmgArr.length === 3) guaranteed = parseInt(dmgArr[2]); // bonus val
31
+ // handle dice
32
+ guaranteed += parseInt(dmgArr[0]); // min number we can get on the dice
33
+ possible = parseInt(dmgArr[0]) * parseInt(dmgArr[1]) - parseInt(dmgArr[0]);
34
+ }
35
+ // guaranteed = 1pt, possible = 0.5
36
+ dscore += guaranteed * (possible / 2);
37
+ } else {
38
+ guaranteed = d.val;
39
+ }
40
+
41
+ if (tags.find((x) => x.id === 'tg_accurate')) dscore += possible * 0.25;
42
+ if (tags.find((x) => x.id === 'tg_inaccurate')) dscore -= possible * 0.25;
43
+ if (tags.find((x) => x.id === 'tg_reliable'))
44
+ dscore += tags.find((x) => x.id === 'tg_reliable').val * 3;
45
+
46
+ return dscore;
47
+ }
48
+
49
+ function closeAp(x) {
50
+ let score = 0;
51
+ const tags = x.tags || [];
52
+ if (x.type.toLowerCase() !== 'melee' || !x.damage || !x.damage.length) return score.toString();
53
+
54
+ x.damage.forEach((d) => {
55
+ score += getDamage(d, tags);
56
+ });
57
+
58
+ const threat = x.range.find((y) => y.type.toLowerCase() === 'threat');
59
+ // console.log(threat)
60
+ if (threat) score *= (threat.val + 1) / 2;
61
+
62
+ if (tags.find((x) => x.id === 'tg_ap')) score = score * 1.35;
63
+ if (tags.find((x) => x.id === 'tg_arcing')) score = score * 1.15;
64
+ if (tags.find((x) => x.id === 'tg_smart')) score = score * 1.15;
65
+ if (tags.find((x) => x.id === 'tg_overkill')) score = score * 1.15;
66
+ if (tags.find((x) => x.id === 'tg_loading')) score = score * 0.85;
67
+
68
+ return Math.ceil(score).toString();
69
+ }
70
+
71
+ function rangedAp(x) {
72
+ let score = 0;
73
+ const tags = x.tags || [];
74
+ if (
75
+ x.type.toLowerCase() === 'melee' ||
76
+ !x.range ||
77
+ !x.range.length ||
78
+ !x.damage ||
79
+ !x.damage.length
80
+ )
81
+ return score.toString();
82
+ x.damage.forEach((d) => {
83
+ score += getDamage(d, tags);
84
+ });
85
+ //collect range pts
86
+ x.range.forEach((r) => {
87
+ let rscore = 0;
88
+ if (typeof r.val === 'string') return 'XXXX';
89
+ if (r.type.toLowerCase() === 'range') {
90
+ if (r.val <= 10) score += r.val / 2;
91
+ else {
92
+ rscore += 5 + (r.val - 10);
93
+ }
94
+ }
95
+ if (r.type.toLowerCase() === 'blast') {
96
+ rscore += Math.pow(r.val * 3, 2) / 2;
97
+ }
98
+ if (r.type.toLowerCase() === 'burst') {
99
+ rscore += Math.pow(r.val * 3, 2) / 3;
100
+ }
101
+ if (r.type.toLowerCase() === 'cone') {
102
+ rscore += Math.pow(r.val, 2) / 2;
103
+ }
104
+ if (r.type.toLowerCase() === 'line') {
105
+ rscore += r.val * 2;
106
+ }
107
+ if (r.type.toLowerCase() === 'thrown') {
108
+ rscore = score / 3;
109
+ }
110
+ score += rscore;
111
+ });
112
+
113
+ if (tags.find((x) => x.id === 'tg_ap')) score = score * 1.35;
114
+ if (tags.find((x) => x.id === 'tg_arcing')) score = score * 1.15;
115
+ if (tags.find((x) => x.id === 'tg_smart')) score = score * 1.15;
116
+ if (tags.find((x) => x.id === 'tg_overkill')) score = score * 1.15;
117
+ if (tags.find((x) => x.id === 'tg_loading')) score = score * 0.85;
118
+
119
+ return Math.ceil(score).toString();
120
+ }
121
+
122
+ // let output = 'TYPE,ID,SOURCE,NAME,CQB,RANGED,SURVIVABILITY,MANEUVERABILITY,SUPPORT,CONTROL\n'
123
+ let output = 'SOURCE,NAME,MELEE,RANGED,SURVIVABILITY,MANEUVERABILITY,SUPPORT,CONTROL\n';
124
+
125
+ items.forEach((e) => {
126
+ e.forEach((x) => {
127
+ output += row(x);
128
+ });
129
+ });
130
+
131
+ fs.writeFile('./util/output/equipment.csv', output, function (err) {
132
+ if (err) return console.log(err);
133
+ console.log('Export Complete');
134
+ });
package/scripts/build.js CHANGED
@@ -1,14 +1,14 @@
1
- const zl = require('zip-lib');
2
-
3
- const info = require('../package.json');
4
-
5
- const filepath = './' + info.name + '-' + info.version + '.lcp';
6
-
7
- zl.archiveFolder('./lib', filepath).then(
8
- function () {
9
- console.log('done');
10
- },
11
- function (err) {
12
- console.log(err);
13
- }
14
- );
1
+ const zl = require('zip-lib');
2
+
3
+ const info = require('../package.json');
4
+
5
+ const filepath = './' + info.name + '-' + info.version + '.lcp';
6
+
7
+ zl.archiveFolder('./lib', filepath).then(
8
+ function () {
9
+ console.log('done');
10
+ },
11
+ function (err) {
12
+ console.log(err);
13
+ }
14
+ );
@@ -1,86 +1,86 @@
1
- SOURCE,NAME,MELEE,RANGED,SURVIVABILITY,MANUVERABILITY,SUPPORT,CONTROL
2
- GMS,ANTI-MATERIEL RIFLE,0,32,0,0,0,0
3
- GMS,ASSAULT RIFLE,0,14,0,0,0,0
4
- GMS,CHARGED BLADE,6,0,0,0,0,0
5
- GMS,CYCLONE PULSE RIFLE,0,63,0,0,0,0
6
- GMS,HEAVY CHARGED BLADE,14,0,0,0,0,0
7
- GMS,HEAVY MACHINE GUN,0,32,0,0,0,0
8
- GMS,HEAVY MELEE WEAPON,15,0,0,0,0,0
9
- GMS,HOWITZER,0,40,0,0,0,0
10
- GMS,MISSILE RACK,0,10,0,0,0,0
11
- GMS,MORTAR,0,21,0,0,0,0
12
- GMS,NEXUS (HUNTER-KILLER),0,9,0,0,0,0
13
- GMS,NEXUS (LIGHT),0,7,0,0,0,0
14
- GMS,PISTOL,0,7,0,0,0,0
15
- GMS,SEGMENT KNIFE,3,0,0,0,0,0
16
- GMS,ROCKET-PROPELLED GRENADE,0,24,0,0,0,0
17
- GMS,SHOTGUN,0,5,0,0,0,0
18
- GMS,TACTICAL KNIFE,2,0,0,0,0,0
19
- GMS,TACTICAL MELEE WEAPON,8,0,0,0,0,0
20
- GMS,THERMAL LANCE,0,30,0,0,0,0
21
- GMS,THERMAL PISTOL,0,10,0,0,0,0
22
- GMS,THERMAL RIFLE,0,8,0,0,0,0
23
- IPS-N,CHAIN AXE,9,0,0,0,0,0
24
- IPS-N,BRISTLECROWN FLECHETTE LAUNCHER,0,3,0,0,0,0
25
- IPS-N,NANOCARBON SWORD,33,0,0,0,0,0
26
- IPS-N,ASSAULT CANNON,0,14,0,0,0,0
27
- IPS-N,CONCUSSION MISSILES,0,4,0,0,0,0
28
- IPS-N,LEVIATHAN HEAVY ASSAULT CANNON,0,7,0,0,0,0
29
- IPS-N,CUTTER MKII PLASMA TORCH,0,0,0,0,0,0
30
- IPS-N,WAR PIKE,5,0,0,0,0,0
31
- IPS-N,POWER KNUCKLES,2,0,0,0,0,0
32
- IPS-N,HAND CANNON,0,7,0,0,0,0
33
- IPS-N,BOLT THROWER,0,25,0,0,0,0
34
- IPS-N,KINETIC HAMMER,32,0,0,0,0,0
35
- IPS-N,DECK-SWEEPER AUTOMATIC SHOTGUN,0,9,0,0,0,0
36
- IPS-N,DAISY CUTTER,0,47,0,0,0,0
37
- IPS-N,CATALYTIC HAMMER,6,0,0,0,0,0
38
- IPS-N,IMPACT LANCE,5,0,0,0,0,0
39
- IPS-N,IMPALER NAILGUN,0,8,0,0,0,0
40
- IPS-N,COMBAT DRILL,39,0,0,0,0,0
41
- SSC,MAGNETIC CANNON,0,18,0,0,0,0
42
- SSC,VULTURE DMR,0,19,0,0,0,0
43
- SSC,RAILGUN,0,71,0,0,0,0
44
- SSC,VEIL RIFLE,0,23,0,0,0,0
45
- SSC,BURST LAUNCHER,0,14,0,0,0,0
46
- SSC,RAIL RIFLE,0,25,0,0,0,0
47
- SSC,SHOCK KNIFE,0,0,0,0,0,0
48
- SSC,SHARANGA MISSILES,0,12,0,0,0,0
49
- SSC,GANDIVA MISSILES,0,25,0,0,0,0
50
- SSC,PINAKA MISSILES,0,34,0,0,0,0
51
- SSC,FOLD KNIFE,2,0,0,0,0,0
52
- SSC,VIJAYA ROCKETS,0,4,0,0,0,0
53
- SSC,VARIABLE SWORD,0,0,0,0,0,0
54
- SSC,ORACLE LMG-I,0,14,0,0,0,0
55
- HORUS,NANOBOT WHIP,23,0,0,0,0,0
56
- HORUS,SWARM/HIVE NANITES,0,3,0,0,0,0
57
- HORUS,AUTOPOD,0,10,0,0,0,0
58
- HORUS,VORPAL GUN,0,13,0,0,0,0
59
- HORUS,GHOUL NEXUS,0,10,0,0,0,0
60
- HORUS,GHAST NEXUS,0,18,0,0,0,0
61
- HORUS,ANNIHILATION NEXUS,0,35,0,0,0,0
62
- HORUS,CATALYST PISTOL,0,6,0,0,0,0
63
- HORUS,ARC PROJECTOR,0,8,0,0,0,0
64
- HORUS,SMARTGUN,0,12,0,0,0,0
65
- HORUS,MIMIC GUN,0,NaN,0,0,0,0
66
- HORUS,AUTOGUN,0,10,0,0,0,0
67
- HA,SIEGE CANNON,0,23,0,0,0,0
68
- HA,KRAKATOA THERMOBARIC FLAMETHROWER,0,13,0,0,0,0
69
- HA,PLASMA THROWER,0,52,0,0,0,0
70
- HA,STUB CANNON,0,3,0,0,0,0
71
- HA,GRAVITY GUN,0,0,0,0,0,0
72
- HA,DISPLACER,0,11,0,0,0,0
73
- HA,SHATTERHEAD COLONY MISSILES,0,14,0,0,0,0
74
- HA,SOL-PATTERN LASER RIFLE,0,7,0,0,0,0
75
- HA,ANDROMEDA-PATTERN HEAVY LASER RIFLE,0,17,0,0,0,0
76
- HA,TACHYON LANCE,0,25,0,0,0,0
77
- HA,ANNIHILATOR,0,8,0,0,0,0
78
- HA,TORCH,3,0,0,0,0,0
79
- ,Fuel Rod Gun,0,5,0,0,0,0
80
- ,Prototype Weapon,0,15,0,0,0,0
81
- ,Prototype Weapon,0,15,0,0,0,0
82
- ,Prototype Weapon,0,21,0,0,0,0
83
- undefined,Latch Drone,0,0,0,0,0,0
84
- undefined,M35 Mjolnir,0,0,0,0,0,0
85
- undefined,Apocalypse Rail,0,0,0,0,0,0
86
- undefined,ZF4 SOLIDCORE,0,0,0,0,0,0
1
+ SOURCE,NAME,MELEE,RANGED,SURVIVABILITY,MANUVERABILITY,SUPPORT,CONTROL
2
+ GMS,ANTI-MATERIEL RIFLE,0,32,0,0,0,0
3
+ GMS,ASSAULT RIFLE,0,14,0,0,0,0
4
+ GMS,CHARGED BLADE,6,0,0,0,0,0
5
+ GMS,CYCLONE PULSE RIFLE,0,63,0,0,0,0
6
+ GMS,HEAVY CHARGED BLADE,14,0,0,0,0,0
7
+ GMS,HEAVY MACHINE GUN,0,32,0,0,0,0
8
+ GMS,HEAVY MELEE WEAPON,15,0,0,0,0,0
9
+ GMS,HOWITZER,0,40,0,0,0,0
10
+ GMS,MISSILE RACK,0,10,0,0,0,0
11
+ GMS,MORTAR,0,21,0,0,0,0
12
+ GMS,NEXUS (HUNTER-KILLER),0,9,0,0,0,0
13
+ GMS,NEXUS (LIGHT),0,7,0,0,0,0
14
+ GMS,PISTOL,0,7,0,0,0,0
15
+ GMS,SEGMENT KNIFE,3,0,0,0,0,0
16
+ GMS,ROCKET-PROPELLED GRENADE,0,24,0,0,0,0
17
+ GMS,SHOTGUN,0,5,0,0,0,0
18
+ GMS,TACTICAL KNIFE,2,0,0,0,0,0
19
+ GMS,TACTICAL MELEE WEAPON,8,0,0,0,0,0
20
+ GMS,THERMAL LANCE,0,30,0,0,0,0
21
+ GMS,THERMAL PISTOL,0,10,0,0,0,0
22
+ GMS,THERMAL RIFLE,0,8,0,0,0,0
23
+ IPS-N,CHAIN AXE,9,0,0,0,0,0
24
+ IPS-N,BRISTLECROWN FLECHETTE LAUNCHER,0,3,0,0,0,0
25
+ IPS-N,NANOCARBON SWORD,33,0,0,0,0,0
26
+ IPS-N,ASSAULT CANNON,0,14,0,0,0,0
27
+ IPS-N,CONCUSSION MISSILES,0,4,0,0,0,0
28
+ IPS-N,LEVIATHAN HEAVY ASSAULT CANNON,0,7,0,0,0,0
29
+ IPS-N,CUTTER MKII PLASMA TORCH,0,0,0,0,0,0
30
+ IPS-N,WAR PIKE,5,0,0,0,0,0
31
+ IPS-N,POWER KNUCKLES,2,0,0,0,0,0
32
+ IPS-N,HAND CANNON,0,7,0,0,0,0
33
+ IPS-N,BOLT THROWER,0,25,0,0,0,0
34
+ IPS-N,KINETIC HAMMER,32,0,0,0,0,0
35
+ IPS-N,DECK-SWEEPER AUTOMATIC SHOTGUN,0,9,0,0,0,0
36
+ IPS-N,DAISY CUTTER,0,47,0,0,0,0
37
+ IPS-N,CATALYTIC HAMMER,6,0,0,0,0,0
38
+ IPS-N,IMPACT LANCE,5,0,0,0,0,0
39
+ IPS-N,IMPALER NAILGUN,0,8,0,0,0,0
40
+ IPS-N,COMBAT DRILL,39,0,0,0,0,0
41
+ SSC,MAGNETIC CANNON,0,18,0,0,0,0
42
+ SSC,VULTURE DMR,0,19,0,0,0,0
43
+ SSC,RAILGUN,0,71,0,0,0,0
44
+ SSC,VEIL RIFLE,0,23,0,0,0,0
45
+ SSC,BURST LAUNCHER,0,14,0,0,0,0
46
+ SSC,RAIL RIFLE,0,25,0,0,0,0
47
+ SSC,SHOCK KNIFE,0,0,0,0,0,0
48
+ SSC,SHARANGA MISSILES,0,12,0,0,0,0
49
+ SSC,GANDIVA MISSILES,0,25,0,0,0,0
50
+ SSC,PINAKA MISSILES,0,34,0,0,0,0
51
+ SSC,FOLD KNIFE,2,0,0,0,0,0
52
+ SSC,VIJAYA ROCKETS,0,4,0,0,0,0
53
+ SSC,VARIABLE SWORD,0,0,0,0,0,0
54
+ SSC,ORACLE LMG-I,0,14,0,0,0,0
55
+ HORUS,NANOBOT WHIP,23,0,0,0,0,0
56
+ HORUS,SWARM/HIVE NANITES,0,3,0,0,0,0
57
+ HORUS,AUTOPOD,0,10,0,0,0,0
58
+ HORUS,VORPAL GUN,0,13,0,0,0,0
59
+ HORUS,GHOUL NEXUS,0,10,0,0,0,0
60
+ HORUS,GHAST NEXUS,0,18,0,0,0,0
61
+ HORUS,ANNIHILATION NEXUS,0,35,0,0,0,0
62
+ HORUS,CATALYST PISTOL,0,6,0,0,0,0
63
+ HORUS,ARC PROJECTOR,0,8,0,0,0,0
64
+ HORUS,SMARTGUN,0,12,0,0,0,0
65
+ HORUS,MIMIC GUN,0,NaN,0,0,0,0
66
+ HORUS,AUTOGUN,0,10,0,0,0,0
67
+ HA,SIEGE CANNON,0,23,0,0,0,0
68
+ HA,KRAKATOA THERMOBARIC FLAMETHROWER,0,13,0,0,0,0
69
+ HA,PLASMA THROWER,0,52,0,0,0,0
70
+ HA,STUB CANNON,0,3,0,0,0,0
71
+ HA,GRAVITY GUN,0,0,0,0,0,0
72
+ HA,DISPLACER,0,11,0,0,0,0
73
+ HA,SHATTERHEAD COLONY MISSILES,0,14,0,0,0,0
74
+ HA,SOL-PATTERN LASER RIFLE,0,7,0,0,0,0
75
+ HA,ANDROMEDA-PATTERN HEAVY LASER RIFLE,0,17,0,0,0,0
76
+ HA,TACHYON LANCE,0,25,0,0,0,0
77
+ HA,ANNIHILATOR,0,8,0,0,0,0
78
+ HA,TORCH,3,0,0,0,0,0
79
+ ,Fuel Rod Gun,0,5,0,0,0,0
80
+ ,Prototype Weapon,0,15,0,0,0,0
81
+ ,Prototype Weapon,0,15,0,0,0,0
82
+ ,Prototype Weapon,0,21,0,0,0,0
83
+ undefined,Latch Drone,0,0,0,0,0,0
84
+ undefined,M35 Mjolnir,0,0,0,0,0,0
85
+ undefined,Apocalypse Rail,0,0,0,0,0,0
86
+ undefined,ZF4 SOLIDCORE,0,0,0,0,0,0
package/scripts/test.js CHANGED
@@ -1,19 +1,19 @@
1
- const fs = require('fs');
2
- var currentDir = process.cwd();
3
- var files = fs.readdirSync('./lib');
4
- let contents = ""
5
- let valid = true
6
-
7
- files.forEach(filename => {
8
- contents = fs.readFileSync(`./lib/${filename}`, 'utf-8')
9
- try {
10
- JSON.parse(contents)
11
- } catch (e) {
12
- console.error(`invalid JSON in ${filename}`);
13
- valid = false;
14
- }
15
- });
16
-
17
- if (!valid) {
18
- throw "One or more JSON files are invalid."
19
- }
1
+ const fs = require('fs');
2
+ var currentDir = process.cwd();
3
+ var files = fs.readdirSync('./lib');
4
+ let contents = ""
5
+ let valid = true
6
+
7
+ files.forEach(filename => {
8
+ contents = fs.readFileSync(`./lib/${filename}`, 'utf-8')
9
+ try {
10
+ JSON.parse(contents)
11
+ } catch (e) {
12
+ console.error(`invalid JSON in ${filename}`);
13
+ valid = false;
14
+ }
15
+ });
16
+
17
+ if (!valid) {
18
+ throw "One or more JSON files are invalid."
19
+ }