nyx

The first CODM discrod bot -- cath.exe Template
git clone https://codeberg.org/night0721/nyx
Log | Files | Refs | LICENSE

commit 730b327934ba6d8db63e80c88fc8e8369453551a
parent d763390efd111145294ea5a25e2963c7b749fe83
Author: night0721 <[email protected]>
Date:   Sat, 22 Jan 2022 22:17:36 +0800

merge from thunder

Diffstat:
Mcommand/CODM/build.js | 3+--
Dcommand/CODM/scorestreak.js | 177-------------------------------------------------------------------------------
Dcommand/NSFW/nsfw.js | 149-------------------------------------------------------------------------------
Acommand/Owner/nsfw.js | 137+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommand/Owner/scorestreak.js | 177+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mnsfw.js | 276++++++++++++++++++++++++++++++++++++++++----------------------------------------
Dpackage.json | 54------------------------------------------------------
Munused/commands/Information/botinfo.js | 2+-
Mutil/Data/attachments.json | 23++++-------------------
9 files changed, 458 insertions(+), 540 deletions(-)

diff --git a/command/CODM/build.js b/command/CODM/build.js @@ -829,4 +829,4 @@ module.exports = { }); } }, -}; -\ No newline at end of file +}; diff --git a/command/CODM/scorestreak.js b/command/CODM/scorestreak.js @@ -1,177 +0,0 @@ -const { MessageEmbed } = require("discord.js"); -const { CODMClient } = require("cath"); -const c = new CODMClient("Gae"); -module.exports = { - name: "scorestreak", - description: "Get Scorestreak stats", - type: "CHAT_INPUT", - usage: "{Scorestreak}", - category: "CODM", - options: [ - { - type: "SUB_COMMAND", - name: "lethal", - description: "Lethal Scorestreak", - options: [ - { - type: 3, - name: "scorestreak", - description: "Select a lethal scorestreak", - required: true, - choices: [ - { - name: "Shield Turret", - value: "shieldturret", - }, - { - name: "Hunter Killer Drone", - value: "hunterkillerdrone", - }, - { - name: "MQ-27 Dragonfire", - value: "mq27dragonfire", - }, - { - name: "Predator Missile", - value: "predatormissile", - }, - { - name: "Hawk X3", - value: "hawkx3", - }, - { - name: "Sentry Gun", - value: "sentrygun", - }, - { - name: "Lightning Strike", - value: "lightningstrike", - }, - { - name: "Orbital Laser", - value: "orbitallaser", - }, - { - name: "XS1 Goliath", - value: "xs1goliath", - }, - { - name: "Cluster Strike", - value: "clusterstrike", - }, - { - name: "XS1 Goliath", - value: "xs1goliath", - }, - { - name: "Stealth Chopper", - value: "stealthchopper", - }, - { - name: "Swarm", - value: "swarm", - }, - { - name: "Napalm", - value: "napalm", - }, - { - name: "VTOL", - value: "vtol", - }, - ], - }, - ], - }, - { - type: "SUB_COMMAND", - name: "support", - description: "Support Scorestreak", - options: [ - { - type: 3, - name: "scorestreak", - description: "Select a Support Scorestreak", - required: true, - choices: [ - { - name: "UAV", - value: "uav", - }, - { - name: "Shock RC", - value: "shockrc", - }, - { - name: "Care Package", - value: "carepackage", - }, - { - name: "Counter UAV", - value: "cuav", - }, - { - name: "SAM Turret", - value: "samturret", - }, - { - name: "Advance UAV", - value: "auav", - }, - { - name: "EMP Systems", - value: "empsystems", - }, - ], - }, - ], - }, - ], - run: async (client, interaction, args) => { - const val = args[1]; - const d = await c.getscorestreak(val); - const embed = new MessageEmbed() - .setTitle(d.scorestreak) - .setURL(d.preview_video) - .setDescription(`\`\`\`${d.description}\`\`\``) - .addFields( - { - name: "Cost", - value: `\`\`\`${d.cost}\`\`\``, - inline: true - }, - { - name: "Lethal", - value: ` - ${d.lethal == true - ? "<a:nyx_checkmark:897240322411724841> Yes" - : "<a:nyx_cross:897244999211696198> No"}`, - inline: true - }, - { - name: "AI-Assisted", - value: ` - ${d.manual == false - ? "<a:nyx_checkmark:897240322411724841> Yes" - : "<a:nyx_cross:897244999211696198> No"}`, - inline: true - }, - { - name: "More Info", - value: `\`\`\`${d.special}\`\`\``, - inline: false - } - ) - .setThumbnail(`${d.preview}`) - .setFooter(`Made by ${client.author}`, client.user.displayAvatarURL()) - .setColor( - d.type == "lethal" - ? "FF2222" - : d.type == "support" - ? "22FF4A" - : client.color - ) - .setTimestamp(); - interaction.followUp({ embeds: [embed] }); - }, -}; diff --git a/command/NSFW/nsfw.js b/command/NSFW/nsfw.js @@ -1,148 +0,0 @@ -const fetch = require('node-fetch') -const { MessageActionRow, MessageButton, MessageEmbed, CommandInteraction } = require('discord.js'); -module.exports = { - name : 'nsfw', - description: "nsfw command", - /** - * @param {Client} client - * @param {CommandInteraction} interaction - * @param {String[]} args - */ - run : async(client, interaction) => { - - async function embed() { - if(!interaction.channel.nsfw){ - const embed = new MessageEmbed() - .setTitle(`AYO Calm Yo Cheeks`) - .setDescription('This command only works in NSFW Channels!') - .setImage('https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif') - .setColor("#02023a") - - interaction.followUp({ embeds: [embed]}) - return; - } - let subreddits = [ - 'GoneWild', - 'WorkGoneWild', - 'GoneWild30Plus', - 'hentai', - 'HentaiAnime', - 'nekogirls', - 'ass', - 'BestBooties', - 'BootyGIFs', - 'booty_queens', - 'BlowJob', - 'blowjobs', - 'blowjobgifs', - 'OralSex', - 'boobs', - 'GrabHerTitties', - 'titfuck', - 'milf', - 'OnlyHotMilfs', - 'realmoms', - 'thighs', - 'PerfectThighs', - 'thickthighs' - ] - let reddit = subreddits[Math.round(Math.random() * (subreddits.length - 1))]; - - let embed1 = null - await fetch(`https://meme-api.herokuapp.com/gimme/${reddit}`).then(res => res.json().then(url => { - embed1 = new MessageEmbed() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setTitle(`${url.title}`) - .setImage(`${url.url}`) - .setTimestamp() - .setColor("RED") - .setFooter(`${url.ups} 👍`) - })) - return embed1 - - } - - const row = new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId('reload') - .setLabel('Reload') - .setStyle('SUCCESS'), - ) - const disabled = new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId('reload') - .setLabel('Reload') - .setStyle('SECONDARY') - .setDisabled(true) - - ) - - let m = await interaction.followUp({ - embeds: [await embed()], - components: [row] - }) - - const collector = m.createMessageComponentCollector({ - componentType: 'BUTTON', - time: 120000, - }); - collector.on('collect', async i => { - if (i.user.id === interaction.user.id) { - i.deferUpdate() - await update(m) - collector.stop() - } else { - i.reply({ - content: `These buttons aren't for you!`, - ephemeral: true - }); - } - }) - collector.on('end', (mes, r) => { - if (r == 'time') { - m.edit({ - components: [disabled], - }) - } - }) - - async function update(m) { - m.edit({ - embeds: [await embed()] - }).catch(e => console.log(e.requestData.json.embeds)) - - const collector = m.createMessageComponentCollector({ - componentType: 'BUTTON', - time: 120000, - }); - collector.on('collect', async i => { - if (i.user.id === interaction.user.id) { - - i.deferUpdate() - await update(m) - collector.stop() - } else { - i.reply({ - content: `These buttons aren't for you!`, - ephemeral: true - }); - } - }) - collector.on('end', (mes, r) => { - if (r == 'time') { - m.edit({ - components: [disabled], - }) - } - }) - } - - - - } -} -\ No newline at end of file diff --git a/command/Owner/nsfw.js b/command/Owner/nsfw.js @@ -0,0 +1,137 @@ +const { getreddit } = require("cath"); +const { MessageActionRow, MessageButton, MessageEmbed } = require("discord.js"); +module.exports = { + name: "nsfw", + description: "nsfw command", + run: async (client, interaction) => { + const msg = await interaction.channel.send({ content: "Getting images" }); + async function embed() { + if (!interaction.channel.nsfw) { + const embed = new MessageEmbed() + .setTitle(`AYO Calm Yo Cheeks`) + .setDescription("This command only works in NSFW Channels!") + .setImage( + "https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif" + ) + .setColor(client.color) + .setFooter(`Made by ${client.author}`, client.user.displayAvatarURL()) + .setTimestamp(); + interaction.followUp({ embeds: [embed] }); + } + let subreddits = [ + "GoneWild", + "WorkGoneWild", + "GoneWild30Plus", + "hentai", + "HentaiAnime", + "nekogirls", + "ass", + "BestBooties", + "BootyGIFs", + "booty_queens", + "BlowJob", + "blowjobs", + "blowjobgifs", + "OralSex", + "boobs", + "GrabHerTitties", + "titfuck", + "milf", + "OnlyHotMilfs", + "realmoms", + "thighs", + "PerfectThighs", + "thickthighs", + ]; + const reddit = subreddits[Math.round(Math.random() * subreddits.length)]; + const data = await getreddit(reddit); + let embed1 = null; + embed1 = new MessageEmbed({ + title: data.title, + url: data.url, + image: { url: data.image }, + timestamp: Date.now(), + footer: { text: data.footer }, + color: client.color, + author: { + name: interaction.user.tag, + iconURL: interaction.user.displayAvatarURL({ dynamic: true }), + }, + }); + return embed1; + } + + const row = new MessageActionRow().addComponents( + new MessageButton() + .setCustomId("reload") + .setLabel("Reload") + .setStyle("SUCCESS") + ); + const disabled = new MessageActionRow().addComponents( + new MessageButton() + .setCustomId("reload") + .setLabel("Reload") + .setStyle("SECONDARY") + .setDisabled(true) + ); + await msg.delete(); + let m = await interaction.followUp({ + embeds: [await embed()], + components: [row], + }); + + const collector = m.createMessageComponentCollector({ + componentType: "BUTTON", + time: 120000, + }); + collector.on("collect", async i => { + if (i.user.id === interaction.user.id) { + i.deferUpdate(); + await update(m); + collector.stop(); + } else { + i.reply({ + content: `These buttons aren't for you!`, + ephemeral: true, + }); + } + }); + collector.on("end", (mes, r) => { + if (r == "time") { + m.edit({ + components: [disabled], + }); + } + }); + + async function update(m) { + m.edit({ + embeds: [await embed()], + }).catch(null); + + const collector = m.createMessageComponentCollector({ + componentType: "BUTTON", + time: 120000, + }); + collector.on("collect", async i => { + if (i.user.id === interaction.user.id) { + i.deferUpdate(); + await update(m); + collector.stop(); + } else { + i.reply({ + content: `These buttons aren't for you!`, + ephemeral: true, + }); + } + }); + collector.on("end", (mes, r) => { + if (r == "time") { + m.edit({ + components: [disabled], + }); + } + }); + } + }, +}; diff --git a/command/Owner/scorestreak.js b/command/Owner/scorestreak.js @@ -0,0 +1,177 @@ +const { MessageEmbed } = require("discord.js"); +const { CODMClient } = require("cath"); +const c = new CODMClient("Gae"); +module.exports = { + name: "scorestreak", + description: "Get Scorestreak stats", + type: "CHAT_INPUT", + usage: "{Scorestreak}", + category: "CODM", + options: [ + { + type: "SUB_COMMAND", + name: "lethal", + description: "Lethal Scorestreak", + options: [ + { + type: 3, + name: "scorestreak", + description: "Select a lethal scorestreak", + required: true, + choices: [ + { + name: "Shield Turret", + value: "shieldturret", + }, + { + name: "Hunter Killer Drone", + value: "hunterkillerdrone", + }, + { + name: "MQ-27 Dragonfire", + value: "mq27dragonfire", + }, + { + name: "Predator Missile", + value: "predatormissile", + }, + { + name: "Hawk X3", + value: "hawkx3", + }, + { + name: "Sentry Gun", + value: "sentrygun", + }, + { + name: "Lightning Strike", + value: "lightningstrike", + }, + { + name: "Orbital Laser", + value: "orbitallaser", + }, + { + name: "XS1 Goliath", + value: "xs1goliath", + }, + { + name: "Cluster Strike", + value: "clusterstrike", + }, + { + name: "XS1 Goliath", + value: "xs1goliath", + }, + { + name: "Stealth Chopper", + value: "stealthchopper", + }, + { + name: "Swarm", + value: "swarm", + }, + { + name: "Napalm", + value: "napalm", + }, + { + name: "VTOL", + value: "vtol", + }, + ], + }, + ], + }, + { + type: "SUB_COMMAND", + name: "support", + description: "Support Scorestreak", + options: [ + { + type: 3, + name: "scorestreak", + description: "Select a Support Scorestreak", + required: true, + choices: [ + { + name: "UAV", + value: "uav", + }, + { + name: "Shock RC", + value: "shockrc", + }, + { + name: "Care Package", + value: "carepackage", + }, + { + name: "Counter UAV", + value: "cuav", + }, + { + name: "SAM Turret", + value: "samturret", + }, + { + name: "Advance UAV", + value: "auav", + }, + { + name: "EMP Systems", + value: "empsystems", + }, + ], + }, + ], + }, + ], + run: async (client, interaction, args) => { + const val = args[1]; + const d = await c.getscorestreak(val); + const embed = new MessageEmbed() + .setTitle(d.scorestreak) + .setURL(d.preview_video) + .setDescription(`\`\`\`${d.description}\`\`\``) + .addFields( + { + name: "Cost", + value: `\`\`\`${d.cost}\`\`\``, + inline: true + }, + { + name: "Lethal", + value: ` + ${d.lethal == true + ? "<a:nyx_checkmark:897240322411724841> Yes" + : "<a:nyx_cross:897244999211696198> No"}`, + inline: true + }, + { + name: "AI-Assisted", + value: ` + ${d.manual == false + ? "<a:nyx_checkmark:897240322411724841> Yes" + : "<a:nyx_cross:897244999211696198> No"}`, + inline: true + }, + { + name: "More Info", + value: `\`\`\`${d.special}\`\`\``, + inline: false + } + ) + .setThumbnail(`${d.preview}`) + .setFooter(`Made by ${client.author}`, client.user.displayAvatarURL()) + .setColor( + d.type == "lethal" + ? "FF2222" + : d.type == "support" + ? "22FF4A" + : client.color + ) + .setTimestamp(); + interaction.followUp({ embeds: [embed] }); + }, +}; diff --git a/nsfw.js b/nsfw.js @@ -1,148 +1,149 @@ -const fetch = require('node-fetch') -const { MessageActionRow, MessageButton, MessageEmbed, CommandInteraction } = require('discord.js'); +const fetch = require("node-fetch"); +const { + MessageActionRow, + MessageButton, + MessageEmbed, + CommandInteraction, +} = require("discord.js"); module.exports = { - name : 'nsfw', - description: "nsfw command", - /** - * @param {Client} client - * @param {CommandInteraction} interaction - * @param {String[]} args - */ - run : async(client, interaction) => { - - async function embed() { - if(!interaction.channel.nsfw){ - const embed = new MessageEmbed() - .setTitle(`AYO Calm Yo Cheeks`) - .setDescription('This command only works in NSFW Channels!') - .setImage('https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif') - .setColor("#02023a") - - interaction.followUp({ embeds: [embed]}) - return; - } - let subreddits = [ - 'GoneWild', - 'WorkGoneWild', - 'GoneWild30Plus', - 'hentai', - 'HentaiAnime', - 'nekogirls', - 'ass', - 'BestBooties', - 'BootyGIFs', - 'booty_queens', - 'BlowJob', - 'blowjobs', - 'blowjobgifs', - 'OralSex', - 'boobs', - 'GrabHerTitties', - 'titfuck', - 'milf', - 'OnlyHotMilfs', - 'realmoms', - 'thighs', - 'PerfectThighs', - 'thickthighs' - ] - let reddit = subreddits[Math.round(Math.random() * (subreddits.length - 1))]; - - let embed1 = null - await fetch(`https://meme-api.herokuapp.com/gimme/${reddit}`).then(res => res.json().then(url => { - embed1 = new MessageEmbed() - .setAuthor( - interaction.user.tag, - interaction.user.displayAvatarURL({ dynamic: true }) - ) - .setTitle(`${url.title}`) - .setImage(`${url.url}`) - .setTimestamp() - .setColor("RED") - .setFooter(`${url.ups} 👍`) - })) - return embed1 - - } - - const row = new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId('reload') - .setLabel('Reload') - .setStyle('SUCCESS'), + name: "nsfw", + description: "nsfw command", + /** + * @param {Client} client + * @param {CommandInteraction} interaction + * @param {String[]} args + */ + run: async (client, interaction) => { + async function embed() { + if (!interaction.channel.nsfw) { + const embed = new MessageEmbed() + .setTitle(`AYO Calm Yo Cheeks`) + .setDescription("This command only works in NSFW Channels!") + .setImage( + "https://media.discordapp.net/attachments/851761493815853060/893777701599584266/warning.gif" ) - const disabled = new MessageActionRow() - .addComponents( - new MessageButton() - .setCustomId('reload') - .setLabel('Reload Meme') - .setStyle('SECONDARY') - .setDisabled(true) + .setColor("#02023a"); - ) + interaction.followUp({ embeds: [embed] }); + return; + } + let subreddits = [ + "GoneWild", + "WorkGoneWild", + "GoneWild30Plus", + "hentai", + "HentaiAnime", + "nekogirls", + "ass", + "BestBooties", + "BootyGIFs", + "booty_queens", + "BlowJob", + "blowjobs", + "blowjobgifs", + "OralSex", + "boobs", + "GrabHerTitties", + "titfuck", + "milf", + "OnlyHotMilfs", + "realmoms", + "thighs", + "PerfectThighs", + "thickthighs", + ]; + let reddit = + subreddits[Math.round(Math.random() * (subreddits.length - 1))]; - let m = await interaction.followUp({ - embeds: [await embed()], - components: [row] - }) + let embed1 = null; + await fetch(`https://meme-api.herokuapp.com/gimme/${reddit}`).then(res => + res.json().then(url => { + embed1 = new MessageEmbed() + .setAuthor( + interaction.user.tag, + interaction.user.displayAvatarURL({ dynamic: true }) + ) + .setTitle(`${url.title}`) + .setImage(`${url.url}`) + .setTimestamp() + .setColor("RED") + .setFooter(`${url.ups} 👍`); + }) + ); + return embed1; + } - const collector = m.createMessageComponentCollector({ - componentType: 'BUTTON', - time: 120000, - }); - collector.on('collect', async i => { - if (i.user.id === interaction.user.id) { - i.deferUpdate() - await update(m) - collector.stop() - } else { - i.reply({ - content: `These buttons aren't for you!`, - ephemeral: true - }); - } - }) - collector.on('end', (mes, r) => { - if (r == 'time') { - m.edit({ - components: [disabled], - }) - } - }) + const row = new MessageActionRow().addComponents( + new MessageButton() + .setCustomId("reload") + .setLabel("Reload") + .setStyle("SUCCESS") + ); + const disabled = new MessageActionRow().addComponents( + new MessageButton() + .setCustomId("reload") + .setLabel("Reload Meme") + .setStyle("SECONDARY") + .setDisabled(true) + ); - async function update(m) { - m.edit({ - embeds: [await embed()] - }).catch(e => console.log(e.requestData.json.embeds)) + let m = await interaction.followUp({ + embeds: [await embed()], + components: [row], + }); - const collector = m.createMessageComponentCollector({ - componentType: 'BUTTON', - time: 120000, - }); - collector.on('collect', async i => { - if (i.user.id === interaction.user.id) { - - i.deferUpdate() - await update(m) - collector.stop() - } else { - i.reply({ - content: `These buttons aren't for you!`, - ephemeral: true - }); - } - }) - collector.on('end', (mes, r) => { - if (r == 'time') { - m.edit({ - components: [disabled], - }) - } - }) + const collector = m.createMessageComponentCollector({ + componentType: "BUTTON", + time: 120000, + }); + collector.on("collect", async i => { + if (i.user.id === interaction.user.id) { + i.deferUpdate(); + await update(m); + collector.stop(); + } else { + i.reply({ + content: `These buttons aren't for you!`, + ephemeral: true, + }); + } + }); + collector.on("end", (mes, r) => { + if (r == "time") { + m.edit({ + components: [disabled], + }); } + }); + async function update(m) { + m.edit({ + embeds: [await embed()], + }).catch(e => console.log(e.requestData.json.embeds)); - + const collector = m.createMessageComponentCollector({ + componentType: "BUTTON", + time: 120000, + }); + collector.on("collect", async i => { + if (i.user.id === interaction.user.id) { + i.deferUpdate(); + await update(m); + collector.stop(); + } else { + i.reply({ + content: `These buttons aren't for you!`, + ephemeral: true, + }); + } + }); + collector.on("end", (mes, r) => { + if (r == "time") { + m.edit({ + components: [disabled], + }); + } + }); } -} -\ No newline at end of file + }, +}; diff --git a/package.json b/package.json @@ -1,54 +0,0 @@ -{ - "name": "cath.exe", - "version": "0.0.1", - "description": "NYX bot created by Team NYX", - "engines": { - "node": "*", - "npm": "*" - }, - "main": "index.js", - "scripts": { - "dev": "nodemon .", - "start": "node .", - "lint": "eslint .", - "node-update": "npm i --save-dev node@16 && npm config set prefix=$(pwd)/node_modules/node && export PATH=$(pwd)/node_modules/node/bin:$PATH", - "node-clean": "rm -rf node_modules && rm package-lock.json && npm cache clear --force && npm cache clean --force && npm i", - "all": "npm run node-update && npm run node-clean" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/night0721/cath.exe.git" - }, - "keywords": [ - "bot", - "nyx", - "codm", - "discord", - "gunsmith" - ], - "author": "Ń1ght#0001", - "license": "CC-BY-NC-SA-4.0", - "bugs": { - "url": "https://github.com/night0721/cath.exe/issues" - }, - "homepage": "https://github.com/night0721/cath.exe#readme", - "funding": { - "type": "individual", - "url": "https://ko-fi.com/cathteam" - }, - "devDependencies": { - "node": "^17.3.0" - }, - "dependencies": { - "axios": "^0.25.0", - "cath": "^1.4.6", - "discord.js": "^13.6.0", - "dotenv": "^14.2.0", - "erela.js": "^2.3.3", - "erela.js-spotify": "^1.2.0", - "goosecache": "^9.0.14", - "moment": "^2.29.1", - "mongoose": "^5.13.14", - "quickchart-js": "^2.0.3" - } -} diff --git a/unused/commands/Information/botinfo.js b/unused/commands/Information/botinfo.js @@ -50,7 +50,7 @@ module.exports = { NYX ❯ \`v${version}\` Discord.js ❯ \`v${djsversion}\` Node.js ❯ \`${process.version}\``, - }, + } // Removed OS Info for troubleshooting. // // { diff --git a/util/Data/attachments.json b/util/Data/attachments.json @@ -1015,11 +1015,7 @@ "4x Tactical Scope", "4.4x Tactical Scope" ], - "stock": [ - "YKM Light Stock", - "OWC Skeleton Stock", - "RTC Steady Stock" - ], + "stock": ["YKM Light Stock", "OWC Skeleton Stock", "RTC Steady Stock"], "perk": [ "FMJ", "Sleight of Hand", @@ -1039,11 +1035,7 @@ "Tactical Foregrip A", "Bipod" ], - "ammo": [ - "Extended Mag A", - "Fast Reload", - "Halberd Mag" - ], + "ammo": ["Extended Mag A", "Fast Reload", "Halberd Mag"], "rear_grip": [ "Granulated Grip Tape", "Ruberized Grip Tape", @@ -2608,11 +2600,7 @@ "MIP Light FLash Guard", "RTC Light Muzzle Brake" ], - "barrel": [ - "Gurrilla Light Short", - "Last Stand Light", - "Banner Heavy" - ], + "barrel": ["Gurrilla Light Short", "Last Stand Light", "Banner Heavy"], "optic": [ "Red Dot Sight", "Holographic Sight", @@ -2638,10 +2626,7 @@ "Tactical Foregrip A", "Operator Foregrip" ], - "ammo": [ - "35 Round Fast Reload", - "55 Round Light Reload" - ], + "ammo": ["35 Round Fast Reload", "55 Round Light Reload"], "rear_grip": [ "Sturdy Grip Tape", "Ruberized Grip Tape",