diff --git a/models/build.js b/models/build.js index 8ac91ce1a..a471ab293 100644 --- a/models/build.js +++ b/models/build.js @@ -1,20 +1,27 @@ -const mongoose = require('mongoose') +const mongoose = require("mongoose") -const buildSchema = new mongoose.Schema({ - discord_id: {type: String, required: true}, - weapon: {type: String, required: true}, - title: {type: String}, - headgear: {type: [String], required: true}, - clothing: {type: [String], required: true}, - shoes: {type: [String], required: true}, - top: {type: Boolean} -}, { timestamps: true }) +const buildSchema = new mongoose.Schema( + { + discord_id: { type: String, required: true }, + weapon: { type: String, required: true }, + title: { type: String, required: false }, + description: { type: String, required: false }, + headgear: { type: [String], required: true }, + headgearItem: { type: String, required: false }, + clothing: { type: [String], required: true }, + clothingItem: { type: String, required: false }, + shoes: { type: [String], required: true }, + shoesItem: { type: String, required: false }, + top: { type: Boolean } + }, + { timestamps: true } +) -buildSchema.virtual('discord_user', { - ref: 'User', - localField: 'discord_id', - foreignField: 'discord_id', +buildSchema.virtual("discord_user", { + ref: "User", + localField: "discord_id", + foreignField: "discord_id", justOne: true }) -module.exports = mongoose.model('Build', buildSchema) \ No newline at end of file +module.exports = mongoose.model("Build", buildSchema) diff --git a/schemas/build.js b/schemas/build.js index 833968fef..0c515735b 100644 --- a/schemas/build.js +++ b/schemas/build.js @@ -7,6 +7,7 @@ const Build = require("../models/build") const User = require("../models/user") const Player = require("../models/player") const weapons = require("../utils/weapons") +const gear = require("../utils/gear") const typeDef = gql` extend type Query { @@ -17,18 +18,26 @@ const typeDef = gql` addBuild( weapon: String! title: String + description: String headgear: [Ability!]! + headgearItem: String clothing: [Ability!]! + clothingItem: String shoes: [Ability!]! + shoesItem: String ): Build deleteBuild(id: ID!): Boolean updateBuild( id: ID! weapon: String! title: String + description: String headgear: [Ability!]! + headgearItem: String clothing: [Ability!]! + clothingItem: String shoes: [Ability!]! + shoesItem: String ): Boolean } type Build { @@ -36,9 +45,13 @@ const typeDef = gql` discord_id: String! weapon: String! title: String + description: String headgear: [Ability!]! + headgearItem: String clothing: [Ability!]! + clothingItem: String shoes: [Ability!]! + shoesItem: String updatedAt: String! top: Boolean! discord_user: User! @@ -122,17 +135,48 @@ const resolvers = { }, Mutation: { addBuild: async (root, args, ctx) => { - if (!ctx.user) throw new AuthenticationError("User not logged in.") + if (!ctx.user) throw new AuthenticationError("Not logged in.") if (args.title) if (args.title.length > 100) throw new UserInputError("Title too long.", { invalidArgs: args }) + if (args.description) { + if (args.description.length > 1000) + throw new UserInputError("Description too long.", { + invalidArgs: args + }) + } if (!weapons.includes(args.weapon)) throw new UserInputError("Invalid weapon.", { invalidArgs: args }) + const items = gear.map(brand => { + const headItems = brand.head ? brand.head : [] + const clothesItems = brand.clothes ? brand.clothes : [] + const shoesItems = brand.shoes ? brand.shoes : [] + return headItems.concat(clothesItems).concat(shoesItems) + }) + if (args.headgearItem) { + if (!items.includes(args.headgearItem)) + throw new UserInputError("Invalid headgear item.", { + invalidArgs: args + }) + } + if (args.clothingItem) { + if (!items.includes(args.clothingItem)) + throw new UserInputError("Invalid clothing item.", { + invalidArgs: args + }) + } + if (args.shoesItem) { + if (!items.includes(args.shoesItem)) + throw new UserInputError("Invalid shoes item.", { + invalidArgs: args + }) + } + const existingBuilds = await Build.find({ discord_id: ctx.user.discord_id }).catch(e => { @@ -154,7 +198,7 @@ const resolvers = { }) }, deleteBuild: async (root, args, ctx) => { - if (!ctx.user) throw new AuthenticationError("not authenticated") + if (!ctx.user) throw new AuthenticationError("Not logged in.") const build = await Build.findOne({ _id: args.id }) @@ -177,6 +221,46 @@ const resolvers = { }, updateBuild: async (root, args, ctx) => { if (!ctx.user) throw new AuthenticationError("not authenticated") + if (args.title) + if (args.title.length > 100) + throw new UserInputError("Title too long.", { + invalidArgs: args + }) + if (args.description) { + if (args.description.length > 1000) + throw new UserInputError("Description too long.", { + invalidArgs: args + }) + } + if (!weapons.includes(args.weapon)) + throw new UserInputError("Invalid weapon.", { + invalidArgs: args + }) + + const items = gear.map(brand => { + const headItems = brand.head ? brand.head : [] + const clothesItems = brand.clothes ? brand.clothes : [] + const shoesItems = brand.shoes ? brand.shoes : [] + return headItems.concat(clothesItems).concat(shoesItems) + }) + if (args.headgearItem) { + if (!items.includes(args.headgearItem)) + throw new UserInputError("Invalid headgear item.", { + invalidArgs: args + }) + } + if (args.clothingItem) { + if (!items.includes(args.clothingItem)) + throw new UserInputError("Invalid clothing item.", { + invalidArgs: args + }) + } + if (args.shoesItem) { + if (!items.includes(args.shoesItem)) + throw new UserInputError("Invalid shoes item.", { + invalidArgs: args + }) + } const build = await Build.findOne({ _id: args.id }) if (!build) @@ -187,13 +271,11 @@ const resolvers = { if (ctx.user.discord_id !== build.discord_id) throw new AuthenticationError("no privileges to edit the build") - await Build.findByIdAndUpdate(build._id, { ...args, top: null }).catch( - e => { - throw new UserInputError(error.message, { - invalidArgs: args - }) - } - ) + await Build.findByIdAndUpdate(build._id, { ...args }).catch(e => { + throw new UserInputError(error.message, { + invalidArgs: args + }) + }) return true } diff --git a/utils/gear.js b/utils/gear.js new file mode 100644 index 000000000..15f58b625 --- /dev/null +++ b/utils/gear.js @@ -0,0 +1,715 @@ +const gear = [ + { + brand: "amiibo", + clothes: [ + "Enchanted Robe", + "Fresh Fish Gloves", + "Marinated Top", + "Pearlescent Hoodie", + "Power Armor", + "Power Armor Mk I", + "Samurai Jacket", + "School Cardigan", + "School Uniform", + "Squinja Suit", + "Steel Platemail" + ], + head: [ + "Enchanted Hat", + "Fresh Fish Head", + "Marinated Headphones", + "Pearlescent Crown", + "Power Mask", + "Power Mask Mk I", + "Samurai Helmet", + "Squid Clip-Ons", + "Squid Hairclip", + "Squinja Mask", + "Steel Helm" + ], + shoes: [ + "Enchanted Boots", + "Fresh Fish Feet", + "Fringed Loafers", + "Marinated Slip-Ons", + "Pearlescent Kicks", + "Power Boots", + "Power Boots Mk I", + "Samurai Shoes", + "School Shoes", + "Squinja Boots", + "Steel Greaves" + ] + }, + { + brand: "Annaki", + clothes: [ + "Annaki Blue Cuff", + "Annaki Drive Tee ", + "Annaki Evolution Tee", + "Annaki Flannel Hoodie", + "Annaki Polpo-Pic Tee", + "Annaki Red Cuff", + "Annaki Yellow Cuff", + "Crimson Parashooter", + "Hula Punk Shirt", + "Prune Parashooter", + "Red Hula Punk with Tie", + "Rockin' Leather Jacket" + ], + head: ["Annaki Beret", "Annaki Beret & Glasses", "Annaki Mask"], + shoes: ["Annaki Arachno Boots", "Annaki Habaneros", "Annaki Tigers"] + }, + { + brand: "Cuttlegear", + clothes: [ + "Armor Jacket Replica", + "Black Cuttlegear LS", + "Fresh Octo Tee", + "Hero Hoodie Replica", + "Hero Jacket Replica", + "Neo Octoling Armor", + "Null Armor Replica", + "Octarian Retro", + "Octo Layered LS", + "Octo Tee", + "Old-Timey Clothes", + "Red Cuttlegear LS", + "Sennyu Suit" + ], + head: [ + "Armor Helmet Replica", + "Conductor Cap", + "Golden Toothpick", + "Hero Headphones Replica", + "Hero Headset Replica", + "Null Visor Replica", + "Octoling Shades", + "Old-Timey Hat", + "Studio Octophones" + ], + shoes: [ + "Armor Boot Replicas", + "Hero Runner Replicas", + "Hero Snowboots Replicas", + "Neo Octoling Boots", + "Null Boots Replica", + "Old-Timey Shoes" + ] + }, + { + brand: "Enperry", + clothes: [ + "Black Velour Octoking Tee ", + "Grape Hoodie", + "Green Velour Octoking Tee", + "King Jersey", + "Milky Eminence Jacket", + "N-Pacer Sweat", + "Navy Eminence Jacket", + "Navy King Tank", + "Octoking HK Jersey", + "Slash King Tank", + "White King Tank" + ], + head: [ + "Eminence Cuff", + "King Facemask", + "King Flip Mesh", + "Octoking Facemask" + ], + shoes: [ + "Black & Blue Squidkid V", + "Blue & Black Squidkid IV", + "Honey & Orange Squidkid V", + "Milky Enperrials", + "N-Pacer Ag", + "N-Pacer Au", + "N-Pacer CaO", + "Navy Enperrials", + "Online Squidkid V", + "Pearlescent Squidkid IV", + "Red & Black Squidkid IV", + "Red & White Squidkid V", + "Rina Squidkid IV", + "Sun & Shade Squidkid IV" + ] + }, + { + brand: "Firefin", + clothes: [ + "Baseball Jersey", + "Black 8-Bit FishFry", + "Blue 16-Bit FishFry", + "Camo Zip Hoodie", + "Carnivore Tee", + "Dark Urban Vest", + "Firefin Navy Sweat", + "Fugu Tee", + "Gray 8-Bit FishFry", + "Green Zip Hoodie", + "Herbivore Tee", + "Khaki 16-Bit FishFry", + "White 8-Bit FishFry", + "Yellow Urban Vest", + "ω-3 Tee" + ], + head: [ + "Black FishFry Bandana", + "Blowfish Bell Hat", + "Blowfish Newsie", + "Camo Mesh", + "Firefin Facemask", + "FishFry Biscuit Bandana", + "FishFry Visor", + "Fugu Bell Hat", + "Jet Cap", + "Jungle Hat", + "Knitted Hat", + "Octoglasses" + ], + shoes: ["Red FishFry Sandals", "Yellow FishFry Sandals"] + }, + { + brand: "Forge", + clothes: [ + "Aloha Shirt", + "Blue Sailor Suit", + "Brown FA-11 Bomber", + "Custom Painted F-3 ", + "FA-01 Jacket", + "FA-01 Reversed", + "Forge Inkling Parka", + "Forge Octarian Jacket", + "Gray FA-11 Bomber", + "Green Tee", + "Moist Ghillie Suit", + "White Leather F-3", + "White Sailor Suit" + ], + head: [ + "Deca Tackle Visor Helmet", + "Designer Headphones", + "Digi-Camo Forge Mask", + "Forge Mask", + "Gas Mask", + "Hockey Helmet", + "Moist Ghillie Helmet", + "Motocross Nose Guard", + "Noise Cancelers", + "Octo Tackle Helmet Deco", + "Paintball Mask", + "Pilot Goggles", + "Safari Hat", + "Sennyu Goggles", + "Sennyu Headphones", + "Skull Bandana", + "Snorkel Mask", + "Special Forces Beret", + "Splash Goggles", + "Squidfin Hook Cans", + "Squidlife Headphones", + "Stealth Goggles", + "Studio Headphones", + "Treasure Hunter" + ], + shoes: ["Moist Ghillie Boots"] + }, + { + brand: "Grizzco", + clothes: [ + "Anchor Life Vest", + "Crustwear XXL", + "Dev Uniform", + "Garden Gear", + "Juice Parka", + "North-Country Parka", + "Octoleet Armor", + "Office Attire", + "Online Jersey", + "Record Shop Look EP", + "Squiddor Polo", + "SRL Coat" + ], + head: [ + "Beekeeper Hat", + "Cap of Legend", + "Dust Blocker 2000", + "Headlamp Helmet", + "Oceanic Hard Hat", + "Octoleet Goggles", + "Sailor Cap", + "Welding Mask", + "Worker's Head Towel" + ], + shoes: [ + "Angry Rain Boots", + "Flipper Floppers", + "Non-slip Senseis", + "Octoleet Boots", + "Wooden Sandals" + ] + }, + { + brand: "Inkline", + clothes: [ + "Berry Ski Jacket", + "Blue Peaks Tee", + "Chili-Pepper Ski Jacket", + "Chilly Mountain Coat", + "Eggplant Mountain Coat", + "Fishing Vest", + "Forest Vest", + "Green Striped LS", + "Ivory Peaks Tee", + "Matcha Down Jacket", + "Mountain Vest", + "Olive Ski Jacket", + "Striped Peaks LS" + ], + head: [ + "Bamboo Hat", + "Camping Hat", + "Lightweight Cap", + "Mountie Hat", + "Seashell Bamboo Hat", + "Short Beanie", + "Tulip Parasol", + "Yamagiri Beanie" + ], + shoes: [ + "Acerola Rain Boots", + "Birch Climbing Shoes", + "Bubble Rain Boots", + "Custom Trail Boots", + "Green Rain Boots", + "Luminous Delta Straps", + "Musselforge Flip-Flops", + "Neon Delta Straps", + "Pro Trail Boots", + "Snow Delta Straps", + "Sunny Climbing Shoes", + "Trail Boots" + ] + }, + { + brand: "Krak-On", + clothes: [ + "Chili Octo Aloha", + "Krak-On 528", + "Missus Shrug Tee", + "Mister Shrug Tee", + "Octobowler Shirt", + "Rainy-Day Tee", + "Rodeo Shirt", + "Squid-Pattern Waistcoat", + "Squidstar Waistcoat", + "Sunny-Day Tee" + ], + head: [ + "Full Moon Glasses", + "Hickory Work Cap", + "Long-Billed Cap", + "Paisley Bandana", + "Two-Stripe Mesh", + "Woolly Urchins Classic" + ], + shoes: [ + "Banana Basics", + "Blue Slip-Ons", + "Blueberry Casuals", + "Choco Clogs", + "Clownfish Basics", + "Cream Basics", + "Cream Hi-Tops", + "Hunter Hi-Tops", + "Midnight Slip-Ons", + "Oyster Clogs", + "Plum Casuals", + "Polka-dot Slip-Ons", + "Red Hi-Tops", + "Red Slip-Ons", + "Squid-Stitch Slip-Ons", + "Truffle Canvas Hi-Tops" + ] + }, + { + brand: "Rockenberg", + clothes: [ + "Black Baseball LS", + "Black Inky Rider", + "Black Urchin Rock Tee", + "Chirpy Chips Band Tee", + "Hightide Era Band Tee", + "Lumberjack Shirt", + "Rockenberg Black", + "Rockenberg White", + "Round-Collar Shirt", + "Squid Squad Band Tee", + "Vintage Check Shirt", + "Wet Floor Band Tee", + "White Baseball LS", + "White Inky Rider", + "White Urchin Rock Tee" + ], + head: ["18K Aviators", "SV925 Circle Shades"], + shoes: [ + "Blue Moto Boots", + "Cherry Kicks", + "Deepsea Leather Boots", + "Gray Yellow-Soled Wingtips", + "Inky Kid Clams", + "Kid Clams", + "Moto Boots", + "Navy Red-Soled Wingtips", + "New-Leaf Leather Boots", + "Pearl Punk Crowns", + "Punk Blacks", + "Punk Cherries", + "Punk Whites", + "Punk Yellows", + "Red Work Boots", + "Roasted Brogues", + "Sennyu Inksoles", + "Smoky Wingtips", + "Squink Wingtips", + "Tan Work Boots", + "Turquoise Kicks", + "White Kicks" + ] + }, + { + brand: "Skalop", + clothes: [ + "Black Hoodie", + "Dots-On-Dots Shirt", + "Firewave Tee", + "Grape Tee", + "Gray Hoodie", + "Hothouse Hoodie", + "Icewave Tee", + "Mint Tee", + "Pearl Tee", + "Reggae Tee", + "Squid-Stitch Tee" + ], + head: [ + "Bike Helmet", + "Classic Straw Boater", + "Do-Rag, Cap, & Glasses", + "Hothouse Hat", + "Jellyvader Cap", + "Patched Hat", + "Skate Helmet", + "Sneaky Beanie", + "Sporty Bobble Hat", + "Squid Nordic", + "Squid-Stitch Cap", + "Squidvader Cap", + "Straw Boater", + "Streetstyle Cap", + "Urchins Cap", + "Visor Skate Helmet" + ], + shoes: [] + }, + { + brand: "Splash Mob", + clothes: [ + "Baby-Jelly Shirt", + "Baby-Jelly Shirt & Tie", + "Gray College Sweat", + "Green Cardigan", + "Lime Easy-Stripe Shirt", + "Linen Shirt", + "Navy College Sweat", + "Navy Striped LS", + "Orange Cardigan", + "Pink Easy-Stripe Shirt", + "Pink Hoodie", + "Pirate-Stripe Tee", + "Sage Polo", + "Sailor-Stripe Tee", + "Shirt & Tie", + "Shirt with Blue Hoodie", + "Shrimp-Pink Polo", + "Striped Shirt", + "Varsity Baseball LS", + "Whale-Knit Sweater", + "White Shirt", + "White Striped LS" + ], + head: [ + "Bobble Hat", + "Half-Rim Glasses", + "House-Tag Denim Cap", + "Pilot Hat", + "Retro Specs", + "Sennyu Bon Bon Beanie", + "Sennyu Specs", + "Striped Beanie" + ], + shoes: [ + "Green Laceups", + "Hunting Boots", + "Mawcasins", + "Piranha Moccasins", + "Shark Moccasins", + "Strapping Reds", + "Strapping Whites", + "Tea-Green Hunting Boots" + ] + }, + { + brand: "SquidForce", + clothes: [ + "Anchor Sweat", + "Basic Tee", + "Black Anchor Tee", + "Black Layered LS", + "Black Tee", + "Black V-Neck Tee", + "Camo Layered LS", + "Friend Tee", + "Green V-Neck Limited Tee", + "Layered Anchor LS", + "League Tee", + "Mecha Body - AKM", + "Octo Support Hoodie", + "Red V-Neck Limited Tee", + "Retro Sweat", + "Splatfest Tee", + "Squid Yellow Layered LS", + "Squidmark LS", + "Squidmark Sweat", + "SWC Logo Tee", + "White Anchor Tee", + "White Layered LS", + "White LS", + "White Tee", + "White V-Neck Tee", + "Yellow Layered LS" + ], + head: [ + "Anglerfish Mask", + "Bucket Hat", + "Eel-Cake Hat", + "Festive Party Cone", + "Hockey Mask", + "Koshien Bandana", + "Kyonshi Hat", + "Li'l Devil Horns", + "Mecha Head - HTR", + "New Year's Glasses DX", + "Painter's Mask", + "Squid Facemask", + "Twisty Headband", + "White Headband" + ], + shoes: ["Mecha Legs - LBS"] + }, + { + brand: "Takoroka", + clothes: [ + "Choco Layered LS", + "FC Albacore", + "Gray Vector Tee", + "Layered Vector LS", + "Purple Camo LS", + "Red Vector Tee", + "Slipstream United", + "Striped Rugby", + "Takoroka Crazy Baseball LS", + "Takoroka Galactic Tie Dye", + "Takoroka Jersey", + "Takoroka Nylon Vintage", + "Takoroka Rainbow Tie Dye", + "Takoroka Windcrusher", + "Tricolor Rugby" + ], + head: ["Takoroka Mesh", "Takoroka Visor"], + shoes: [ + "Athletic Arrows", + "Blue Power Stripes", + "Crazy Arrows", + "LE Soccer Shoes", + "New-Day Arrows", + "Orange Arrows", + "Orca Hi-Tops", + "Orca Passion Hi-Tops", + "Orca Woven Hi-Tops", + "Red Power Stripes", + "Soccer Shoes", + "Sunset Orca Hi-Tops", + "Trooper Power Stripes", + "White Arrows" + ] + }, + { + brand: "Tentatek", + clothes: [ + "Black Squideye", + "Blue Tentatek Tee", + "Cycle King Jersey", + "Lob-Stars Jersey", + "Part-Time Pirate", + "Red Tentatek Tee", + "Silver Tentatek Vest", + "Sky-Blue Squideye", + "Tentatek Slogan Tee" + ], + head: [ + "Cycle King Cap", + "Fake Contacts", + "Green Novelty Visor", + "Orange Novelty Visor", + "Pink Novelty Visor", + "Purple Novelty Visor", + "Soccer Headband", + "Sun Visor", + "Tennis Headband" + ], + shoes: [ + "Amber Sea Slug Hi-Tops", + "Black Norimaki 750s", + "Black Trainers", + "Blue Iromaki 750s", + "Blue Sea Slugs", + "Canary Trainers", + "Cyan Trainers", + "Gray Sea-Slug Hi-Tops", + "Green Iromaki 750s", + "Icy Down Boots", + "Neon Sea Slugs", + "Orange Iromaki 750s", + "Pink Trainers", + "Purple Iromaki 750s", + "Purple Sea Slugs", + "Red Iromaki 750s", + "Red Sea Slugs", + "Red-Mesh Sneakers", + "Sea Slug Volt 95s", + "Sesame Salt 270s", + "Snowy Down Boots", + "Violet Trainers", + "White Norimaki 750s", + "Yellow Iromaki 750s", + "Yellow-Mesh Sneakers" + ] + }, + { + brand: "Toni Kensa", + clothes: [ + "Dark Bomber Jacket", + "Front Zip Vest", + "Half-Sleeve Sweater", + "Ink-Wash Shirt", + "Inkfall Shirt", + "Kensa Coat", + "Kung-Fu Zip-Up", + "Light Bomber Jacket", + "Negative Longcuff Sweater", + "Panda Kung-Fu Zip-Up", + "Positive Longcuff Sweater", + "Pullover Coat", + "Short Knit Layers", + "Toni K. Baseball Jersey" + ], + head: ["Face Visor", "Ink-Guard Goggles", "Toni Kensa Goggles"], + shoes: [ + "Arrow Pull-Ons", + "Toni Kensa Black Hi-Tops", + "Toni Kensa Soccer Shoes" + ] + }, + { + brand: "Zekko", + clothes: [ + "Birded Corduroy Jacket", + "Black LS", + "Black Polo", + "Deep-Octo Satin Jacket", + "Gray Mixed Shirt", + "Green-Check Shirt", + "Logo Aloha Shirt", + "Olive Zekko Parka", + "Red-Check Shirt", + "Reel Sweat", + "Squid Satin Jacket", + "Tumeric Zekko Coat", + "Varsity Jacket", + "Zapfish Satin Jacket", + "Zekko Baseball LS", + "Zekko Hoodie", + "Zekko Jade Coat", + "Zekko Long Carrot Tee", + "Zekko Long Radish Tee", + "Zekko Redleaf Coat" + ], + head: [ + "Backwards Cap", + "Black Arrowbands", + "Double Egg Shades", + "Five-Panel Cap", + "Jogging Headband", + "Matte Bike Helmet", + "MTB Helmet", + "Tinted Shades", + "White Arrowbands", + "Zekko Cap", + "Zekko Mesh" + ], + shoes: [ + "Black Flip-Flops", + "Blue Lo-Tops", + "LE Lo-Tops", + "Marination Lace-Ups", + "Orange Lo-Tops", + "Pearl-Scout Lace-Ups", + "Suede Gray Lace-Ups", + "Suede Marine Lace-Ups", + "Suede Nation Lace-Ups" + ] + }, + { + brand: "Zink", + clothes: [ + "B-ball Jersey (Away)", + "B-ball Jersey (Home)", + "Cycling Shirt", + "Dakro Golden Tee", + "Dakro Nana Tee", + "Inkopolis Squaps Jersey", + "Navy Deca Logo Tee", + "Retro Gamer Jersey", + "School Jersey", + "Urchins Jersey", + "White Deca Logo Tee", + "Zink Layered LS", + "Zink LS" + ], + head: [ + "B-ball Headband", + "Cycling Cap", + "Golf Visor", + "Squash Headband", + "Swim Goggles" + ], + shoes: [ + "Black Dakroniks", + "Black Seahorses", + "Blue Laceless Dakroniks", + "Chocolate Dakroniks", + "Gold Hi-Horses", + "Mint Dakroniks", + "Purple Hi-Horses", + "Red Hi-Horses", + "White Laceless Dakroniks", + "White Seahorses", + "Yellow Seahorses", + "Zombie Hi-Horses" + ] + } +] + +module.exports = gear