commit 86fc3500d540da5efbbdfd3fbde76399563997b1
parent 1cb232dd72f3659d88193d4737b123e931cae979
Author: ThunderE75 <[email protected]>
Date: Sun, 30 Jan 2022 06:22:16 +0530
[Don't Pull] Fixed a typo in builds.js & More
Fixed a typo in builds.js
Added a new stats.js file to work with updated stats
But's it's not ready yet
Diffstat:
2 files changed, 782 insertions(+), 7 deletions(-)
diff --git a/command/CODM/build.js b/command/CODM/build.js
@@ -5,6 +5,7 @@ module.exports = {
name: "build",
description: "Get gunsmith builds",
type: "CHAT_INPUT",
+ usage: "[Weapon Name] [Author] [Tag]",
category: "CODM",
options: [
{
@@ -106,7 +107,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@@ -233,7 +234,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@@ -324,7 +325,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@@ -407,7 +408,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@@ -486,7 +487,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@@ -549,7 +550,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
@@ -620,7 +621,7 @@ module.exports = {
},
{
type: 3,
- name: "youtuber",
+ name: "Author",
description: "Select a Content Creator",
required: true,
choices: [
diff --git a/command/CODM/new-stats.js b/command/CODM/new-stats.js
@@ -0,0 +1,774 @@
+const { MessageEmbed } = require("discord.js");
+const moment = require("moment");
+const axios = require("axios");
+module.exports = {
+ name: "stats",
+ description: "Check Stats of a Weapon by SOD",
+ usage: "[Weapon Name]",
+ category: "CODM",
+ options: [
+ {
+ type: "SUB_COMMAND",
+ name: "assault_rifle",
+ description: "Get a Stats for Assault Rifle",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ {
+ name: "Type 25",
+ value: "A01",
+ },
+ {
+ name: "M16",
+ value: "A02",
+ },
+ {
+ name: "AK117",
+ value: "A03",
+ },
+ {
+ name: "AK-47",
+ value: "A04",
+ },
+ {
+ name: "ASM10",
+ value: "A05",
+ },
+ {
+ name: "M4",
+ value: "A06",
+ },
+ {
+ name: "BK57",
+ value: "A07",
+ },
+ {
+ name: "LK24",
+ value: "A08",
+ },
+ {
+ name: "ICR-1",
+ value: "A09",
+ },
+ {
+ name: "Man-o-War",
+ value: "A10",
+ },
+ {
+ name: "KN-44",
+ value: "A11",
+ },
+ {
+ name: "HBRa3",
+ value: "A12",
+ },
+ {
+ name: "HVK-30",
+ value: "A13",
+ },
+ {
+ name: "DR-H",
+ value: "A14",
+ },
+ {
+ name: "Peacekeeper MK2",
+ value: "A15",
+ },
+ {
+ name: "FR .556",
+ value: "A16",
+ },
+ {
+ name: "AS VAL",
+ value: "A17",
+ },
+ {
+ name: "CR-56 AMAX",
+ value: "A18",
+ },
+ {
+ name: "M13",
+ value: "A19",
+ },
+ {
+ name: "Swordfish",
+ value: "A20",
+ },
+ {
+ name: "Kilo 141",
+ value: "A21",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "SUB_COMMAND",
+ name: "sub_machine_gun",
+ description: "Get a Stats for Sub Machine Gun",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ {
+ name: "RUS-79u",
+ value: "D01",
+ },
+ {
+ name: "Chicom",
+ value: "D02",
+ },
+ {
+ name: "PDW-57",
+ value: "D03",
+ },
+ {
+ name: "Razorback",
+ value: "D04",
+ },
+ {
+ name: "MSMC",
+ value: "D05",
+ },
+ {
+ name: "HG40",
+ value: "D06",
+ },
+ {
+ name: "Pharo",
+ value: "D07",
+ },
+ {
+ name: "GKS",
+ value: "D08",
+ },
+ {
+ name: "Cordite",
+ value: "D09",
+ },
+ {
+ name: "QQ9",
+ value: "D10",
+ },
+ {
+ name: "Fennec",
+ value: "D11",
+ },
+ {
+ name: "AGR 556",
+ value: "D12",
+ },
+ {
+ name: "QXR",
+ value: "D13",
+ },
+ {
+ name: "PP19 Bizon",
+ value: "D14",
+ },
+ {
+ name: "MX9",
+ value: "D15",
+ },
+ {
+ name: "CBR4",
+ value: "D16",
+ },
+ {
+ name: "PPSh 41",
+ value: "D17",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "SUB_COMMAND",
+ name: "sniper_rifle",
+ description: "Get a Stats for Sniper Rifle",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ // {
+ // name: "XPR-50",
+ // value: "B01",
+ // },
+ {
+ name: "Arctic .50",
+ value: "B02",
+ },
+ {
+ name: "M21 EBR",
+ value: "B03",
+ },
+ {
+ name: "DL Q33",
+ value: "B04",
+ },
+ {
+ name: "Locus",
+ value: "B05",
+ },
+ // {
+ // name: "NA-45",
+ // value: "B06",
+ // },
+ {
+ name: "Outlaw",
+ value: "B07",
+ },
+ {
+ name: "Rytec AMR",
+ value: "B08",
+ },
+ {
+ name: "SVD",
+ value: "B09",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "SUB_COMMAND",
+ name: "light_machine_gun",
+ description: "Get a Stats for Light Machine Gun",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ {
+ name: "S36",
+ value: "C01",
+ },
+ {
+ name: "UL736",
+ value: "C02",
+ },
+ {
+ name: "RPD",
+ value: "C03",
+ },
+ {
+ name: "M4 LMG",
+ value: "C04",
+ },
+ {
+ name: "Chopper",
+ value: "C05",
+ },
+ {
+ name: "Holger 26",
+ value: "C06",
+ },
+ {
+ name: "Hades",
+ value: "C07",
+ },
+ {
+ name: "PKM",
+ value: "C08",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "SUB_COMMAND",
+ name: "shotgun",
+ description: "Get a Stats for Shotgun",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ {
+ name: "HS2126",
+ value: "E01",
+ },
+ {
+ name: "BY15",
+ value: "E02",
+ },
+ {
+ name: "HS0405",
+ value: "E03",
+ },
+ {
+ name: "Striker",
+ value: "E04",
+ },
+ {
+ name: "KRM_262",
+ value: "E05",
+ },
+ {
+ name: "Echo",
+ value: "E06",
+ },
+ {
+ name: "R9-0",
+ value: "E07",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "SUB_COMMAND",
+ name: "marksman_rifle",
+ description: "Get a Stats for Marksman Rifle",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ {
+ name: "Kilo Bolt-Action",
+ value: "F01",
+ },
+ {
+ name: "SKS",
+ value: "F02",
+ },
+ {
+ name: "SP-R 208",
+ value: "F03",
+ },
+ {
+ name: "MK2",
+ value: "F04",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ type: "SUB_COMMAND",
+ name: "pistol",
+ description: "Get a Stats for Pistol",
+ options: [
+ {
+ type: 3,
+ name: "Weapon",
+ description: "Name of the Gun",
+ required: true,
+ choices: [
+ {
+ name: "J358",
+ value: "G01",
+ },
+ {
+ name: "MW11",
+ value: "G02",
+ },
+ {
+ name: ".50 GS",
+ value: "G03",
+ },
+ {
+ name: "Renetti",
+ value: "G04",
+ },
+ {
+ name: "Shorty",
+ value: "G05",
+ },
+ {
+ name: "Crossbow",
+ value: "G06",
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ // It's not complete, Still work in progress.
+ run: async (client, interaction, args) => {
+ const cwts = args[1];
+ const data = await axios
+ .get(`${process.env.api}/api/v1/codm/builds?cwts=${cwts}`, {
+ headers: {
+ Authorization: process.env.CODM_API_KEY,
+ },
+ })
+ .then((res) => res.data)
+ .catch((e) => null);
+
+ if (!data?.ID) {
+ const embed = new MessageEmbed()
+ .setDescription(
+ `<:nyx_not_available:897378400031879188> Sorry, We currently don't have Stats for this Weapon`
+ )
+ .setColor(client.color);
+ interaction.followUp({ embeds: [embed] });
+ } else {
+ const embed = new MessageEmbed()
+ .setTitle(
+ `${data.author} Statistical Breakdown`
+ )
+ .setColor(16580400)
+ .setImage(data.imageUrl)
+ .setFooter(
+ `Stats Curtosy of Round Table`,
+ )
+ // .setFooter(
+ // `Stats Curtosy of Stats on Duty`,
+ // )
+ .setDescription(
+ `<:nyx_description:897379659665264650> **Description** \n${data.description}`
+ )
+ .addFields(
+ {
+ name: ":id: CWTS:",
+ value: `\`\`\`\n${data.cwts}\n\`\`\``,
+ inline: true,
+ },
+ {
+ name: "<a:lastupdate:897381474330873887> Last Updated:",
+ value: `\`\`\`\n${moment(Date.parse(data.lastUpdate)).format(
+ "MMMM Do YYYY"
+ )}\n\`\`\``,
+ inline: true,
+ },
+ {
+ name: "Basic Stats",
+ value: `\`\`\`\n
+ BSA Score: ${data.bsa_score}
+ Hipfire Score: ${data.hipfire_score}
+ Rate of Fire\t\t\t\t: ${data.rof}
+ Penetration Level\t\t: ${data.penetration}
+ Firing Mode\t\t\t\t\t: Full Auto
+
+ \n\`\`\``,
+ inline: false,
+ },
+ {
+ name: "Handling & Mobility",
+ value: `\`\`\`\n
+ Drop Time : 416.6 ms
+ Raise Time : 650 ms
+ Sprinting Speed : 6.09 m/s
+ Walking Speed : 4.51 m/s
+ Sprint-to-Fire Time : 165 ms
+ \n\`\`\``,
+ inline: false,
+ },
+ {
+ name: "Ammunation Stats",
+ value: `\`\`\`\n
+ Magazine : 30
+ Reserve : 120
+ Reload Type : Magazine
+ Cancel Reload Time : 1.9 s
+ Reload Time : 2.3 s
+ Full Reload Time : 3.2 s
+ \n\`\`\``,
+ inline: false,
+ },
+ {
+ name: ":paperclip: Attachments:",
+ value: arr.join("\n"),
+ },
+ {
+ name: "<a:tags:897034924140404776> Tags",
+ value: data.tags.join(", "),
+ }
+ )
+ .setURL(client.web);
+ interaction.followUp({ embeds: [embed] });
+ }
+ },
+};
+
+// @night0721 Damage profile will be avalable by different command
+
+
+
+// recoilAvailable = false;
+// hasError = false;
+// console.log(args);
+// const repEmb = statsHandler(args.join(" ").replace("\n", " "));
+// if (hasError) {
+// interaction.followUp({ embeds: [repEmb] });
+// }
+// if (recoilAvailable) {
+// repEmb.fields.push({
+// name: "**Recoil Graph**",
+// value:
+// "```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
+// });
+// const recoilImageLink = await chart.getShortUrl();
+// repEmb.image = { url: recoilImageLink };
+// }
+// interaction.followUp({ embeds: [repEmb] });
+// },
+// }
+
+
+// run: async (client, interaction, args) => {
+// recoilAvailable = false;
+// hasError = false;
+// console.log(args);
+// const repEmb = statsHandler(args.join(" ").replace("\n", " "));
+// if (hasError) {
+// interaction.followUp({ embeds: [repEmb] });
+// }
+// if (recoilAvailable) {
+// repEmb.fields.push({
+// name: "**Recoil Graph**",
+// value:
+// "```\nThe Recoil graph below is dynamic (change based on attachment equipped)```",
+// });
+// const recoilImageLink = await chart.getShortUrl();
+// repEmb.image = { url: recoilImageLink };
+// }
+// interaction.followUp({ embeds: [repEmb] });
+// },
+// };
+
+// function inpHandler(inpmsg) {
+// statsHandler(inpmsg.split("+")[0]);
+// }
+
+// function statsHandler(inpmsg) {
+// let statsNames = [
+// "Pellets",
+// "Detonation Range",
+// "Explosion Radius",
+// "Explosion Damage",
+// "Firing Mode",
+// "Rate of Fire",
+// "Bullet in Burst",
+// "Time Between Burst",
+// "Bullet Speed",
+// "Penetration Level",
+// "Bullet Spread",
+// "Idle Sway",
+// "Hipfire Pellet Spread",
+// "ADS Pellet Spread",
+// "ADS Time",
+// "Sprint-to-Fire Time",
+// "ADS Zoom",
+// "Magazine",
+// "Reserve",
+// "Reload Type",
+// "Cancel Reload Time",
+// "Reload Time",
+// "Full Reload Time",
+// "Drop Time",
+// "Raise Time",
+// "Sprinting Speed",
+// "Walking Speed",
+// "Straifing Speed",
+// "Damage per Tick",
+// "Number of Ticks",
+// "Time Between Ticks",
+// "Breath Hold Time",
+// "shouldNeverHappen0",
+// "shouldNeverHappen1",
+// "shouldNeverHappen2",
+// "shouldNeverHappen3",
+// "shouldNeverHappen4",
+// ],
+// out = [];
+
+// currGun = common.weaponIdentifier(inpmsg);
+// if (typeof currGun == "string") {
+// hasError = true;
+// return currGun;
+// }
+// currStats = currGun.stats;
+// currDRM = currGun.drm[0];
+// currAttachments = [];
+// currAttachments = common.attachmentsIdentifier(
+// inpmsg,
+// currGun.aments,
+// currStats
+// );
+// if (typeof currAttachments == "string") {
+// hasError = true;
+// return currAttachments;
+// }
+// currRecoilArr = [1, 1, currGun.stats[17]];
+// if (currAttachments.length != 0) {
+// const totalEffects = common.totaler(currAttachments);
+
+// currStats = common.updateStatswithEffects(totalEffects, currStats);
+// currRecoilArr = [totalEffects[2], totalEffects[3], currGun.stats[17]]; // must happen after currStats update
+// currDRM = currGun.drm[totalEffects[37]];
+// currDRM.range = currDRM.range.map(x =>
+// Math.round(x * (1 + totalEffects[13] / 100))
+// );
+// out = common.attachmentHandler(totalEffects, currStats);
+// }
+// function statsWorker() {
+// if (currStats[19] === 2) {
+// currStats[21] =
+// currStats[20] + currStats[21] * currStats[17] + currStats[22];
+// currStats[20] = 0;
+// currStats[22] = 0;
+// }
+// currStats[25] = (currStats[25] * currStats[26]) / 100;
+
+// const outReady = currStats.map((x, i) =>
+// x ? statsNames[i].padEnd(24) + ":".padEnd(3) + beautifier(i) : ""
+// );
+// out = [
+// ...[
+// "Basic Stats",
+// "ADS Stats",
+// "Bullet Stats",
+// "Magazine",
+// "Handling Stats",
+// "Mobility Stats",
+// "Miscellaneous Stats",
+// ].map((x, i) =>
+// fieldMaker(
+// x,
+// [
+// [04, 05, 09],
+// [14, 16, 11, 31],
+// [00, 06, 07, 08, 10, 12, 13],
+// [17, 18, 19, 20, 21, 22],
+// [23, 24],
+// [25, 26, 27, 15],
+// [28, 29, 30, 01, 02, 03],
+// ][i]
+// )
+// ),
+// ...out,
+// ];
+// function fieldMaker(inpName, inpIndx) {
+// inpIndx = inpIndx.filter(x => outReady[x]);
+// return inpIndx.length
+// ? {
+// name: "**" + inpName + "**",
+// value: "```\n" + inpIndx.map(x => outReady[x]).join("\n") + "```",
+// }
+// : "";
+// }
+// }
+// statsWorker();
+
+// function beautifier(j) {
+// switch (j) {
+// case 04:
+// return data.firingModes[currStats[j] - 1];
+// case 09:
+// return data.penetrationLevels[currStats[j] - 1];
+// case 19:
+// return data.reloadTypes[currStats[j] - 1];
+// case 08:
+// if (currStats[j] == -1) {
+// return "Infinity";
+// } else {
+// return parseFloat(currStats[j].toFixed(2)).toString() + " m/s";
+// }
+// case 03:
+// return parseFloat(currStats[j].toFixed(2))
+// .toString()
+// .replace(".", " ~ ");
+// default:
+// return parseFloat(currStats[j].toFixed(2)).toString() + addUnit(j);
+// }
+
+// function addUnit(j) {
+// switch (j) {
+// case 07:
+// case 14:
+// case 15:
+// case 23:
+// case 24:
+// case 31:
+// return " ms";
+// case 27:
+// case 28:
+// case 25:
+// case 26:
+// return " m/s";
+// case 20:
+// case 21:
+// case 22:
+// return " s";
+// case 16:
+// return "%";
+// case 06:
+// return " Rounds";
+// case 05:
+// return " RPM";
+// default:
+// return "";
+// }
+// }
+// }
+// interpretion = currGun.gunname + common.interpretioner(currAttachments);
+// if (currGun.recoil.hr.length > 2) {
+// chart = common.recoilHandler(
+// currGun.recoil.hr,
+// currGun.recoil.vr,
+// currRecoilArr[0],
+// currRecoilArr[1],
+// currRecoilArr[2]
+// );
+// recoilAvailable = true;
+// } else {
+// recoilAvailable = false;
+// }
+// if (chart == "none") {
+// recoilAvailable = false;
+// }
+// if (chart == "err" || currAttachments == "err") {
+// hasError = true;
+// return "Cocaineeee";
+// }
+// const dmg =
+// common.damageHandler(
+// currDRM.damage,
+// currDRM.range,
+// 1,
+// 100,
+// 60000 / currStats[5],
+// currStats[7],
+// currStats[6],
+// currStats[0]
+// ) || "```This should never happen```";
+// out = [
+// currGun.description
+// ? {
+// name: "**Description:**",
+// value: "```\n" + currGun.description + "```",
+// }
+// : {},
+// { name: "**Damage Profile:**", value: dmg },
+// ...out,
+// ];
+// out = out.filter(x => x.value);
+// return {
+// title: interpretion,
+// color: 5814783,
+// fields: out,
+// footer: {
+// text: "[OUTDATED] All data courtesy of Project Lighthouse 2.0 and CoDM Research Crew",
+// icon_url:
+// "https://media.discordapp.net/attachments/735590814662656102/806960573753327657/cc.png",
+// },
+// };