feat: catch & log invalid items to discord webhook
This commit is contained in:
parent
ca3b145a0c
commit
884ef30c79
6 changed files with 968 additions and 2 deletions
276
judd/package-lock.json
generated
276
judd/package-lock.json
generated
|
|
@ -9,6 +9,7 @@
|
|||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^14.25.1",
|
||||
"express": "^4.18.2",
|
||||
"express-subdomain": "^1.0.5",
|
||||
"joi": "^17.7.0",
|
||||
|
|
@ -1126,6 +1127,136 @@
|
|||
"node": ">=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/builders": {
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.13.1.tgz",
|
||||
"integrity": "sha512-cOU0UDHc3lp/5nKByDxkmRiNZBpdp0kx55aarbiAfakfKJHlxv/yFW1zmIqCAmwH5CRlrH9iMFKJMpvW4DPB+w==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@discordjs/formatters": "^0.6.2",
|
||||
"@discordjs/util": "^1.2.0",
|
||||
"@sapphire/shapeshift": "^4.0.0",
|
||||
"discord-api-types": "^0.38.33",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"ts-mixer": "^6.0.4",
|
||||
"tslib": "^2.6.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.11.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/collection": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz",
|
||||
"integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=16.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/formatters": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.6.2.tgz",
|
||||
"integrity": "sha512-y4UPwWhH6vChKRkGdMB4odasUbHOUwy7KL+OVwF86PvT6QVOwElx+TiI1/6kcmcEe+g5YRXJFiXSXUdabqZOvQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"discord-api-types": "^0.38.33"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.11.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/rest": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.6.0.tgz",
|
||||
"integrity": "sha512-RDYrhmpB7mTvmCKcpj+pc5k7POKszS4E2O9TYc+U+Y4iaCP+r910QdO43qmpOja8LRr1RJ0b3U+CqVsnPqzf4w==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@discordjs/collection": "^2.1.1",
|
||||
"@discordjs/util": "^1.1.1",
|
||||
"@sapphire/async-queue": "^1.5.3",
|
||||
"@sapphire/snowflake": "^3.5.3",
|
||||
"@vladfrangu/async_event_emitter": "^2.4.6",
|
||||
"discord-api-types": "^0.38.16",
|
||||
"magic-bytes.js": "^1.10.0",
|
||||
"tslib": "^2.6.3",
|
||||
"undici": "6.21.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/rest/node_modules/@discordjs/collection": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
|
||||
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/util": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.2.0.tgz",
|
||||
"integrity": "sha512-3LKP7F2+atl9vJFhaBjn4nOaSWahZ/yWjOvA4e5pnXkt2qyXRCHLxoBQy81GFtLGCq7K9lPm9R517M1U+/90Qg==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"discord-api-types": "^0.38.33"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/ws": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.3.tgz",
|
||||
"integrity": "sha512-wPlQDxEmlDg5IxhJPuxXr3Vy9AjYq5xCvFWGJyD7w7Np8ZGu+Mc+97LCoEc/+AYCo2IDpKioiH0/c/mj5ZR9Uw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@discordjs/collection": "^2.1.0",
|
||||
"@discordjs/rest": "^2.5.1",
|
||||
"@discordjs/util": "^1.1.0",
|
||||
"@sapphire/async-queue": "^1.5.2",
|
||||
"@types/ws": "^8.5.10",
|
||||
"@vladfrangu/async_event_emitter": "^2.2.4",
|
||||
"discord-api-types": "^0.38.1",
|
||||
"tslib": "^2.6.2",
|
||||
"ws": "^8.17.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.11.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@discordjs/ws/node_modules/@discordjs/collection": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
|
||||
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/@hapi/hoek": {
|
||||
"version": "9.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
|
||||
|
|
@ -1151,6 +1282,39 @@
|
|||
"sparse-bitfield": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@sapphire/async-queue": {
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz",
|
||||
"integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=v14.0.0",
|
||||
"npm": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@sapphire/shapeshift": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz",
|
||||
"integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"lodash": "^4.17.21"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=v16"
|
||||
}
|
||||
},
|
||||
"node_modules/@sapphire/snowflake": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz",
|
||||
"integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=v14.0.0",
|
||||
"npm": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@sideway/address": {
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
|
||||
|
|
@ -1838,6 +2002,25 @@
|
|||
"@types/webidl-conversions": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/ws": {
|
||||
"version": "8.18.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
|
||||
"integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@vladfrangu/async_event_emitter": {
|
||||
"version": "2.4.7",
|
||||
"resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.7.tgz",
|
||||
"integrity": "sha512-Xfe6rpCTxSxfbswi/W/Pz7zp1WWSNn4A0eW4mLkQUewCrXXtMj31lCg+iQyTkh/CkusZSq9eDflu7tjEDXUY6g==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=v14.0.0",
|
||||
"npm": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/accepts": {
|
||||
"version": "1.3.8",
|
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
|
||||
|
|
@ -2108,6 +2291,42 @@
|
|||
"npm": "1.2.8000 || >= 1.4.16"
|
||||
}
|
||||
},
|
||||
"node_modules/discord-api-types": {
|
||||
"version": "0.38.42",
|
||||
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.38.42.tgz",
|
||||
"integrity": "sha512-qs1kya7S84r5RR8m9kgttywGrmmoHaRifU1askAoi+wkoSefLpZP6aGXusjNw5b0jD3zOg3LTwUa3Tf2iHIceQ==",
|
||||
"license": "MIT",
|
||||
"workspaces": [
|
||||
"scripts/actions/documentation"
|
||||
]
|
||||
},
|
||||
"node_modules/discord.js": {
|
||||
"version": "14.25.1",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.25.1.tgz",
|
||||
"integrity": "sha512-2l0gsPOLPs5t6GFZfQZKnL1OJNYFcuC/ETWsW4VtKVD/tg4ICa9x+jb9bkPffkMdRpRpuUaO/fKkHCBeiCKh8g==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@discordjs/builders": "^1.13.0",
|
||||
"@discordjs/collection": "1.5.3",
|
||||
"@discordjs/formatters": "^0.6.2",
|
||||
"@discordjs/rest": "^2.6.0",
|
||||
"@discordjs/util": "^1.2.0",
|
||||
"@discordjs/ws": "^1.2.3",
|
||||
"@sapphire/snowflake": "3.5.3",
|
||||
"discord-api-types": "^0.38.33",
|
||||
"fast-deep-equal": "3.1.3",
|
||||
"lodash.snakecase": "4.1.1",
|
||||
"magic-bytes.js": "^1.10.0",
|
||||
"tslib": "^2.6.3",
|
||||
"undici": "6.21.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/dottie": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz",
|
||||
|
|
@ -2240,6 +2459,12 @@
|
|||
"integrity": "sha512-A51MvQhk5L3aDV4s5XcKrn5I0bCFOk95xikJjlDWNUrtiAaCjy44RjvBz4uLRH0nCvt8Y3SKt1EvxUUmGJ5QRQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-xml-parser": {
|
||||
"version": "5.3.6",
|
||||
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.6.tgz",
|
||||
|
|
@ -2496,6 +2721,18 @@
|
|||
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash.snakecase": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
|
||||
"integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/magic-bytes.js": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.13.0.tgz",
|
||||
"integrity": "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/math-intrinsics": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
||||
|
|
@ -3444,12 +3681,17 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/ts-mixer": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz",
|
||||
"integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/tslib": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||
"license": "0BSD",
|
||||
"optional": true
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/type-is": {
|
||||
"version": "1.6.18",
|
||||
|
|
@ -3476,6 +3718,15 @@
|
|||
"integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "6.21.3",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz",
|
||||
"integrity": "sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18.17"
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "7.18.2",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
|
||||
|
|
@ -3564,6 +3815,27 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.19.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
|
||||
"integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
"optional": true
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^14.25.1",
|
||||
"express": "^4.18.2",
|
||||
"express-subdomain": "^1.0.5",
|
||||
"joi": "^17.7.0",
|
||||
|
|
|
|||
5
judd/routes/blacklist.json
Normal file
5
judd/routes/blacklist.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"weapons": [1000, 1001, 1002, 1003, 1100, 1200, 1800, 1801, 2000, 2001, 2002, 2003, 5000],
|
||||
"clothes": [26061, 26062, 26063, 26064, 26065, 26066, 26067, 26068, 26069, 26070, 26071, 26072, 26073, 26074, 26075, 26076, 26077, 26078, 26079, 26080, 26081, 26082, 26083, 26084, 26085, 26086, 26087, 26088, 26089, 26090, 26091, 26092, 26093, 26094, 26095, 26096, 26097, 26098, 26099, 26100, 26101, 26102, 26103, 26104, 26105, 26106, 26107, 26108, 26109, 26110, 26111, 26112, 26113, 26114, 26115, 26116, 26117, 26118, 26119, 26120, 26121, 26122, 26123, 26124, 26125, 26126, 26127, 26128, 26129, 26130, 26131, 26132, 26133, 26134, 26135, 26136],
|
||||
"rules": [-1]
|
||||
}
|
||||
644
judd/routes/ids.json
Normal file
644
judd/routes/ids.json
Normal file
|
|
@ -0,0 +1,644 @@
|
|||
{
|
||||
"rules": {
|
||||
"-1": "cNone (ID=-1)",
|
||||
"0": "Turf War (ID=0)",
|
||||
"1": "Rainmaker (ID=1)",
|
||||
"2": "Splat Zones (ID=2)",
|
||||
"3": "Tower Control (ID=3)"
|
||||
},
|
||||
"modes": {
|
||||
"0": "Turf War (ID=0)",
|
||||
"1": "Ranked Battles (ID=1)",
|
||||
"2": "Splatfest (ID=2)",
|
||||
"3": "Private Battle (ID=3)",
|
||||
"4": "Squad Battle (ID=4)"
|
||||
},
|
||||
"maps": {
|
||||
"0": "Urchin Underpass (ID=0)",
|
||||
"1": "Walleye Warehouse (ID=1)",
|
||||
"2": "Saltspray Rig (ID=2)",
|
||||
"3": "Arowana Mall (ID=3)",
|
||||
"4": "Blackbelly Skatepark (ID=4)",
|
||||
"5": "Camp Triggerfish (ID=5)",
|
||||
"6": "Port Mackerel (ID=6)",
|
||||
"7": "Kelp Dome (ID=7)",
|
||||
"8": "Moray Towers (ID=8)",
|
||||
"9": "Bluefin Depot (ID=9)",
|
||||
"10": "Hammerhead Bridge (ID=10)",
|
||||
"11": "Flounder Heights (ID=11)",
|
||||
"12": "Museum d'Alfonsino (ID=12)",
|
||||
"13": "Ancho-V Games (ID=13)",
|
||||
"14": "Piranha Pit (ID=14)",
|
||||
"15": "Mahi-Mahi Resort (ID=15)"
|
||||
},
|
||||
"weapons_main": {
|
||||
"100": "Sploosh-o-matic (ID=100)",
|
||||
"101": "Neo Sploosh-o-matic (ID=101)",
|
||||
"102": "Splattershot Jr. (ID=102)",
|
||||
"103": "Custom Splattershot Jr. (ID=103)",
|
||||
"104": "Splash-o-matic (ID=104)",
|
||||
"105": "Neo Splash-o-matic (ID=105)",
|
||||
"106": "Aerospray MG (ID=106)",
|
||||
"107": "Aerospray RG (ID=107)",
|
||||
"108": "Splattershot (ID=108)",
|
||||
"109": "Tentatek Splattershot (ID=109)",
|
||||
"110": "Hero Shot Replica (ID=110)",
|
||||
"111": "Octoshot Replica (ID=111)",
|
||||
"112": ".52 Gal (ID=112)",
|
||||
"113": ".52 Gal Deco (ID=113)",
|
||||
"114": "N-ZAP '85 (ID=114)",
|
||||
"115": "N-ZAP '89 (ID=115)",
|
||||
"116": "Splattershot Pro (ID=116)",
|
||||
"117": "Forge Splattershot Pro (ID=117)",
|
||||
"118": ".96 Gal (ID=118)",
|
||||
"119": ".96 Gal Deco (ID=119)",
|
||||
"120": "Dual Squelcher (ID=120)",
|
||||
"121": "Custom Dual Squelcher (ID=121)",
|
||||
"122": "Jet Squelcher (ID=122)",
|
||||
"123": "Custom Jet Squelcher (ID=123)",
|
||||
"124": "Luna Blaster (ID=124)",
|
||||
"125": "Luna Blaster Neo (ID=125)",
|
||||
"126": "Blaster (ID=126)",
|
||||
"127": "Custom Blaster (ID=127)",
|
||||
"128": "Range Blaster (ID=128)",
|
||||
"129": "Custom Range Blaster (ID=129)",
|
||||
"130": "Rapid Blaster (ID=130)",
|
||||
"131": "Rapid Blaster Deco (ID=131)",
|
||||
"132": "Rapid Blaster Pro (ID=132)",
|
||||
"133": "Rapid Blaster Pro Deco (ID=133)",
|
||||
"134": "L-3 Nozzlenose (ID=134)",
|
||||
"135": "L-3 Nozzlenose D (ID=135)",
|
||||
"136": "H-3 Nozzlenose (ID=136)",
|
||||
"137": "H-3 Nozzlenose D (ID=137)",
|
||||
"138": "Wasabi Splattershot (ID=138)",
|
||||
"139": "Berry Splattershot Pro (ID=139)",
|
||||
"140": "Sploosh-o-matic 7 (ID=140)",
|
||||
"141": "Aerospray PG (ID=141)",
|
||||
"142": "N-ZAP '83 (ID=142)",
|
||||
"143": "Grim Range Blaster (ID=143)",
|
||||
"144": "Cherry H-3 Nozzlenose (ID=144)",
|
||||
"200": "Carbon Roller (ID=200)",
|
||||
"201": "Carbon Roller Deco (ID=201)",
|
||||
"202": "Splat Roller (ID=202)",
|
||||
"203": "Krak-On Splat Roller (ID=203)",
|
||||
"204": "Hero Roller Replica (ID=204)",
|
||||
"205": "Dynamo Roller (ID=205)",
|
||||
"206": "Gold Dynamo Roller (ID=206)",
|
||||
"207": "Inkbrush (ID=207)",
|
||||
"208": "Inkbrush Nouveau (ID=208)",
|
||||
"209": "Octobrush (ID=209)",
|
||||
"210": "Octobrush Nouveau (ID=210)",
|
||||
"211": "Tempered Dynamo Roller (ID=211)",
|
||||
"212": "Permanent Inkbrush (ID=212)",
|
||||
"213": "CoroCoro Splat Roller (ID=213)",
|
||||
"300": "Classic Squiffer (ID=300)",
|
||||
"301": "New Squiffer (ID=301)",
|
||||
"302": "Splat Charger (ID=302)",
|
||||
"303": "Kelp Splat Charger (ID=303)",
|
||||
"304": "Hero Charger Replica (ID=304)",
|
||||
"305": "Splatterscope (ID=305)",
|
||||
"306": "Kelp Splatterscope (ID=306)",
|
||||
"307": "E-liter 3K (ID=307)",
|
||||
"308": "Custom E-liter 3K (ID=308)",
|
||||
"309": "E-liter 3K Scope (ID=309)",
|
||||
"310": "Custom E-liter 3K Scope (ID=310)",
|
||||
"311": "Bamboozler 14 Mk I (ID=311)",
|
||||
"312": "Bamboozler 14 Mk II (ID=312)",
|
||||
"313": "Fresh Squiffer (ID=313)",
|
||||
"314": "Bamboozler 14 Mk III (ID=314)",
|
||||
"315": "Bento Splat Charger (ID=315)",
|
||||
"316": "Bento Splatterscope (ID=316)",
|
||||
"400": "Slosher (ID=400)",
|
||||
"401": "Slosher Deco (ID=401)",
|
||||
"402": "Tri-Slosher (ID=402)",
|
||||
"403": "Tri-Slosher Nouveau (ID=403)",
|
||||
"404": "Sloshing Machine (ID=404)",
|
||||
"405": "Sloshing Machine Neo (ID=405)",
|
||||
"406": "Soda Slosher (ID=406)",
|
||||
"500": "Mini Splatling (ID=500)",
|
||||
"501": "Zink Mini Splatling (ID=501)",
|
||||
"502": "Heavy Splatling (ID=502)",
|
||||
"503": "Heavy Splatling Deco (ID=503)",
|
||||
"504": "Hydra Splatling (ID=504)",
|
||||
"505": "Custom Hydra Splatling (ID=505)",
|
||||
"506": "Refurbished Mini Splatling (ID=506)",
|
||||
"507": "Heavy Splatling Remix (ID=507)",
|
||||
"1000": "?Shot_Msn0Lv0 (ID=1000)",
|
||||
"1001": "?Shot_Msn0Lv1 (ID=1001)",
|
||||
"1002": "?Shot_Msn0Lv2 (ID=1002)",
|
||||
"1003": "?Shot_Msn0Lv3 (ID=1003)",
|
||||
"1100": "?Roller_Mission (ID=1100)",
|
||||
"1200": "?Charge_Mission (ID=1200)",
|
||||
"1800": "?BigBall_SpecAdjust01 (ID=1800)",
|
||||
"1801": "?BigBall_SpecAdjust02 (ID=1801)",
|
||||
"2000": "?Shot_Rvl0Lv0 (ID=2000)",
|
||||
"2001": "?Shot_Rvl0Lv1 (ID=2001)",
|
||||
"2002": "?Shot_Rvl0Lv2 (ID=2002)",
|
||||
"2003": "?Shot_Rvl0Lv3 (ID=2003)",
|
||||
"5000": "?Roller_KingSquid (ID=5000)"
|
||||
},
|
||||
"sub_weapons": {
|
||||
"0": "Splat Bomb (ID=0)",
|
||||
"1": "Suction Bomb (ID=1)",
|
||||
"2": "Burst Bomb (ID=2)",
|
||||
"3": "Seeker (ID=3)",
|
||||
"4": "Point Sensor (ID=4)",
|
||||
"5": "Ink Mine (ID=5)",
|
||||
"6": "Sprinkler (ID=6)",
|
||||
"7": "Squid Beakon (ID=7)",
|
||||
"8": "Splashwall (ID=8)",
|
||||
"9": "Disruptor (ID=9)",
|
||||
"1000": "?Bomb_Msn0Lv0 (ID=1000)",
|
||||
"1001": "?Bomb_Msn0Lv1 (ID=1001)",
|
||||
"1002": "?Bomb_Msn0Lv2 (ID=1002)",
|
||||
"1003": "?Bomb_Msn0Lv3 (ID=1003)",
|
||||
"1100": "?Bomb_Msn1Lv0 (ID=1100)",
|
||||
"1101": "?Bomb_Msn1Lv1 (ID=1101)",
|
||||
"1102": "?Bomb_Msn1Lv2 (ID=1102)",
|
||||
"1103": "?Bomb_Msn1Lv3 (ID=1103)",
|
||||
"1200": "?Bomb_Msn2Lv0 (ID=1200)",
|
||||
"1201": "?Bomb_Msn2Lv1 (ID=1201)",
|
||||
"1202": "?Bomb_Msn2Lv2 (ID=1202)",
|
||||
"1203": "?Bomb_Msn2Lv3 (ID=1203)",
|
||||
"2000": "?Bomb_Rvl0Lv0 (ID=2000)",
|
||||
"2001": "?Bomb_Rvl0Lv1 (ID=2001)",
|
||||
"2002": "?Bomb_Rvl0Lv2 (ID=2002)",
|
||||
"2003": "?Bomb_Rvl0Lv3 (ID=2003)"
|
||||
},
|
||||
"specials": {
|
||||
"0": "Inkzooka (ID=0)",
|
||||
"1": "Killer Wail (ID=1)",
|
||||
"2": "Inkstrike (ID=2)",
|
||||
"3": "Bubbler (ID=3)",
|
||||
"4": "Bomb Rush (ID=4)",
|
||||
"5": "Kraken (ID=5)",
|
||||
"6": "Echolocator (ID=6)",
|
||||
"7": "Rainmaker (ID=7)"
|
||||
},
|
||||
"headgear": {
|
||||
"0": "ARINOMAMA (ID=0)",
|
||||
"1": "White Headband (ID=1)",
|
||||
"1000": "Urchins Cap (ID=1000)",
|
||||
"1001": "Lightweight Cap (ID=1001)",
|
||||
"1002": "Takoroka Mesh (ID=1002)",
|
||||
"1003": "Fashion Cap (ID=1003)",
|
||||
"1004": "Squid-Stitch Cap (ID=1004)",
|
||||
"1005": "Squidvader Cap (ID=1005)",
|
||||
"1006": "Camo Mesh Cap (ID=1006)",
|
||||
"1007": "5-Panel Cap (ID=1007)",
|
||||
"1008": "Zekko Mesh (ID=1008)",
|
||||
"1009": "Backwards Cap (ID=1009)",
|
||||
"1010": "2-Stripe Mesh Cap (ID=1010)",
|
||||
"1011": "Jet Cap (ID=1011)",
|
||||
"1012": "Cycling Cap (ID=1012)",
|
||||
"1013": "SQUID GIRL Hat (ID=1013)",
|
||||
"1014": "Cycle King Cap (ID=1014)",
|
||||
"1015": "Legendary Cap (ID=1015)",
|
||||
"1016": "CoroCoro Cap (ID=1016)",
|
||||
"2000": "Bobble Hat (ID=2000)",
|
||||
"2001": "Short Beanie (ID=2001)",
|
||||
"2002": "Striped Beanie (ID=2002)",
|
||||
"2003": "Sporty Bobble Hat (ID=2003)",
|
||||
"2004": "Special Forces Beret (ID=2004)",
|
||||
"2005": "Squid Nordic (ID=2005)",
|
||||
"3000": "Retro Specs (ID=3000)",
|
||||
"3001": "Splash Googles (ID=3001)",
|
||||
"3002": "Pilot Goggles (ID=3002)",
|
||||
"3003": "Colored Shadows (ID=3003)",
|
||||
"3004": "Black Arrowbands (ID=3004)",
|
||||
"3005": "Snorkel (ID=3005)",
|
||||
"3006": "White Arrowbands (ID=3006)",
|
||||
"3007": "Fake Contacts (ID=3007)",
|
||||
"3008": "18K Aviators (ID=3008)",
|
||||
"3009": "Full Moon Glasses (ID=3009)",
|
||||
"3010": "Octoglasses (ID=3010)",
|
||||
"4000": "Jungle Hat (ID=4000)",
|
||||
"4001": "Safari Hat (ID=4001)",
|
||||
"4002": "Camping Hat (ID=4002)",
|
||||
"4003": "Fugu Bell Hat (ID=4003)",
|
||||
"4004": "Bambo Hat (ID=4004)",
|
||||
"4005": "Straw Boater (ID=4005)",
|
||||
"4006": "Treasure Hunter (ID=4006)",
|
||||
"5000": "Studio Headphones (ID=5000)",
|
||||
"5001": "Colorful Headphones (ID=5001)",
|
||||
"5002": "Noise Cancellers (ID=5002)",
|
||||
"6000": "Golf Visor (ID=6000)",
|
||||
"6001": "FishFry Visor (ID=6001)",
|
||||
"6002": "Sun Visor (ID=6002)",
|
||||
"7000": "Cycle Helmet (ID=7000)",
|
||||
"7002": "Stealth Goggles (ID=7002)",
|
||||
"7003": "Tentacles Helmet (ID=7003)",
|
||||
"7004": "Skate Helmet (ID=7004)",
|
||||
"7005": "Visor Skate Helmet (ID=7005)",
|
||||
"8000": "Gas Mask (ID=8000)",
|
||||
"8001": "Paintball Mask (ID=8001)",
|
||||
"8002": "Paisley Bandana (ID=8002)",
|
||||
"8003": "Skull Bandana (ID=8003)",
|
||||
"9001": "B-Ball Headband (ID=9001)",
|
||||
"9002": "Squash Headband (ID=9002)",
|
||||
"9003": "Tennis Headband (ID=9003)",
|
||||
"9004": "Joggling Headband (ID=9004)",
|
||||
"9005": "Soccer Headband (ID=9005)",
|
||||
"9006": "Traditional Headband (ID=9006)",
|
||||
"25000": "Squid Hairclip (ID=25000)",
|
||||
"25001": "Samurai Helmet (ID=25001)",
|
||||
"25002": "Power Mask (ID=25002)",
|
||||
"27000": "Hero Headset Replica (ID=27000)",
|
||||
"27001": "?MSN001 (ID=27001)",
|
||||
"27002": "?MSN002 (ID=27002)",
|
||||
"27003": "?MSN003 (ID=27003)",
|
||||
"27004": "?MSN004 (ID=27004)",
|
||||
"28000": "Octoling Scope (ID=28000)",
|
||||
"28001": "ヘルメットライバル用強 (ID=28001)",
|
||||
"29003": "?SubInk_Save (ID=29003)",
|
||||
"29004": "?InkRecovery_Up (ID=29004)",
|
||||
"29005": "?HumanMove_Up (ID=29005)",
|
||||
"29006": "?SquidMove_Up (ID=29006)",
|
||||
"29007": "?SpecialIncrease_Up (ID=29007)",
|
||||
"29008": "?SpecialTime_Up (ID=29008)",
|
||||
"29009": "?RespawnTime_Save (ID=29009)",
|
||||
"29010": "?RespawnSpecialGauge_Save (ID=29010)",
|
||||
"29011": "?JumpTime_Save (ID=29011)",
|
||||
"29012": "?BombDistance_Up (ID=29012)",
|
||||
"29013": "?StartAllUp (ID=29013)",
|
||||
"29014": "?EndAllUp (ID=29014)",
|
||||
"29015": "?MinorityUp (ID=29015)",
|
||||
"29016": "?ComeBack (ID=29016)",
|
||||
"29500": "?SUP000 (ID=29500)",
|
||||
"29501": "?SUP001 (ID=29501)"
|
||||
},
|
||||
"clothes": {
|
||||
"0": "?NoClothes (ID=0)",
|
||||
"1": "Basic Tee (ID=1)",
|
||||
"1000": "White Tee (ID=1000)",
|
||||
"1001": "Black Squideye (ID=1001)",
|
||||
"1003": "Sky Blue Squideye (ID=1003)",
|
||||
"1004": "RockenBerg White (ID=1004)",
|
||||
"1005": "RockenBerg Black (ID=1005)",
|
||||
"1006": "Black Tee (ID=1006)",
|
||||
"1007": "Sunny Day Tee (ID=1007)",
|
||||
"1008": "Rainy Day Tee (ID=1008)",
|
||||
"1009": "Reggae Tee (ID=1009)",
|
||||
"1010": "Fugu Tee (ID=1010)",
|
||||
"1011": "Mint Tee (ID=1011)",
|
||||
"1012": "Grape Tee (ID=1012)",
|
||||
"1013": "Red Vector Tee (ID=1013)",
|
||||
"1014": "Grey Vector Tee (ID=1014)",
|
||||
"1015": "Blue Peaks Tee (ID=1015)",
|
||||
"1016": "Ivory Peaks Tee (ID=1016)",
|
||||
"1017": "Squid-Stitch Tee (ID=1017)",
|
||||
"1018": "Pirate Stripes Tee (ID=1018)",
|
||||
"1019": "Sailor Stripes Tee (ID=1019)",
|
||||
"1020": "White 8-Bit FishFry (ID=1020)",
|
||||
"1021": "Black 8-Bit FishFry (ID=1021)",
|
||||
"1022": "White Anchor Tee (ID=1022)",
|
||||
"1023": "Black Anchor Tee (ID=1023)",
|
||||
"1024": "White Line Tee (ID=1024)",
|
||||
"1025": "Black Pipe Tee (ID=1025)",
|
||||
"1026": "Carnivore Tee (ID=1026)",
|
||||
"1027": "Pearl Tee (ID=1027)",
|
||||
"1028": "Octo Tee (ID=1028)",
|
||||
"1029": "Herbivore Tee (ID=1029)",
|
||||
"2000": "White Striped LS (ID=2000)",
|
||||
"2001": "Black LS (ID=2001)",
|
||||
"2002": "Purple Camo LS (ID=2002)",
|
||||
"2003": "Navy Striped LS (ID=2003)",
|
||||
"2004": "Zekko Baseball LS (ID=2004)",
|
||||
"2005": "Varsity Baseball (ID=2005)",
|
||||
"2006": "Black Baseball LS (ID=2006)",
|
||||
"2007": "White Baseball LS (ID=2007)",
|
||||
"2008": "White LS (ID=2008)",
|
||||
"2009": "Green Striped LS (ID=2009)",
|
||||
"2010": "Squidmark LS (ID=2010)",
|
||||
"2011": "Zink LS (ID=2011)",
|
||||
"2012": "Striped Peaks LS (ID=2012)",
|
||||
"3000": "White Layered LS (ID=3000)",
|
||||
"3001": "Yellow Layered LS (ID=3001)",
|
||||
"3002": "Layered Camo LS (ID=3002)",
|
||||
"3003": "Black Layered LS (ID=3003)",
|
||||
"3004": "Zink Layered LS (ID=3004)",
|
||||
"3005": "Layered Anchor LS (ID=3005)",
|
||||
"3006": "Choco Layered LS (ID=3006)",
|
||||
"3007": "Part-Time Pirate (ID=3007)",
|
||||
"3008": "Layered Vector LS (ID=3008)",
|
||||
"3009": "Green Tee (ID=3009)",
|
||||
"4000": "Pink Shrimp Polo (ID=4000)",
|
||||
"4001": "Striped Rugby (ID=4001)",
|
||||
"4002": "Tricolor Rugby (ID=4002)",
|
||||
"4003": "Sage Green Polo (ID=4003)",
|
||||
"4004": "Black Polo (ID=4004)",
|
||||
"4005": "Cycling Shirt (ID=4005)",
|
||||
"4006": "Cycle King Jersey (ID=4006)",
|
||||
"4007": "Slipstream United (ID=4007)",
|
||||
"4008": "FC Albacore (ID=4008)",
|
||||
"5000": "Olive Ski Jacket (ID=5000)",
|
||||
"5002": "Berry Ski Jacket (ID=5002)",
|
||||
"5003": "Varsity Jacket (ID=5003)",
|
||||
"5004": "School Jersey (ID=5004)",
|
||||
"5005": "Green Cardigan (ID=5005)",
|
||||
"5006": "Black Inky Rider (ID=5006)",
|
||||
"5007": "White Inky Rider (ID=5007)",
|
||||
"5008": "Retro Gamer Jersey (ID=5008)",
|
||||
"5009": "Orange Cardigan (ID=5009)",
|
||||
"5010": "Forge Inkling Perka (ID=5010)",
|
||||
"5011": "Forge Octarian Jacket (ID=5011)",
|
||||
"5012": "Blue Sailor Suit (ID=5012)",
|
||||
"5013": "White Sailor Suit (ID=5013)",
|
||||
"5014": "Squid Satin Jacket (ID=5014)",
|
||||
"5015": "Zapfish Satin Jacket (ID=5015)",
|
||||
"5016": "Krak-On 528 (ID=5016)",
|
||||
"6000": "B-Ball Vest (Home) (ID=6000)",
|
||||
"6001": "B-Ball Vest (Away) (ID=6001)",
|
||||
"6002": "SQUID GIRL Tunic (ID=6002)",
|
||||
"7000": "Grey College Sweat (ID=7000)",
|
||||
"7001": "Squidmark Sweat (ID=7001)",
|
||||
"7002": "Retro Sweat (ID=7002)",
|
||||
"7003": "Firefin Sweat Navy (ID=7003)",
|
||||
"7004": "Navy Collage Sweat (ID=7004)",
|
||||
"7005": "Reel Sweat (ID=7005)",
|
||||
"7006": "Anchor Sweat (ID=7006)",
|
||||
"8000": "Lumberjack Shirt (ID=8000)",
|
||||
"8001": "Rodeo Shirt (ID=8001)",
|
||||
"8002": "Green Check Shirt (ID=8002)",
|
||||
"8003": "White Shirt (ID=8003)",
|
||||
"8004": "Urchins Jersey (ID=8004)",
|
||||
"8005": "Aloha Shirt (ID=8005)",
|
||||
"8006": "Red Check Shirt (ID=8006)",
|
||||
"8007": "Baby Jelly Shirt (ID=8007)",
|
||||
"8008": "Baseball Jersey (ID=8008)",
|
||||
"8009": "Grey Mixed Shirt (ID=8009)",
|
||||
"8010": "Vintage Check (ID=8010)",
|
||||
"8011": "Round Collar Shirt (ID=8011)",
|
||||
"8012": "Logo Aloha Shirt (ID=8012)",
|
||||
"8013": "Striped Shirt (ID=8013)",
|
||||
"8014": "Linen Shirt (ID=8014)",
|
||||
"8015": "Shirt and Tie (ID=8015)",
|
||||
"8016": "Traditional Apron (ID=8016)",
|
||||
"9000": "Mountain Gilet (ID=9000)",
|
||||
"9001": "Forest Gilet (ID=9001)",
|
||||
"9002": "Dark Urban Gilet (ID=9002)",
|
||||
"9003": "Yellow Urban Gilet (ID=9003)",
|
||||
"9004": "Squid Pattern Waistcoat (ID=9004)",
|
||||
"9005": "Squidstar Waistcoat (ID=9005)",
|
||||
"10000": "Camo Zip Hoodie (ID=10000)",
|
||||
"10001": "Green Zip Hoodie (ID=10001)",
|
||||
"10002": "Zekko Hoodie (ID=10002)",
|
||||
"10003": "CoroCoro Hoodie (ID=10003)",
|
||||
"25000": "School Uniform (ID=25000)",
|
||||
"25001": "Samurai Jacket (ID=25001)",
|
||||
"25002": "Power Armour (ID=25002)",
|
||||
"27000": "?MSN000 (ID=27000)",
|
||||
"27001": "?MSN001 (ID=27001)",
|
||||
"27002": "?MSN002 (ID=27002)",
|
||||
"27003": "?MSN003 (ID=27003)",
|
||||
"27004": "Armor Jacket Replica (ID=27004)",
|
||||
"28000": "Octoling Armor (ID=28000)",
|
||||
"26000": "Splatfest Tee (ID=26000)",
|
||||
"26001": "HAP001_A (ID=26001)",
|
||||
"26002": "Test_Clt_HAP001_B (ID=26002)",
|
||||
"26033": "Test_Clt_HAP1001_A (ID=26033)",
|
||||
"26034": "Test_Clt_HAP1001_B (ID=26034)",
|
||||
"26035": "Test_Clt_HAP2001_A (ID=26035)",
|
||||
"26036": "Test_Clt_HAP2001_B (ID=26036)",
|
||||
"26037": "Test_Clt_HAP3001_A (ID=26037)",
|
||||
"26038": "Test_Clt_HAP3001_B (ID=26038)",
|
||||
"26039": "Test_Clt_HAP1002_A (ID=26039)",
|
||||
"26040": "Test_Clt_HAP1002_B (ID=26040)",
|
||||
"26041": "Test_Clt_HAP2002_A (ID=26041)",
|
||||
"26042": "Test_Clt_HAP2002_B (ID=26042)",
|
||||
"26043": "Test_Clt_HAP3002_A (ID=26043)",
|
||||
"26044": "Test_Clt_HAP3002_B (ID=26044)",
|
||||
"26045": "Test_Clt_HAP1003_A (ID=26045)",
|
||||
"26046": "Test_Clt_HAP1003_B (ID=26046)",
|
||||
"26047": "Test_Clt_HAP2003_A (ID=26047)",
|
||||
"26048": "Test_Clt_HAP2003_B (ID=26048)",
|
||||
"26049": "Test_Clt_HAP3003_A (ID=26049)",
|
||||
"26050": "Test_Clt_HAP3003_B (ID=26050)",
|
||||
"26051": "Test_Clt_HAP1012_A (ID=26051)",
|
||||
"26052": "Test_Clt_HAP1012_B (ID=26052)",
|
||||
"26053": "Test_Clt_HAP2004_A (ID=26053)",
|
||||
"26054": "Test_Clt_HAP2004_B (ID=26054)",
|
||||
"26055": "Test_Clt_HAP3004_A (ID=26055)",
|
||||
"26056": "Test_Clt_HAP3004_B (ID=26056)",
|
||||
"26057": "Test_Clt_HAP1005_A (ID=26057)",
|
||||
"26058": "Test_Clt_HAP1005_B (ID=26058)",
|
||||
"26059": "Test_Clt_HAP2005_A (ID=26059)",
|
||||
"26060": "Test_Clt_HAP2005_B (ID=26060)",
|
||||
"26061": "Test Tee: ?HAP1007_A (ID=26061)",
|
||||
"26062": "Test Tee: ?HAP1007_B (ID=26062)",
|
||||
"26063": "Test Tee: ?HAP2006_A (ID=26063)",
|
||||
"26064": "Test Tee: ?HAP2006_B (ID=26064)",
|
||||
"26065": "Test Tee: ?HAP1008_A (ID=26065)",
|
||||
"26066": "Test Tee: ?HAP1008_B (ID=26066)",
|
||||
"26067": "Test Tee: ?HAP2007_A (ID=26067)",
|
||||
"26068": "Test Tee: ?HAP2007_B (ID=26068)",
|
||||
"26069": "Test Tee: ?HAP3007_A (ID=26069)",
|
||||
"26070": "Test Tee: ?HAP3007_B (ID=26070)",
|
||||
"26071": "Test Tee: ?HAP1009_A (ID=26071)",
|
||||
"26072": "Test Tee: ?HAP1009_B (ID=26072)",
|
||||
"26073": "Test Tee: ?HAP2008_A (ID=26073)",
|
||||
"26074": "Test Tee: ?HAP2008_B (ID=26074)",
|
||||
"26075": "Test Tee: ?HAP3008_A (ID=26075)",
|
||||
"26076": "Test Tee: ?HAP3008_B (ID=26076)",
|
||||
"26077": "Test Tee: ?HAP1015_A (ID=26077)",
|
||||
"26078": "Test Tee: ?HAP1015_B (ID=26078)",
|
||||
"26079": "Test Tee: ?HAP2009_A (ID=26079)",
|
||||
"26080": "Test Tee: ?HAP2009_B (ID=26080)",
|
||||
"26081": "Test Tee: ?HAP3009_A (ID=26081)",
|
||||
"26082": "Test Tee: ?HAP3009_B (ID=26082)",
|
||||
"26083": "Test Tee: ?HAP3010_A (ID=26083)",
|
||||
"26084": "Test Tee: ?HAP3010_B (ID=26084)",
|
||||
"26085": "Test Tee: ?HAP1011_A (ID=26085)",
|
||||
"26086": "Test Tee: ?HAP1011_B (ID=26086)",
|
||||
"26087": "Test Tee: ?HAP2011_A (ID=26087)",
|
||||
"26088": "Test Tee: ?HAP2011_B (ID=26088)",
|
||||
"26089": "Test Tee: ?HAP3011_A (ID=26089)",
|
||||
"26090": "Test Tee: ?HAP3011_B (ID=26090)",
|
||||
"26091": "Test Tee: ?HAP3012_A (ID=26091)",
|
||||
"26092": "Test Tee: ?HAP3012_B (ID=26092)",
|
||||
"26093": "Test Tee: ?HAP1013_A (ID=26093)",
|
||||
"26094": "Test Tee: ?HAP1013_B (ID=26094)",
|
||||
"26095": "Test Tee: ?HAP3013_A (ID=26095)",
|
||||
"26096": "Test Tee: ?HAP3013_B (ID=26096)",
|
||||
"26097": "Test Tee: ?HAP1017_A (ID=26097)",
|
||||
"26098": "Test Tee: ?HAP1017_B (ID=26098)",
|
||||
"26099": "Test Tee: ?HAP1018_A (ID=26099)",
|
||||
"26100": "Test Tee: ?HAP1018_B (ID=26100)",
|
||||
"26101": "Test Tee: ?HAP3014_A (ID=26101)",
|
||||
"26102": "Test Tee: ?HAP3014_B (ID=26102)",
|
||||
"26103": "Test Tee: ?HAP2016_A (ID=26103)",
|
||||
"26104": "Test Tee: ?HAP2016_B (ID=26104)",
|
||||
"26105": "Test Tee: ?HAP3019_A (ID=26105)",
|
||||
"26106": "Test Tee: ?HAP3019_B (ID=26106)",
|
||||
"26107": "Test Tee: ?HAP2019_A (ID=26107)",
|
||||
"26108": "Test Tee: ?HAP2019_B (ID=26108)",
|
||||
"26109": "Test Tee: ?HAP1021_A (ID=26109)",
|
||||
"26110": "Test Tee: ?HAP1021_B (ID=26110)",
|
||||
"26111": "Test Tee: ?HAP2020_A (ID=26111)",
|
||||
"26112": "Test Tee: ?HAP2020_B (ID=26112)",
|
||||
"26113": "Test Tee: ?HAP3020_A (ID=26113)",
|
||||
"26114": "Test Tee: ?HAP3020_B (ID=26114)",
|
||||
"26115": "Test Tee: ?HAP3021_A (ID=26115)",
|
||||
"26116": "Test Tee: ?HAP3021_B (ID=26116)",
|
||||
"26117": "Test Tee: ?HAP1022_A (ID=26117)",
|
||||
"26118": "Test Tee: ?HAP1022_B (ID=26118)",
|
||||
"26119": "Test Tee: ?HAP1023_A (ID=26119)",
|
||||
"26120": "Test Tee: ?HAP1023_B (ID=26120)",
|
||||
"26121": "Test Tee: ?HAP3022_A (ID=26121)",
|
||||
"26122": "Test Tee: ?HAP3022_B (ID=26122)",
|
||||
"26123": "Test Tee: ?HAP3023_A (ID=26123)",
|
||||
"26124": "Test Tee: ?HAP3023_B (ID=26124)",
|
||||
"26125": "Test Tee: ?HAP1024_A (ID=26125)",
|
||||
"26126": "Test Tee: ?HAP1024_B (ID=26126)",
|
||||
"26127": "Test Tee: ?HAP1025_A (ID=26127)",
|
||||
"26128": "Test Tee: ?HAP1025_B (ID=26128)",
|
||||
"26129": "Test Tee: ?HAP1020_A (ID=26129)",
|
||||
"26130": "Test Tee: ?HAP1020_B (ID=26130)",
|
||||
"26131": "Test Tee: ?HAP1026_A (ID=26131)",
|
||||
"26132": "Test Tee: ?HAP1026_B (ID=26132)",
|
||||
"26133": "Test Tee: ?HAP3024_A (ID=26133)",
|
||||
"26134": "Test Tee: ?HAP3024_B (ID=26134)",
|
||||
"26135": "Test Tee: ?HAP2021_A (ID=26135)",
|
||||
"26136": "Test Tee: ?HAP2021_B (ID=26136)",
|
||||
"29000": "Attack_Up (ID=29000)",
|
||||
"29001": "Defense_Up (ID=29001)",
|
||||
"29002": "MainInk_Save (ID=29002)",
|
||||
"29003": "SubInk_Save (ID=29003)",
|
||||
"29004": "InkRecovery_Up (ID=29004)",
|
||||
"29005": "HumanMove_Up (ID=29005)",
|
||||
"29006": "SquidMove_Up (ID=29006)",
|
||||
"29007": "SpecialIncrease_Up (ID=29007)",
|
||||
"29008": "SpecialTime_Up (ID=29008)",
|
||||
"29009": "RespawnTime_Save (ID=29009)",
|
||||
"29010": "RespawnSpecialGauge_Save (ID=29010)",
|
||||
"29011": "JumpTime_Save (ID=29011)",
|
||||
"29012": "BombDistance_Up (ID=29012)",
|
||||
"29013": "MarkingCancel (ID=29013)",
|
||||
"29014": "SquidMoveSpatter_Reduction (ID=29014)",
|
||||
"29015": "DeathMarking (ID=29015)",
|
||||
"29016": "RespawnRadar (ID=29016)",
|
||||
"29500": "?SUP000 (ID=29500)",
|
||||
"29501": "?SUP001 (ID=29501)"
|
||||
},
|
||||
"shoes": {
|
||||
"0": "ありのまま (ID=0)",
|
||||
"1": "Cream Basics (ID=1)",
|
||||
"1000": "Blue Lo-Tops (ID=1000)",
|
||||
"1001": "Banana Basics (ID=1001)",
|
||||
"1002": "LE Lo-Tops (ID=1002)",
|
||||
"1003": "White Seahorses (ID=1003)",
|
||||
"1004": "Orange Lo-Tops (ID=1004)",
|
||||
"1005": "Black Seahorses (ID=1005)",
|
||||
"1006": "Clownfish Basics (ID=1006)",
|
||||
"1007": "Yellow Seahorses (ID=1007)",
|
||||
"1008": "Strapping Whites (ID=1008)",
|
||||
"1009": "Strapping Reds (ID=1009)",
|
||||
"1010": "Soccer Cleats (ID=1010)",
|
||||
"1011": "LE Soccer Cleats (ID=1011)",
|
||||
"2000": "Red Hi-Horses (ID=2000)",
|
||||
"2001": "Zombie Hi-Horses (ID=2001)",
|
||||
"2002": "Cream Hi-Tops (ID=2002)",
|
||||
"2003": "Purple Hi-Horses (ID=2003)",
|
||||
"2004": "Hunter Hi-Tops (ID=2004)",
|
||||
"2005": "Red Hi-Tops (ID=2005)",
|
||||
"2006": "Gold Hi_Horses (ID=2006)",
|
||||
"2007": "SQUID GIRL Shoes (ID=2007)",
|
||||
"2008": "Shark Mawcasins (ID=2008)",
|
||||
"2009": "Mawcasins (ID=2009)",
|
||||
"3000": "Pink Trainers (ID=3000)",
|
||||
"3001": "Orange Arrows (ID=3001)",
|
||||
"3002": "Neon Sea Slugs (ID=3002)",
|
||||
"3003": "White Arrows (ID=3003)",
|
||||
"3004": "Cyan Trainers (ID=3004)",
|
||||
"3005": "Purple Sea Slugs (ID=3005)",
|
||||
"3006": "Red Sea Slugs (ID=3006)",
|
||||
"3007": "Blue Sea Slugs (ID=3007)",
|
||||
"3008": "Crazy Arrows (ID=3008)",
|
||||
"3009": "Black Trainers (ID=3009)",
|
||||
"4000": "Oyster Clogs (ID=4000)",
|
||||
"4001": "Choco Clogs (ID=4001)",
|
||||
"4002": "Blueberry Casuals (ID=4002)",
|
||||
"4003": "Plum Casuals (ID=4003)",
|
||||
"4006": "Traditional Sandals (ID=4006)",
|
||||
"5000": "Trail Boots (ID=5000)",
|
||||
"5001": "Custom Trail Boots (ID=5001)",
|
||||
"5002": "Pro Trail Boots (ID=5002)",
|
||||
"6000": "Moto Boots (ID=6000)",
|
||||
"6001": "Tan Work Boots (ID=6001)",
|
||||
"6002": "Red Work Boots (ID=6002)",
|
||||
"6003": "Blue Moto Boots (ID=6003)",
|
||||
"6004": "Green Rain Boots (ID=6004)",
|
||||
"6005": "Acerola Rain Boots (ID=6005)",
|
||||
"6006": "Punk Whites (ID=6006)",
|
||||
"6007": "Punk Cherries (ID=6007)",
|
||||
"6008": "Punk Yellows (ID=6008)",
|
||||
"6009": "Bubble Rain Boots (ID=6009)",
|
||||
"6010": "Snowy Down Boots (ID=6010)",
|
||||
"6011": "Icy Down Boots (ID=6011)",
|
||||
"7000": "Blue Slip-Ons (ID=7000)",
|
||||
"7001": "Red Slip-Ons (ID=7001)",
|
||||
"7002": "Squid-Stitch Slip-Ons (ID=7002)",
|
||||
"8000": "White Kicks (ID=8000)",
|
||||
"8001": "Cherry Kicks (ID=8001)",
|
||||
"8002": "Turquoise Kicks (ID=8002)",
|
||||
"8003": "Squink Wingtips (ID=8003)",
|
||||
"8004": "Roasted Brogues (ID=8004)",
|
||||
"25000": "School Shoes (ID=25000)",
|
||||
"25001": "Samurai Shoes (ID=25001)",
|
||||
"25002": "Power Boots (ID=25002)",
|
||||
"27000": "Hero Runner Replica (ID=27000)",
|
||||
"27001": "?MSN001 (ID=27001)",
|
||||
"27002": "?MSN002 (ID=27002)",
|
||||
"27003": "?MSN003 (ID=27003)",
|
||||
"27004": "Armor Boots Replica (ID=27004)",
|
||||
"28000": "Octoling Boots (ID=28000)",
|
||||
"29000": "?Attack_Up (ID=29000)",
|
||||
"29001": "?Defense_Up (ID=29001)",
|
||||
"29002": "?MainInk_Save (ID=29002)",
|
||||
"29003": "?SubInk_Save (ID=29003)",
|
||||
"29004": "?Inkrecovery_Up (ID=29004)",
|
||||
"29005": "?HumanMove_Up (ID=29005)",
|
||||
"29006": "?SquidMove_Up (ID=29006)",
|
||||
"29007": "?SpecialIncrease_Up (ID=29007)",
|
||||
"29008": "?SpecialTime_Up (ID=29008)",
|
||||
"29009": "?RespawnTime_Save (ID=29009)",
|
||||
"29010": "?RespawnSpecialGauge_Save (ID=29010)",
|
||||
"29011": "?JumpTime_Save (ID=29011)",
|
||||
"29012": "?BombDistance_Up (ID=29012)",
|
||||
"29013": "?TrapDetect (ID=29013)",
|
||||
"29014": "?EnemyInkEffect_Reduction (ID=29014)",
|
||||
"29015": "?SuperJumpSign_Hide (ID=29015)",
|
||||
"29500": "?SUP000 (ID=29500)",
|
||||
"29501": "?SUP001 (ID=29501)"
|
||||
},
|
||||
"tanks": {
|
||||
"0": "Default Ink Tank (ID=0)",
|
||||
"1000": "Mission Ink Tank Level 0 (ID=1000)",
|
||||
"1001": "Mission Ink Tank Level 1 (ID=1001)",
|
||||
"1002": "Mission Ink Tank Level 2 (ID=1002)",
|
||||
"1003": "Mission Ink Tank Level 3 (ID=1003)",
|
||||
"2000": "Rival Ink Tank (ID=2000)"
|
||||
},
|
||||
"eye_colors": {
|
||||
"0": "Brown (ID=0)",
|
||||
"1": "Pink (ID=1)",
|
||||
"2": "Blue (ID=2)",
|
||||
"3": "Orange (ID=3)",
|
||||
"4": "Turquoise (ID=4)",
|
||||
"5": "Black (ID=5)",
|
||||
"6": "Yellow (ID=6)"
|
||||
},
|
||||
"ranks": {
|
||||
"0": "C- (ID=0)",
|
||||
"1": "C (ID=1)",
|
||||
"2": "C+ (ID=2)",
|
||||
"3": "B- (ID=3)",
|
||||
"4": "B (ID=4)",
|
||||
"5": "B+ (ID=5)",
|
||||
"6": "A- (ID=6)",
|
||||
"7": "A (ID=7)",
|
||||
"8": "A+ (ID=8)",
|
||||
"9": "S (ID=9)",
|
||||
"10": "S+ (ID=10)"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,10 @@
|
|||
const router = require('express').Router();
|
||||
const titles = require('../titles');
|
||||
const { WebhookClient, EmbedBuilder } = require('discord.js');
|
||||
const lookup = require('./ids.json');
|
||||
const blacklist = require('./blacklist.json');
|
||||
|
||||
const webhookClient = new WebhookClient({ url: process.env.WEBHOOK_URL });
|
||||
|
||||
router.post('/post', async (request, response, next) => {
|
||||
const title = titles[request.titleCode];
|
||||
|
|
@ -10,6 +15,7 @@ router.post('/post', async (request, response, next) => {
|
|||
}
|
||||
|
||||
const ResultTypeModel = title.result_model;
|
||||
const data = request.resultData || {};
|
||||
|
||||
try {
|
||||
const result = await ResultTypeModel.create({
|
||||
|
|
@ -18,6 +24,43 @@ router.post('/post', async (request, response, next) => {
|
|||
bossDigest: request.headers['x-boss-digest'],
|
||||
...request.resultData
|
||||
});
|
||||
const offenses = [];
|
||||
if ((blacklist.weapons || []).includes(Number(data.Weapon))) offenses.push("weapon");
|
||||
if ((blacklist.clothes || []).includes(Number(data.Gear_Clothes))) offenses.push("clothes");
|
||||
if ((blacklist.rules || []).includes(Number(data.Rule))) offenses.push("rule");
|
||||
if (offenses.length > 0) {
|
||||
const sWep = offenses.includes("weapon") ? "⭐ " : "";
|
||||
const sClt = offenses.includes("clothes") ? "⭐ " : "";
|
||||
const sRul = offenses.includes("rule") ? "⭐ " : "";
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(":warning: | Invalid Telemetry received")
|
||||
.setDescription(`## Offending information detected in: ${offenses.join(', ')}`)
|
||||
.setFields(
|
||||
{
|
||||
name: "User Information:",
|
||||
value: `-# ID in db/results: ${result.id || 'N/A'}`,
|
||||
inline: false
|
||||
},
|
||||
{ name: "PID", value: `${data.PId || 'N/A'}`, inline: true },
|
||||
{ name: "Mii Name", value: `${data.MiiName || 'N/A'}`, inline: true },
|
||||
{ name: "Weapon", value: `${sWep}${lookup.weapons_main[data.Weapon] || data.Weapon || 'N/A'}`, inline: true },
|
||||
{ name: "Headgear", value: `${lookup.headgear[data.Gear_Head] || data.Gear_Head || 'N/A'}`, inline: true },
|
||||
{ name: "Clothes", value: `${sClt}${lookup.clothes[data.Gear_Clothes] || data.Gear_Clothes || 'N/A'}`, inline: true },
|
||||
{ name: "Shoes", value: `${lookup.shoes[data.Gear_Shoes] || data.Gear_Shoes || 'N/A'}`, inline: true },
|
||||
{ name: "Match Information:", value: " ", inline: false },
|
||||
{ name: "Match Type", value: `${lookup.modes[data.GameMode] || 'N/A'}`, inline: true },
|
||||
{ name: "Rule", value: `${sRul}${lookup.rules[data.Rule] || data.Rule || 'N/A'}`, inline: true },
|
||||
{ name: "Stage", value: `${lookup.maps[data.Stage] || 'N/A'}`, inline: true },
|
||||
{ name: "Session ID", value: `${data.SessionID || 'N/A'}`, inline: true },
|
||||
{ name: "Team:", value: `${data.Team || 'N/A'}`, inline: true },
|
||||
{ name: " ", value: " ", inline: true },
|
||||
{ name: "Team Alpha Paint", value: `${data.Paint_Alpha || 'N/A'}`, inline: true },
|
||||
{ name: "Team Bravo Paint", value: `${data.Paint_Bravo || 'N/A'}`, inline: true }
|
||||
);
|
||||
|
||||
webhookClient.send({ embeds: [embed] }).catch(err => console.error('Webhook Error:', err));
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('[Database Error]', error.message);
|
||||
|
|
|
|||
Loading…
Reference in a new issue