HabitRPG/habitrpg

View on GitHub
website/common/script/content/gear/sets/special/index.js

Summary

Maintainability
F
3 wks
Test Coverage
import moment from 'moment';
import pickBy from 'lodash/pickBy';
import defaults from 'lodash/defaults';
import find from 'lodash/find';
import upperFirst from 'lodash/upperFirst';
import {
  CLASSES,
  EVENTS,
} from '../../../constants';
import { ownsItem } from '../../gear-helper';
import * as backerGear from './special-backer';
import * as contributorGear from './special-contributor';
import * as takeThisGear from './special-takeThis';
import * as wonderconGear from './special-wondercon';
import t from '../../../translation';
import { getClassName } from '../../../../libs/getClassName';

const CURRENT_EVENT = find(
  EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);

const gearEvents = pickBy(EVENTS, event => event.gear);

const armor = {
  0: backerGear.armorSpecial0,
  1: contributorGear.armorSpecial1,
  2: backerGear.armorSpecial2,
  takeThis: takeThisGear.armorSpecialTakeThis,
  finnedOceanicArmor: {
    text: t('armorSpecialFinnedOceanicArmorText'),
    notes: t('armorSpecialFinnedOceanicArmorNotes', { str: 15 }),
    str: 15,
    value: 130,
    canOwn: ownsItem('armor_special_finnedOceanicArmor'),
  },
  pyromancersRobes: {
    text: t('armorSpecialPyromancersRobesText'),
    notes: t('armorSpecialPyromancersRobesNotes', { con: 15 }),
    con: 15,
    value: 130,
    canOwn: ownsItem('armor_special_pyromancersRobes'),
  },
  bardRobes: {
    text: t('armorSpecialBardRobesText'),
    notes: t('armorSpecialBardRobesNotes', { per: 3 }),
    per: 3,
    value: 0,
    canOwn: ownsItem('armor_special_bardRobes'),
  },
  lunarWarriorArmor: {
    text: t('armorSpecialLunarWarriorArmorText'),
    notes: t('armorSpecialLunarWarriorArmorNotes', { attrs: 7 }),
    str: 7,
    con: 7,
    value: 130,
    canOwn: ownsItem('armor_special_lunarWarriorArmor'),
  },
  mammothRiderArmor: {
    text: t('armorSpecialMammothRiderArmorText'),
    notes: t('armorSpecialMammothRiderArmorNotes', { con: 15 }),
    con: 15,
    value: 130,
    canOwn: ownsItem('armor_special_mammothRiderArmor'),
  },
  roguishRainbowMessengerRobes: {
    text: t('armorSpecialRoguishRainbowMessengerRobesText'),
    notes: t('armorSpecialRoguishRainbowMessengerRobesNotes', { str: 15 }),
    str: 15,
    value: 130,
    canOwn: ownsItem('armor_special_roguishRainbowMessengerRobes'),
  },
  pageArmor: {
    text: t('armorSpecialPageArmorText'),
    notes: t('armorSpecialPageArmorNotes', { con: 16 }),
    con: 16,
    value: 0,
    canOwn: ownsItem('armor_special_pageArmor'),
  },
  sneakthiefRobes: {
    text: t('armorSpecialSneakthiefRobesText'),
    notes: t('armorSpecialSneakthiefRobesNotes', { int: 16 }),
    int: 16,
    value: 0,
    canOwn: ownsItem('armor_special_sneakthiefRobes'),
  },
  snowSovereignRobes: {
    text: t('armorSpecialSnowSovereignRobesText'),
    notes: t('armorSpecialSnowSovereignRobesNotes', { per: 17 }),
    per: 17,
    value: 0,
    canOwn: ownsItem('armor_special_snowSovereignRobes'),
  },
  dandySuit: {
    text: t('armorSpecialDandySuitText'),
    notes: t('armorSpecialDandySuitNotes', { per: 17 }),
    per: 17,
    value: 0,
    canOwn: ownsItem('armor_special_dandySuit'),
  },
  nomadsCuirass: {
    text: t('armorSpecialNomadsCuirassText'),
    notes: t('armorSpecialNomadsCuirassNotes', { con: 17 }),
    con: 17,
    value: 0,
    canOwn: ownsItem('armor_special_nomadsCuirass'),
  },
  samuraiArmor: {
    text: t('armorSpecialSamuraiArmorText'),
    notes: t('armorSpecialSamuraiArmorNotes', { per: 17 }),
    per: 17,
    value: 0,
    canOwn: ownsItem('armor_special_samuraiArmor'),
  },
  turkeyArmorBase: {
    text: t('armorSpecialTurkeyArmorBaseText'),
    notes: t('armorSpecialTurkeyArmorBaseNotes'),
    value: 0,
    canOwn: ownsItem('armor_special_turkeyArmorBase'),
  },
  yeti: {
    specialClass: 'warrior',
    set: 'yetiSet',
    text: t('armorSpecialYetiText'),
    notes: t('armorSpecialYetiNotes', { con: 9 }),
    con: 9,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  ski: {
    specialClass: 'rogue',
    set: 'skiSet',
    text: t('armorSpecialSkiText'),
    notes: t('armorSpecialSkiNotes', { per: 15 }),
    per: 15,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  candycane: {
    specialClass: 'wizard',
    set: 'candycaneSet',
    text: t('armorSpecialCandycaneText'),
    notes: t('armorSpecialCandycaneNotes', { int: 9 }),
    int: 9,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  snowflake: {
    specialClass: 'healer',
    set: 'snowflakeSet',
    text: t('armorSpecialSnowflakeText'),
    notes: t('armorSpecialSnowflakeNotes', { con: 15 }),
    con: 15,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday: {
    event: EVENTS.birthday,
    text: t('armorSpecialBirthdayText'),
    notes: t('armorSpecialBirthdayNotes'),
    value: 0,
  },
  springRogue: {
    set: 'stealthyKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springWarrior: {
    set: 'mightyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springMage: {
    set: 'magicMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springHealer: {
    set: 'lovingPupSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summerRogue: {
    set: 'roguishPirateSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerWarrior: {
    set: 'daringSwashbucklerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerMage: {
    set: 'emeraldMermageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerHealer: {
    set: 'reefSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fallRogue: {
    set: 'vampireSmiterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallWarrior: {
    set: 'monsterOfScienceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallMage: {
    set: 'witchyWizardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallHealer: {
    set: 'mummyMedicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2015Rogue: {
    set: 'icicleDrakeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Warrior: {
    set: 'gingerbreadSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Mage: {
    set: 'northMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Healer: {
    set: 'soothingSkaterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2015: {
    text: t('armorSpecialBirthday2015Text'),
    notes: t('armorSpecialBirthday2015Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2015'),
  },
  spring2015Rogue: {
    set: 'sneakySqueakerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Warrior: {
    set: 'bewareDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Mage: {
    set: 'magicianBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Healer: {
    set: 'comfortingKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2015Rogue: {
    set: 'reefRenegadeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Warrior: {
    set: 'sunfishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Mage: {
    set: 'shipSoothsayerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Healer: {
    set: 'strappingSailorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2015Rogue: {
    set: 'battleRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Warrior: {
    set: 'scarecrowWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Mage: {
    set: 'stitchWitchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Healer: {
    set: 'potionerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  gaymerx: {
    event: EVENTS.gaymerx,
    text: t('armorSpecialGaymerxText'),
    notes: t('armorSpecialGaymerxNotes'),
    value: 0,
  },
  winter2016Rogue: {
    set: 'cocoaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Warrior: {
    set: 'snowDaySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Mage: {
    set: 'snowboardingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Healer: {
    set: 'festiveFairySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2016: {
    text: t('armorSpecialBirthday2016Text'),
    notes: t('armorSpecialBirthday2016Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2016'),
  },
  spring2016Rogue: {
    set: 'cleverDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Warrior: {
    set: 'braveMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Mage: {
    set: 'grandMalkinSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Healer: {
    set: 'springingBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2016Rogue: {
    set: 'summer2016EelSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Warrior: {
    set: 'summer2016SharkWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Mage: {
    set: 'summer2016DolphinMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Healer: {
    set: 'summer2016SeahorseHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2016Rogue: {
    set: 'fall2016BlackWidowSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Warrior: {
    set: 'fall2016SwampThingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Mage: {
    set: 'fall2016WickedSorcererSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Healer: {
    set: 'fall2016GorgonHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2017Rogue: {
    set: 'winter2017FrostyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Warrior: {
    set: 'winter2017IceHockeySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Mage: {
    set: 'winter2017WinterWolfSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Healer: {
    set: 'winter2017SugarPlumSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2017: {
    text: t('armorSpecialBirthday2017Text'),
    notes: t('armorSpecialBirthday2017Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2017'),
  },
  spring2017Rogue: {
    set: 'spring2017SneakyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Warrior: {
    set: 'spring2017FelineWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Mage: {
    set: 'spring2017CanineConjurorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Healer: {
    set: 'spring2017FloralMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2017Rogue: {
    set: 'summer2017SeaDragonSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Warrior: {
    set: 'summer2017SandcastleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Mage: {
    set: 'summer2017WhirlpoolMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Healer: {
    set: 'summer2017SeashellSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2017Rogue: {
    set: 'fall2017TrickOrTreatSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Warrior: {
    set: 'fall2017HabitoweenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Mage: {
    set: 'fall2017MasqueradeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Healer: {
    set: 'fall2017HauntedHouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2018Rogue: {
    set: 'winter2018ReindeerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Warrior: {
    set: 'winter2018GiftWrappedSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Mage: {
    set: 'winter2018ConfettiSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Healer: {
    set: 'winter2018MistletoeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2018: {
    text: t('armorSpecialBirthday2018Text'),
    notes: t('armorSpecialBirthday2018Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2018'),
  },
  spring2018Rogue: {
    set: 'spring2018DucklingRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Warrior: {
    set: 'spring2018SunriseWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Mage: {
    set: 'spring2018TulipMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Healer: {
    set: 'spring2018GarnetHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2018Rogue: {
    set: 'summer2018FisherRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Warrior: {
    set: 'summer2018BettaFishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Mage: {
    set: 'summer2018LionfishMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Healer: {
    set: 'summer2018MerfolkMonarchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2018Rogue: {
    set: 'fall2018AlterEgoSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Warrior: {
    set: 'fall2018MinotaurWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Mage: {
    set: 'fall2018CandymancerMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Healer: {
    set: 'fall2018CarnivorousPlantSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  turkeyArmorGilded: {
    text: t('armorSpecialTurkeyArmorGildedText'),
    notes: t('armorSpecialTurkeyArmorGildedNotes'),
    value: 0,
    canOwn: ownsItem('armor_special_turkeyArmorGilded'),
  },
  winter2019Rogue: {
    set: 'winter2019PoinsettiaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Warrior: {
    set: 'winter2019BlizzardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Mage: {
    set: 'winter2019PyrotechnicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Healer: {
    set: 'winter2019WinterStarSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2019: {
    text: t('armorSpecialBirthday2019Text'),
    notes: t('armorSpecialBirthday2019Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2019'),
  },
  spring2019Rogue: {
    set: 'spring2019CloudRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Warrior: {
    set: 'spring2019OrchidWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Mage: {
    set: 'spring2019AmberMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Healer: {
    set: 'spring2019RobinHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2019Rogue: {
    set: 'summer2019HammerheadRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Warrior: {
    set: 'summer2019SeaTurtleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Mage: {
    set: 'summer2019WaterLilyMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Healer: {
    set: 'summer2019ConchHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2019Rogue: {
    set: 'fall2019OperaticSpecterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Warrior: {
    set: 'fall2019RavenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Mage: {
    set: 'fall2019CyclopsSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Healer: {
    set: 'fall2019LichSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  ks2019: {
    text: t('armorSpecialKS2019Text'),
    notes: t('armorSpecialKS2019Notes', { con: 20 }),
    value: 0,
    con: 20,
    canOwn: ownsItem('armor_special_ks2019'),
  },
  winter2020Rogue: {
    set: 'winter2020LanternSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Warrior: {
    set: 'winter2020EvergreenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Mage: {
    set: 'winter2020CarolOfTheMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Healer: {
    set: 'winter2020WinterSpiceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2020: {
    text: t('armorSpecialBirthday2020Text'),
    notes: t('armorSpecialBirthday2020Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2020'),
  },
  spring2020Rogue: {
    set: 'spring2020LapisLazuliRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Warrior: {
    set: 'spring2020BeetleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Mage: {
    set: 'spring2020PuddleMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Healer: {
    set: 'spring2020IrisHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2020Rogue: {
    set: 'summer2020CrocodileRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Warrior: {
    set: 'summer2020RainbowTroutWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Mage: {
    set: 'summer2020OarfishMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Healer: {
    set: 'summer2020SeaGlassHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2020Rogue: {
    set: 'fall2020TwoHeadedRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Warrior: {
    set: 'fall2020WraithWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Mage: {
    set: 'fall2020ThirdEyeMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Healer: {
    set: 'fall2020DeathsHeadMothHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2021Rogue: {
    set: 'winter2021HollyIvyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Warrior: {
    set: 'winter2021IceFishingWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Mage: {
    set: 'winter2021WinterMoonMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Healer: {
    set: 'winter2021ArcticExplorerHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  birthday2021: {
    text: t('armorSpecialBirthday2021Text'),
    notes: t('armorSpecialBirthday2021Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2021'),
  },
  spring2021Rogue: {
    set: 'spring2021TwinFlowerRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Warrior: {
    set: 'spring2021SunstoneWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Mage: {
    set: 'spring2021SwanMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Healer: {
    set: 'spring2021WillowHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2021Rogue: {
    set: 'summer2021ClownfishRogueSet',
  },
  summer2021Warrior: {
    set: 'summer2021FlyingFishWarriorSet',
  },
  summer2021Mage: {
    set: 'summer2021NautilusMageSet',
  },
  summer2021Healer: {
    set: 'summer2021ParrotHealerSet',
  },
  fall2021Rogue: {
    set: 'fall2021OozeRogueSet',
  },
  fall2021Warrior: {
    set: 'fall2021HeadlessWarriorSet',
  },
  fall2021Mage: {
    set: 'fall2021BrainEaterMageSet',
  },
  fall2021Healer: {
    set: 'fall2021FlameSummonerHealerSet',
  },
  winter2022Rogue: {
    set: 'winter2022FireworksRogueSet',
  },
  winter2022Warrior: {
    set: 'winter2022StockingWarriorSet',
  },
  winter2022Mage: {
    set: 'winter2022PomegranateMageSet',
  },
  winter2022Healer: {
    set: 'winter2022IceCrystalHealerSet',
  },
  spring2022Rogue: {
    set: 'spring2022MagpieRogueSet',
  },
  spring2022Warrior: {
    set: 'spring2022RainstormWarriorSet',
  },
  spring2022Mage: {
    set: 'spring2022ForsythiaMageSet',
  },
  spring2022Healer: {
    set: 'spring2022PeridotHealerSet',
  },

  birthday2022: {
    text: t('armorSpecialBirthday2022Text'),
    notes: t('armorSpecialBirthday2022Notes'),
    value: 0,
    canOwn: ownsItem('armor_special_birthday2022'),
  },
};

const armorStats = {
  healer: { con: 15 },
  rogue: { per: 15 },
  warrior: { con: 9 },
  wizard: { int: 9 },
};

Object.keys(gearEvents).forEach(event => {
  CLASSES.forEach(klass => {
    const classNameString = getClassName(klass);
    const eventString = `${event}${upperFirst(classNameString)}`;
    const textString = `armorSpecial${upperFirst(event)}${upperFirst(classNameString)}`;
    defaults(armor[eventString], {
      event: gearEvents[event],
      specialClass: klass,
      text: t(`${textString}Text`),
      notes: t(`${textString}Notes`, armorStats[klass]),
      value: 90,
    }, armorStats[klass]);
    if (armor[eventString].canBuy && armor[eventString].canBuy()) {
      armor[eventString].event = CURRENT_EVENT;
    }
  });
});

const back = {
  wondercon_red: wonderconGear.backSpecialWonderconRed, // eslint-disable-line camelcase
  wondercon_black: wonderconGear.backSpecialWonderconBlack, // eslint-disable-line camelcase
  takeThis: takeThisGear.backSpecialTakeThis,
  snowdriftVeil: {
    text: t('backSpecialSnowdriftVeilText'),
    notes: t('backSpecialSnowdriftVeilNotes'),
    value: 0,
  },
  aetherCloak: {
    text: t('backSpecialAetherCloakText'),
    notes: t('backSpecialAetherCloakNotes', { per: 10 }),
    value: 175,
    per: 10,
    canOwn: ownsItem('back_special_aetherCloak'),
  },
  turkeyTailBase: {
    text: t('backSpecialTurkeyTailBaseText'),
    notes: t('backSpecialTurkeyTailBaseNotes'),
    value: 0,
    canOwn: ownsItem('back_special_turkeyTailBase'),
  },
  bearTail: {
    gearSet: 'animal',
    text: t('backBearTailText'),
    notes: t('backBearTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_bearTail'),
    canBuy: () => true,
  },
  cactusTail: {
    gearSet: 'animal',
    text: t('backCactusTailText'),
    notes: t('backCactusTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_cactusTail'),
    canBuy: () => true,
  },
  foxTail: {
    gearSet: 'animal',
    text: t('backFoxTailText'),
    notes: t('backFoxTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_foxTail'),
    canBuy: () => true,
  },
  lionTail: {
    gearSet: 'animal',
    text: t('backLionTailText'),
    notes: t('backLionTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_lionTail'),
    canBuy: () => true,
  },
  pandaTail: {
    gearSet: 'animal',
    text: t('backPandaTailText'),
    notes: t('backPandaTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_pandaTail'),
    canBuy: () => true,
  },
  pigTail: {
    gearSet: 'animal',
    text: t('backPigTailText'),
    notes: t('backPigTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_pigTail'),
    canBuy: () => true,
  },
  tigerTail: {
    gearSet: 'animal',
    text: t('backTigerTailText'),
    notes: t('backTigerTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_tigerTail'),
    canBuy: () => true,
  },
  wolfTail: {
    gearSet: 'animal',
    text: t('backWolfTailText'),
    notes: t('backWolfTailNotes'),
    value: 20,
    canOwn: ownsItem('back_special_wolfTail'),
    canBuy: () => true,
  },
  turkeyTailGilded: {
    text: t('backSpecialTurkeyTailGildedText'),
    notes: t('backSpecialTurkeyTailGildedNotes'),
    value: 0,
    canOwn: ownsItem('back_special_turkeyTailGilded'),
  },
  namingDay2020: {
    text: t('backSpecialNamingDay2020Text'),
    notes: t('backSpecialNamingDay2020Notes'),
    value: 0,
    canOwn: ownsItem('back_special_namingDay2020'),
  },
};

const body = {
  wondercon_red: wonderconGear.bodySpecialWonderconRed, // eslint-disable-line camelcase
  wondercon_gold: wonderconGear.bodySpecialWonderconGold, // eslint-disable-line camelcase
  wondercon_black: wonderconGear.bodySpecialWonderconBlack, // eslint-disable-line camelcase
  takeThis: takeThisGear.bodySpecialTakeThis,
  summerHealer: {
    specialClass: 'healer',
    set: 'reefSeahealerSet',
    text: t('bodySpecialSummerHealerText'),
    notes: t('bodySpecialSummerHealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerMage: {
    specialClass: 'wizard',
    set: 'emeraldMermageSet',
    text: t('bodySpecialSummerMageText'),
    notes: t('bodySpecialSummerMageNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Healer: {
    specialClass: 'healer',
    set: 'strappingSailorSet',
    text: t('bodySpecialSummer2015HealerText'),
    notes: t('bodySpecialSummer2015HealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Mage: {
    specialClass: 'wizard',
    set: 'shipSoothsayerSet',
    text: t('bodySpecialSummer2015MageText'),
    notes: t('bodySpecialSummer2015MageNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Rogue: {
    specialClass: 'rogue',
    set: 'reefRenegadeSet',
    text: t('bodySpecialSummer2015RogueText'),
    notes: t('bodySpecialSummer2015RogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Warrior: {
    specialClass: 'warrior',
    set: 'sunfishWarriorSet',
    text: t('bodySpecialSummer2015WarriorText'),
    notes: t('bodySpecialSummer2015WarriorNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  aetherAmulet: {
    text: t('bodySpecialAetherAmuletText'),
    notes: t('bodySpecialAetherAmuletNotes', { attrs: 10 }),
    value: 175,
    str: 10,
    con: 10,
    canOwn: ownsItem('body_special_aetherAmulet'),
  },
  namingDay2018: {
    text: t('bodySpecialNamingDay2018Text'),
    notes: t('bodySpecialNamingDay2018Notes'),
    value: 0,
    canOwn: ownsItem('body_special_namingDay2018'),
  },
};

const eyewear = {
  wondercon_red: wonderconGear.eyewearSpecialWonderconRed, // eslint-disable-line camelcase
  wondercon_black: wonderconGear.eyewearSpecialWonderconBlack, // eslint-disable-line camelcase
  summerRogue: {
    specialClass: 'rogue',
    set: 'roguishPirateSet',
    text: t('eyewearSpecialSummerRogueText'),
    notes: t('eyewearSpecialSummerRogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerWarrior: {
    specialClass: 'warrior',
    set: 'daringSwashbucklerSet',
    text: t('eyewearSpecialSummerWarriorText'),
    notes: t('eyewearSpecialSummerWarriorNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  blackTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialBlackTopFrameText'),
    notes: t('eyewearSpecialBlackTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_blackTopFrame'),
  },
  blueTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialBlueTopFrameText'),
    notes: t('eyewearSpecialBlueTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_blueTopFrame'),
  },
  greenTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialGreenTopFrameText'),
    notes: t('eyewearSpecialGreenTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_greenTopFrame'),
  },
  pinkTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialPinkTopFrameText'),
    notes: t('eyewearSpecialPinkTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_pinkTopFrame'),
  },
  redTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialRedTopFrameText'),
    notes: t('eyewearSpecialRedTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_redTopFrame'),
  },
  whiteTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialWhiteTopFrameText'),
    notes: t('eyewearSpecialWhiteTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_whiteTopFrame'),
  },
  yellowTopFrame: {
    gearSet: 'glasses',
    text: t('eyewearSpecialYellowTopFrameText'),
    notes: t('eyewearSpecialYellowTopFrameNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_yellowTopFrame'),
  },
  aetherMask: {
    text: t('eyewearSpecialAetherMaskText'),
    notes: t('eyewearSpecialAetherMaskNotes', { int: 10 }),
    value: 175,
    int: 10,
    canOwn: ownsItem('eyewear_special_aetherMask'),
  },
  blackHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialBlackHalfMoonText'),
    notes: t('eyewearSpecialBlackHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_blackHalfMoon'),
  },
  blueHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialBlueHalfMoonText'),
    notes: t('eyewearSpecialBlueHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_blueHalfMoon'),
  },
  greenHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialGreenHalfMoonText'),
    notes: t('eyewearSpecialGreenHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_greenHalfMoon'),
  },
  pinkHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialPinkHalfMoonText'),
    notes: t('eyewearSpecialPinkHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_pinkHalfMoon'),
  },
  redHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialRedHalfMoonText'),
    notes: t('eyewearSpecialRedHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_redHalfMoon'),
  },
  whiteHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialWhiteHalfMoonText'),
    notes: t('eyewearSpecialWhiteHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_whiteHalfMoon'),
  },
  yellowHalfMoon: {
    gearSet: 'glasses',
    text: t('eyewearSpecialYellowHalfMoonText'),
    notes: t('eyewearSpecialYellowHalfMoonNotes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_yellowHalfMoon'),
  },
  fall2019Rogue: {
    specialClass: 'rogue',
    set: 'fall2019OperaticSpecterSet',
    text: t('eyewearSpecialFall2019RogueText'),
    notes: t('eyewearSpecialFall2019RogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Healer: {
    specialClass: 'healer',
    set: 'fall2019LichSet',
    text: t('eyewearSpecialFall2019HealerText'),
    notes: t('eyewearSpecialFall2019HealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  ks2019: {
    text: t('eyewearSpecialKS2019Text'),
    notes: t('eyewearSpecialKS2019Notes'),
    value: 0,
    canOwn: ownsItem('eyewear_special_ks2019'),
  },
};

const head = {
  0: backerGear.headSpecial0,
  1: contributorGear.headSpecial1,
  2: backerGear.headSpecial2,
  takeThis: takeThisGear.headSpecialTakeThis,
  fireCoralCirclet: {
    text: t('headSpecialFireCoralCircletText'),
    notes: t('headSpecialFireCoralCircletNotes', { per: 15 }),
    per: 15,
    value: 130,
    canOwn: ownsItem('head_special_fireCoralCirclet'),
  },
  pyromancersTurban: {
    text: t('headSpecialPyromancersTurbanText'),
    notes: t('headSpecialPyromancersTurbanNotes', { str: 15 }),
    str: 15,
    value: 130,
    canOwn: ownsItem('head_special_pyromancersTurban'),
  },
  bardHat: {
    text: t('headSpecialBardHatText'),
    notes: t('headSpecialBardHatNotes', { int: 3 }),
    int: 3,
    value: 0,
    canOwn: ownsItem('head_special_bardHat'),
  },
  lunarWarriorHelm: {
    text: t('headSpecialLunarWarriorHelmText'),
    notes: t('headSpecialLunarWarriorHelmNotes', { attrs: 7 }),
    int: 7,
    str: 7,
    value: 130,
    canOwn: ownsItem('head_special_lunarWarriorHelm'),
  },
  mammothRiderHelm: {
    text: t('headSpecialMammothRiderHelmText'),
    notes: t('headSpecialMammothRiderHelmNotes', { per: 15 }),
    per: 15,
    value: 130,
    canOwn: ownsItem('head_special_mammothRiderHelm'),
  },
  roguishRainbowMessengerHood: {
    text: t('headSpecialRoguishRainbowMessengerHoodText'),
    notes: t('headSpecialRoguishRainbowMessengerHoodNotes', { con: 15 }),
    con: 15,
    value: 130,
    canOwn: ownsItem('head_special_roguishRainbowMessengerHood'),
  },
  pageHelm: {
    text: t('headSpecialPageHelmText'),
    notes: t('headSpecialPageHelmNotes', { per: 16 }),
    per: 16,
    value: 0,
    canOwn: ownsItem('head_special_pageHelm'),
  },
  clandestineCowl: {
    text: t('headSpecialClandestineCowlText'),
    notes: t('headSpecialClandestineCowlNotes', { per: 16 }),
    per: 16,
    value: 0,
    canOwn: ownsItem('head_special_clandestineCowl'),
  },
  snowSovereignCrown: {
    text: t('headSpecialSnowSovereignCrownText'),
    notes: t('headSpecialSnowSovereignCrownNotes', { con: 16 }),
    con: 16,
    value: 0,
    canOwn: ownsItem('head_special_snowSovereignCrown'),
  },
  spikedHelm: {
    text: t('headSpecialSpikedHelmText'),
    notes: t('headSpecialSpikedHelmNotes', { str: 16 }),
    str: 16,
    value: 0,
    canOwn: ownsItem('head_special_spikedHelm'),
  },
  dandyHat: {
    text: t('headSpecialDandyHatText'),
    notes: t('headSpecialDandyHatNotes', { con: 17 }),
    con: 17,
    value: 0,
    canOwn: ownsItem('head_special_dandyHat'),
  },
  kabuto: {
    text: t('headSpecialKabutoText'),
    notes: t('headSpecialKabutoNotes', { int: 17 }),
    int: 17,
    value: 0,
    canOwn: ownsItem('head_special_kabuto'),
  },
  nye: {
    event: EVENTS.nye,
    text: t('headSpecialNyeText'),
    notes: t('headSpecialNyeNotes'),
    value: 0,
    canOwn: ownsItem('head_special_nye'),
  },
  turkeyHelmBase: {
    text: t('headSpecialTurkeyHelmBaseText'),
    notes: t('headSpecialTurkeyHelmBaseNotes'),
    value: 0,
    canOwn: ownsItem('head_special_turkeyHelmBase'),
  },
  yeti: {
    specialClass: 'warrior',
    set: 'yetiSet',
    text: t('headSpecialYetiText'),
    notes: t('headSpecialYetiNotes', { str: 9 }),
    str: 9,
    value: 60,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  ski: {
    specialClass: 'rogue',
    set: 'skiSet',
    text: t('headSpecialSkiText'),
    notes: t('headSpecialSkiNotes', { per: 9 }),
    per: 9,
    value: 60,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  candycane: {
    specialClass: 'wizard',
    set: 'candycaneSet',
    text: t('headSpecialCandycaneText'),
    notes: t('headSpecialCandycaneNotes', { per: 7 }),
    per: 7,
    value: 60,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  snowflake: {
    specialClass: 'healer',
    set: 'snowflakeSet',
    text: t('headSpecialSnowflakeText'),
    notes: t('headSpecialSnowflakeNotes', { int: 7 }),
    int: 7,
    value: 60,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  springRogue: {
    set: 'stealthyKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springWarrior: {
    set: 'mightyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springMage: {
    set: 'magicMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springHealer: {
    set: 'lovingPupSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summerRogue: {
    set: 'roguishPirateSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerWarrior: {
    set: 'daringSwashbucklerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerMage: {
    set: 'emeraldMermageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerHealer: {
    set: 'reefSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fallRogue: {
    set: 'vampireSmiterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallWarrior: {
    set: 'monsterOfScienceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallMage: {
    set: 'witchyWizardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallHealer: {
    set: 'mummyMedicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2015Rogue: {
    set: 'icicleDrakeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Warrior: {
    set: 'gingerbreadSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Mage: {
    set: 'northMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Healer: {
    set: 'soothingSkaterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  nye2014: {
    text: t('headSpecialNye2014Text'),
    notes: t('headSpecialNye2014Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2014'),
  },
  spring2015Rogue: {
    set: 'sneakySqueakerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Warrior: {
    set: 'bewareDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Mage: {
    set: 'magicianBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Healer: {
    set: 'comfortingKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2015Rogue: {
    set: 'reefRenegadeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Warrior: {
    set: 'sunfishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Mage: {
    set: 'shipSoothsayerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Healer: {
    set: 'strappingSailorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2015Rogue: {
    set: 'battleRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Warrior: {
    set: 'scarecrowWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Mage: {
    set: 'stitchWitchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Healer: {
    set: 'potionerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  gaymerx: {
    event: EVENTS.gaymerx,
    text: t('headSpecialGaymerxText'),
    notes: t('headSpecialGaymerxNotes'),
    value: 0,
  },
  winter2016Rogue: {
    set: 'cocoaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Warrior: {
    set: 'snowDaySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Mage: {
    set: 'snowboardingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Healer: {
    set: 'festiveFairySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  nye2015: {
    text: t('headSpecialNye2015Text'),
    notes: t('headSpecialNye2015Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2015'),
  },
  spring2016Rogue: {
    set: 'cleverDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Warrior: {
    set: 'braveMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Mage: {
    set: 'grandMalkinSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Healer: {
    set: 'springingBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2016Rogue: {
    set: 'summer2016EelSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Warrior: {
    set: 'summer2016SharkWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Mage: {
    set: 'summer2016DolphinMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Healer: {
    set: 'summer2016SeahorseHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2016Rogue: {
    set: 'fall2016BlackWidowSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Warrior: {
    set: 'fall2016SwampThingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Mage: {
    set: 'fall2016WickedSorcererSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Healer: {
    set: 'fall2016GorgonHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2017Rogue: {
    set: 'winter2017FrostyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Warrior: {
    set: 'winter2017IceHockeySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Mage: {
    set: 'winter2017WinterWolfSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Healer: {
    set: 'winter2017SugarPlumSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  nye2016: {
    text: t('headSpecialNye2016Text'),
    notes: t('headSpecialNye2016Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2016'),
  },
  spring2017Rogue: {
    set: 'spring2017SneakyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Warrior: {
    set: 'spring2017FelineWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Mage: {
    set: 'spring2017CanineConjurorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Healer: {
    set: 'spring2017FloralMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2017Rogue: {
    set: 'summer2017SeaDragonSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Warrior: {
    set: 'summer2017SandcastleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Mage: {
    set: 'summer2017WhirlpoolMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Healer: {
    set: 'summer2017SeashellSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  namingDay2017: {
    text: t('headSpecialNamingDay2017Text'),
    notes: t('headSpecialNamingDay2017Notes'),
    value: 0,
    canOwn: ownsItem('head_special_namingDay2017'),
  },
  fall2017Rogue: {
    set: 'fall2017TrickOrTreatSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Warrior: {
    set: 'fall2017HabitoweenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Mage: {
    set: 'fall2017MasqueradeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Healer: {
    set: 'fall2017HauntedHouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  nye2017: {
    text: t('headSpecialNye2017Text'),
    notes: t('headSpecialNye2017Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2017'),
  },
  winter2018Rogue: {
    set: 'winter2018ReindeerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Warrior: {
    set: 'winter2018GiftWrappedSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Mage: {
    set: 'winter2018ConfettiSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Healer: {
    set: 'winter2018MistletoeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2018Rogue: {
    set: 'spring2018DucklingRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Warrior: {
    set: 'spring2018SunriseWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Mage: {
    set: 'spring2018TulipMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Healer: {
    set: 'spring2018GarnetHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2018Rogue: {
    set: 'summer2018FisherRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Warrior: {
    set: 'summer2018BettaFishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Mage: {
    set: 'summer2018LionfishMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Healer: {
    set: 'summer2018MerfolkMonarchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2018Rogue: {
    set: 'fall2018AlterEgoSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Warrior: {
    set: 'fall2018MinotaurWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Mage: {
    set: 'fall2018CandymancerMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Healer: {
    set: 'fall2018CarnivorousPlantSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  turkeyHelmGilded: {
    text: t('headSpecialTurkeyHelmGildedText'),
    notes: t('headSpecialTurkeyHelmGildedNotes'),
    value: 0,
    canOwn: ownsItem('head_special_turkeyHelmGilded'),
  },
  winter2019Rogue: {
    set: 'winter2019PoinsettiaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Warrior: {
    set: 'winter2019BlizzardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Mage: {
    set: 'winter2019PyrotechnicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Healer: {
    set: 'winter2019WinterStarSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  nye2018: {
    text: t('headSpecialNye2018Text'),
    notes: t('headSpecialNye2018Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2018'),
  },
  piDay: {
    text: t('headSpecialPiDayText'),
    notes: t('headSpecialPiDayNotes'),
    value: 0,
    canOwn: ownsItem('head_special_piDay'),
  },
  spring2019Rogue: {
    set: 'spring2019CloudRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Warrior: {
    set: 'spring2019OrchidWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Mage: {
    set: 'spring2019AmberMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Healer: {
    set: 'spring2019RobinHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2019Rogue: {
    set: 'summer2019HammerheadRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Warrior: {
    set: 'summer2019SeaTurtleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Mage: {
    set: 'summer2019WaterLilyMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Healer: {
    set: 'summer2019ConchHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2019Rogue: {
    set: 'fall2019OperaticSpecterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Warrior: {
    set: 'fall2019RavenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Mage: {
    set: 'fall2019CyclopsSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Healer: {
    set: 'fall2019LichSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  ks2019: {
    text: t('headSpecialKS2019Text'),
    notes: t('headSpecialKS2019Notes', { int: 20 }),
    value: 0,
    int: 20,
    canOwn: ownsItem('head_special_ks2019'),
  },
  winter2020Rogue: {
    set: 'winter2020LanternSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Warrior: {
    set: 'winter2020EvergreenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Mage: {
    set: 'winter2020CarolOfTheMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Healer: {
    set: 'winter2020WinterSpiceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  nye2019: {
    text: t('headSpecialNye2019Text'),
    notes: t('headSpecialNye2019Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2019'),
  },
  spring2020Rogue: {
    set: 'spring2020LapisLazuliRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Warrior: {
    set: 'spring2020BeetleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Mage: {
    set: 'spring2020PuddleMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Healer: {
    set: 'spring2020IrisHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2020Rogue: {
    set: 'summer2020CrocodileRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Warrior: {
    set: 'summer2020RainbowTroutWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Mage: {
    set: 'summer2020OarfishMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Healer: {
    set: 'summer2020SeaGlassHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2020Rogue: {
    set: 'fall2020TwoHeadedRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Warrior: {
    set: 'fall2020WraithWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Mage: {
    set: 'fall2020ThirdEyeMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Healer: {
    set: 'fall2020DeathsHeadMothHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2021Rogue: {
    set: 'winter2021HollyIvyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Warrior: {
    set: 'winter2021IceFishingWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Mage: {
    set: 'winter2021WinterMoonMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Healer: {
    set: 'winter2021ArcticExplorerHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  nye2020: {
    text: t('headSpecialNye2020Text'),
    notes: t('headSpecialNye2020Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2020'),
  },
  spring2021Rogue: {
    set: 'spring2021TwinFlowerRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Warrior: {
    set: 'spring2021SunstoneWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Mage: {
    set: 'spring2021SwanMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Healer: {
    set: 'spring2021WillowHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2021Rogue: {
    set: 'summer2021ClownfishRogueSet',
  },
  summer2021Warrior: {
    set: 'summer2021FlyingFishWarriorSet',
  },
  summer2021Mage: {
    set: 'summer2021NautilusMageSet',
  },
  summer2021Healer: {
    set: 'summer2021ParrotHealerSet',
  },
  fall2021Rogue: {
    set: 'fall2021OozeRogueSet',
  },
  fall2021Warrior: {
    set: 'fall2021HeadlessWarriorSet',
  },
  fall2021Mage: {
    set: 'fall2021BrainEaterMageSet',
  },
  fall2021Healer: {
    set: 'fall2021FlameSummonerHealerSet',
  },
  winter2022Rogue: {
    set: 'winter2022FireworksRogueSet',
  },
  winter2022Warrior: {
    set: 'winter2022StockingWarriorSet',
  },
  winter2022Mage: {
    set: 'winter2022PomegranateMageSet',
  },
  winter2022Healer: {
    set: 'winter2022IceCrystalHealerSet',
  },
  nye2021: {
    text: t('headSpecialNye2021Text'),
    notes: t('headSpecialNye2021Notes'),
    value: 0,
    canOwn: ownsItem('head_special_nye2021'),
  },
  spring2022Rogue: {
    set: 'spring2022MagpieRogueSet',
  },
  spring2022Warrior: {
    set: 'spring2022RainstormWarriorSet',
  },
  spring2022Mage: {
    set: 'spring2022ForsythiaMageSet',
  },
  spring2022Healer: {
    set: 'spring2022PeridotHealerSet',
  },
};

const headStats = {
  healer: { int: 7 },
  rogue: { per: 9 },
  warrior: { str: 9 },
  wizard: { per: 7 },
};

Object.keys(gearEvents).forEach(event => {
  CLASSES.forEach(klass => {
    const classNameString = getClassName(klass);
    const eventString = `${event}${upperFirst(classNameString)}`;
    const textString = `headSpecial${upperFirst(event)}${upperFirst(classNameString)}`;
    defaults(head[eventString], {
      event: gearEvents[event],
      specialClass: klass,
      text: t(`${textString}Text`),
      notes: t(`${textString}Notes`, headStats[klass]),
      value: 60,
    }, headStats[klass]);
    if (head[eventString].canBuy && head[eventString].canBuy()) {
      head[eventString].event = CURRENT_EVENT;
    }
  });
});

const headAccessory = {
  springRogue: {
    specialClass: 'rogue',
    set: 'stealthyKittySet',
    text: t('headAccessorySpecialSpringRogueText'),
    notes: t('headAccessorySpecialSpringRogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springWarrior: {
    specialClass: 'warrior',
    set: 'mightyBunnySet',
    text: t('headAccessorySpecialSpringWarriorText'),
    notes: t('headAccessorySpecialSpringWarriorNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springMage: {
    specialClass: 'wizard',
    set: 'magicMouseSet',
    text: t('headAccessorySpecialSpringMageText'),
    notes: t('headAccessorySpecialSpringMageNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springHealer: {
    specialClass: 'healer',
    set: 'lovingPupSet',
    text: t('headAccessorySpecialSpringHealerText'),
    notes: t('headAccessorySpecialSpringHealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Rogue: {
    specialClass: 'rogue',
    set: 'sneakySqueakerSet',
    text: t('headAccessorySpecialSpring2015RogueText'),
    notes: t('headAccessorySpecialSpring2015RogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Warrior: {
    specialClass: 'warrior',
    set: 'bewareDogSet',
    text: t('headAccessorySpecialSpring2015WarriorText'),
    notes: t('headAccessorySpecialSpring2015WarriorNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Mage: {
    specialClass: 'wizard',
    set: 'magicianBunnySet',
    text: t('headAccessorySpecialSpring2015MageText'),
    notes: t('headAccessorySpecialSpring2015MageNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Healer: {
    specialClass: 'healer',
    set: 'comfortingKittySet',
    text: t('headAccessorySpecialSpring2015HealerText'),
    notes: t('headAccessorySpecialSpring2015HealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  bearEars: {
    gearSet: 'animal',
    text: t('headAccessoryBearEarsText'),
    notes: t('headAccessoryBearEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_bearEars'),
    canBuy: () => true,
  },
  cactusEars: {
    gearSet: 'animal',
    text: t('headAccessoryCactusEarsText'),
    notes: t('headAccessoryCactusEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_cactusEars'),
    canBuy: () => true,
  },
  foxEars: {
    gearSet: 'animal',
    text: t('headAccessoryFoxEarsText'),
    notes: t('headAccessoryFoxEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_foxEars'),
    canBuy: () => true,
  },
  lionEars: {
    gearSet: 'animal',
    text: t('headAccessoryLionEarsText'),
    notes: t('headAccessoryLionEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_lionEars'),
    canBuy: () => true,
  },
  pandaEars: {
    gearSet: 'animal',
    text: t('headAccessoryPandaEarsText'),
    notes: t('headAccessoryPandaEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_pandaEars'),
    canBuy: () => true,
  },
  pigEars: {
    gearSet: 'animal',
    text: t('headAccessoryPigEarsText'),
    notes: t('headAccessoryPigEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_pigEars'),
    canBuy: () => true,
  },
  tigerEars: {
    gearSet: 'animal',
    text: t('headAccessoryTigerEarsText'),
    notes: t('headAccessoryTigerEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_tigerEars'),
    canBuy: () => true,
  },
  wolfEars: {
    gearSet: 'animal',
    text: t('headAccessoryWolfEarsText'),
    notes: t('headAccessoryWolfEarsNotes'),
    value: 20,
    canOwn: ownsItem('headAccessory_special_wolfEars'),
    canBuy: () => true,
  },
  spring2016Rogue: {
    specialClass: 'rogue',
    set: 'cleverDogSet',
    text: t('headAccessorySpecialSpring2016RogueText'),
    notes: t('headAccessorySpecialSpring2016RogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Warrior: {
    specialClass: 'warrior',
    set: 'braveMouseSet',
    text: t('headAccessorySpecialSpring2016WarriorText'),
    notes: t('headAccessorySpecialSpring2016WarriorNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Mage: {
    specialClass: 'wizard',
    set: 'grandMalkinSet',
    text: t('headAccessorySpecialSpring2016MageText'),
    notes: t('headAccessorySpecialSpring2016MageNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Healer: {
    specialClass: 'healer',
    set: 'springingBunnySet',
    text: t('headAccessorySpecialSpring2016HealerText'),
    notes: t('headAccessorySpecialSpring2016HealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Rogue: {
    specialClass: 'rogue',
    set: 'spring2017SneakyBunnySet',
    text: t('headAccessorySpecialSpring2017RogueText'),
    notes: t('headAccessorySpecialSpring2017RogueNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Warrior: {
    specialClass: 'warrior',
    set: 'spring2017FelineWarriorSet',
    text: t('headAccessorySpecialSpring2017WarriorText'),
    notes: t('headAccessorySpecialSpring2017WarriorNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Mage: {
    specialClass: 'wizard',
    set: 'spring2017CanineConjurorSet',
    text: t('headAccessorySpecialSpring2017MageText'),
    notes: t('headAccessorySpecialSpring2017MageNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Healer: {
    specialClass: 'healer',
    set: 'spring2017FloralMouseSet',
    text: t('headAccessorySpecialSpring2017HealerText'),
    notes: t('headAccessorySpecialSpring2017HealerNotes'),
    value: 20,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  blackHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryBlackHeadbandText'),
    notes: t('headAccessoryBlackHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_blackHeadband'),
  },
  blueHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryBlueHeadbandText'),
    notes: t('headAccessoryBlueHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_blueHeadband'),
  },
  greenHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryGreenHeadbandText'),
    notes: t('headAccessoryGreenHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_greenHeadband'),
  },
  pinkHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryPinkHeadbandText'),
    notes: t('headAccessoryPinkHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_pinkHeadband'),
  },
  redHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryRedHeadbandText'),
    notes: t('headAccessoryRedHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_redHeadband'),
  },
  whiteHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryWhiteHeadbandText'),
    notes: t('headAccessoryWhiteHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_whiteHeadband'),
  },
  yellowHeadband: {
    gearSet: 'headband',
    text: t('headAccessoryYellowHeadbandText'),
    notes: t('headAccessoryYellowHeadbandNotes'),
    value: 0,
    canOwn: ownsItem('headAccessory_special_yellowHeadband'),
  },
};

const shield = {
  0: backerGear.shieldSpecial0,
  1: contributorGear.shieldSpecial1,
  takeThis: takeThisGear.shieldSpecialTakeThis,
  goldenknight: {
    text: t('shieldSpecialGoldenknightText'),
    notes: t('shieldSpecialGoldenknightNotes', { attrs: 25 }),
    con: 25,
    per: 25,
    value: 200,
    canOwn: ownsItem('shield_special_goldenknight'),
  },
  moonpearlShield: {
    text: t('shieldSpecialMoonpearlShieldText'),
    notes: t('shieldSpecialMoonpearlShieldNotes', { con: 15 }),
    con: 15,
    value: 130,
    canOwn: ownsItem('shield_special_moonpearlShield'),
  },
  mammothRiderHorn: {
    text: t('shieldSpecialMammothRiderHornText'),
    notes: t('shieldSpecialMammothRiderHornNotes', { str: 15 }),
    str: 15,
    value: 130,
    canOwn: ownsItem('shield_special_mammothRiderHorn'),
  },
  roguishRainbowMessage: {
    text: t('shieldSpecialRoguishRainbowMessageText'),
    notes: t('shieldSpecialRoguishRainbowMessageNotes', { int: 15 }),
    int: 15,
    value: 130,
    canOwn: ownsItem('shield_special_roguishRainbowMessage'),
  },
  diamondStave: {
    text: t('shieldSpecialDiamondStaveText'),
    notes: t('shieldSpecialDiamondStaveNotes', { int: 16 }),
    int: 16,
    value: 0,
    canOwn: ownsItem('shield_special_diamondStave'),
  },
  lootBag: {
    text: t('shieldSpecialLootBagText'),
    notes: t('shieldSpecialLootBagNotes', { str: 16 }),
    str: 16,
    value: 0,
    canOwn: ownsItem('shield_special_lootBag'),
  },
  wintryMirror: {
    text: t('shieldSpecialWintryMirrorText'),
    notes: t('shieldSpecialWintryMirrorNotes', { int: 16 }),
    int: 16,
    value: 0,
    canOwn: ownsItem('shield_special_wintryMirror'),
  },
  wakizashi: {
    text: t('shieldSpecialWakizashiText'),
    notes: t('shieldSpecialWakizashiNotes', { con: 17 }),
    con: 17,
    value: 0,
    canOwn: ownsItem('shield_special_wakizashi'),
  },
  yeti: {
    specialClass: 'warrior',
    set: 'yetiSet',
    text: t('shieldSpecialYetiText'),
    notes: t('shieldSpecialYetiNotes', { con: 7 }),
    con: 7,
    value: 70,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  ski: {
    specialClass: 'rogue',
    set: 'skiSet',
    text: t('weaponSpecialSkiText'),
    notes: t('weaponSpecialSkiNotes', { str: 8 }),
    str: 8,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  snowflake: {
    specialClass: 'healer',
    set: 'snowflakeSet',
    text: t('shieldSpecialSnowflakeText'),
    notes: t('shieldSpecialSnowflakeNotes', { con: 9 }),
    con: 9,
    value: 70,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  springRogue: {
    set: 'stealthyKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springWarrior: {
    set: 'mightyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springHealer: {
    set: 'lovingPupSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summerRogue: {
    set: 'roguishPirateSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerWarrior: {
    set: 'daringSwashbucklerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerHealer: {
    set: 'reefSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fallRogue: {
    set: 'vampireSmiterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallWarrior: {
    set: 'monsterOfScienceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallHealer: {
    set: 'mummyMedicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2015Rogue: {
    set: 'icicleDrakeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Warrior: {
    set: 'gingerbreadSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Healer: {
    set: 'soothingSkaterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2015Rogue: {
    set: 'sneakySqueakerSet',
    event: EVENTS.spring2021,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Warrior: {
    set: 'bewareDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Healer: {
    set: 'comfortingKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2015Rogue: {
    set: 'reefRenegadeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Warrior: {
    set: 'sunfishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Healer: {
    set: 'strappingSailorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2015Rogue: {
    set: 'battleRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Warrior: {
    set: 'scarecrowWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Healer: {
    set: 'potionerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2016Rogue: {
    set: 'cocoaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Warrior: {
    set: 'snowDaySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Healer: {
    set: 'festiveFairySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2016Rogue: {
    set: 'cleverDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Warrior: {
    set: 'braveMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Healer: {
    set: 'springingBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2016Rogue: {
    set: 'summer2016EelSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Warrior: {
    set: 'summer2016SharkWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Healer: {
    set: 'summer2016SeahorseHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2016Rogue: {
    set: 'fall2016BlackWidowSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Warrior: {
    set: 'fall2016SwampThingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Healer: {
    set: 'fall2016GorgonHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2017Rogue: {
    set: 'winter2017FrostyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Warrior: {
    set: 'winter2017IceHockeySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Healer: {
    set: 'winter2017SugarPlumSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2017Rogue: {
    set: 'spring2017SneakyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Warrior: {
    set: 'spring2017FelineWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Healer: {
    set: 'spring2017FloralMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2017Rogue: {
    set: 'summer2017SeaDragonSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Warrior: {
    set: 'summer2017SandcastleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Healer: {
    set: 'summer2017SeashellSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2017Rogue: {
    set: 'fall2017TrickOrTreatSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Warrior: {
    set: 'fall2017HabitoweenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Healer: {
    set: 'fall2017HauntedHouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2018Rogue: {
    set: 'winter2018ReindeerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Warrior: {
    set: 'winter2018GiftWrappedSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Healer: {
    set: 'winter2018MistletoeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2018Rogue: {
    set: 'spring2018DucklingRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Warrior: {
    set: 'spring2018SunriseWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Healer: {
    set: 'spring2018GarnetHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2018Rogue: {
    set: 'summer2018FisherRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Warrior: {
    set: 'summer2018BettaFishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Healer: {
    set: 'summer2018MerfolkMonarchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2018Rogue: {
    set: 'fall2018AlterEgoSet',
    text: t('shieldSpecialFall2018RogueText'),
    notes: t('shieldSpecialFall2018RogueNotes', { str: 8 }),
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Warrior: {
    set: 'fall2018MinotaurWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Healer: {
    set: 'fall2018CarnivorousPlantSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2019Rogue: {
    set: 'winter2019PoinsettiaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Warrior: {
    set: 'winter2019BlizzardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Healer: {
    set: 'winter2019WinterStarSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  piDay: {
    text: t('shieldSpecialPiDayText'),
    notes: t('shieldSpecialPiDayNotes'),
    value: 0,
    canOwn: ownsItem('shield_special_piDay'),
  },
  spring2019Rogue: {
    set: 'spring2019CloudRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Warrior: {
    set: 'spring2019OrchidWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Healer: {
    set: 'spring2019RobinHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2019Rogue: {
    set: 'summer2019HammerheadRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Warrior: {
    set: 'summer2019SeaTurtleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Healer: {
    set: 'summer2019ConchHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Mage: {
    specialClass: 'wizard',
    set: 'summer2019WaterLilyMageSet',
    text: t('shieldSpecialSummer2019MageText'),
    notes: t('shieldSpecialSummer2019MageNotes', { per: 7 }),
    value: 70,
    per: 7,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2019Rogue: {
    set: 'fall2019OperaticSpecterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Warrior: {
    set: 'fall2019RavenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Healer: {
    set: 'fall2019LichSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  ks2019: {
    text: t('shieldSpecialKS2019Text'),
    notes: t('shieldSpecialKS2019Notes', { per: 20 }),
    value: 0,
    per: 20,
    canOwn: ownsItem('shield_special_ks2019'),
  },
  winter2020Rogue: {
    set: 'winter2020LanternSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Warrior: {
    set: 'winter2020EvergreenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Healer: {
    set: 'winter2020WinterSpiceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2020Rogue: {
    set: 'spring2020LapisLazuliRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Warrior: {
    set: 'spring2020BeetleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Healer: {
    set: 'spring2020IrisHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2020Warrior: {
    set: 'summer2020RainbowTroutWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Healer: {
    set: 'summer2020SeaGlassHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Rogue: {
    set: 'summer2020CrocodileRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2020Rogue: {
    set: 'fall2020TwoHeadedRogueSet',
    text: t('shieldSpecialFall2020RogueText'),
    notes: t('shieldSpecialFall2020RogueNotes', { str: 8 }),
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Warrior: {
    set: 'fall2020WraithWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Healer: {
    set: 'fall2020DeathsHeadMothHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2021Rogue: {
    set: 'winter2021HollyIvyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Warrior: {
    set: 'winter2021IceFishingWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Healer: {
    set: 'winter2021ArcticExplorerHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2021Rogue: {
    set: 'spring2021TwinFlowerRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Warrior: {
    set: 'spring2021SunstoneWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Healer: {
    set: 'spring2021WillowHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2021Rogue: {
    set: 'summer2021ClownfishRogueSet',
  },
  summer2021Warrior: {
    set: 'summer2021FlyingFishWarriorSet',
  },
  summer2021Healer: {
    set: 'summer2021ParrotHealerSet',
  },
  fall2021Rogue: {
    set: 'fall2021OozeRogueSet',
  },
  fall2021Warrior: {
    set: 'fall2021HeadlessWarriorSet',
  },
  fall2021Healer: {
    set: 'fall2021FlameSummonerHealerSet',
  },
  winter2022Rogue: {
    set: 'winter2022FireworksRogueSet',
  },
  winter2022Warrior: {
    set: 'winter2022StockingWarriorSet',
  },
  winter2022Healer: {
    set: 'winter2022IceCrystalHealerSet',
  },
  spring2022Rogue: {
    set: 'spring2022MagpieRogueSet',
  },
  spring2022Warrior: {
    set: 'spring2022RainstormWarriorSet',
  },
  spring2022Healer: {
    set: 'spring2022PeridotHealerSet',
  },
};

const shieldStats = {
  healer: { con: 9 },
  rogue: { str: 8 },
  warrior: { con: 7 },
};

Object.keys(gearEvents).forEach(event => {
  CLASSES.forEach(klass => {
    if (klass === 'wizard') return;
    const eventString = `${event}${upperFirst(klass)}`;
    const textString = klass === 'rogue' ? `weaponSpecial${upperFirst(event)}Rogue`
      : `shieldSpecial${upperFirst(event)}${upperFirst(klass)}`;
    defaults(shield[eventString], {
      event: gearEvents[event],
      specialClass: klass,
      text: t(`${textString}Text`),
      notes: t(`${textString}Notes`, shieldStats[klass]),
      value: klass === 'rogue' ? 80 : 70,
    }, shieldStats[klass]);
    if (shield[eventString].canBuy && shield[eventString].canBuy()) {
      shield[eventString].event = CURRENT_EVENT;
    }
  });
});

const weapon = {
  0: backerGear.weaponSpecial0,
  1: contributorGear.weaponSpecial1,
  2: backerGear.weaponSpecial2,
  3: backerGear.weaponSpecial3,
  critical: contributorGear.weaponSpecialCritical,
  takeThis: takeThisGear.weaponSpecialTakeThis,
  tridentOfCrashingTides: {
    text: t('weaponSpecialTridentOfCrashingTidesText'),
    notes: t('weaponSpecialTridentOfCrashingTidesNotes', { int: 15 }),
    int: 15,
    value: 130,
    canOwn: ownsItem('weapon_special_tridentOfCrashingTides'),
  },
  taskwoodsLantern: {
    text: t('weaponSpecialTaskwoodsLanternText'),
    notes: t('weaponSpecialTaskwoodsLanternNotes', { attrs: 15 }),
    twoHanded: true,
    per: 15,
    int: 15,
    value: 130,
    canOwn: ownsItem('weapon_special_taskwoodsLantern'),
  },
  bardInstrument: {
    text: t('weaponSpecialBardInstrumentText'),
    notes: t('weaponSpecialBardInstrumentNotes', { attrs: 4 }),
    twoHanded: true,
    per: 4,
    int: 4,
    value: 0,
    canOwn: ownsItem('weapon_special_bardInstrument'),
  },
  lunarScythe: {
    text: t('weaponSpecialLunarScytheText'),
    notes: t('weaponSpecialLunarScytheNotes', { attrs: 7 }),
    twoHanded: true,
    str: 7,
    per: 7,
    value: 130,
    canOwn: ownsItem('weapon_special_lunarScythe'),
  },
  mammothRiderSpear: {
    text: t('weaponSpecialMammothRiderSpearText'),
    notes: t('weaponSpecialMammothRiderSpearNotes', { int: 15 }),
    int: 15,
    value: 130,
    canOwn: ownsItem('weapon_special_mammothRiderSpear'),
  },
  roguishRainbowMessage: {
    text: t('weaponSpecialRoguishRainbowMessageText'),
    notes: t('weaponSpecialRoguishRainbowMessageNotes', { per: 15 }),
    per: 15,
    value: 130,
    canOwn: ownsItem('weapon_special_roguishRainbowMessage'),
  },
  pageBanner: {
    text: t('weaponSpecialPageBannerText'),
    notes: t('weaponSpecialPageBannerNotes', { str: 16 }),
    str: 16,
    value: 0,
    canOwn: ownsItem('weapon_special_pageBanner'),
  },
  skeletonKey: {
    text: t('weaponSpecialSkeletonKeyText'),
    notes: t('weaponSpecialSkeletonKeyNotes', { con: 16 }),
    con: 16,
    value: 0,
    canOwn: ownsItem('weapon_special_skeletonKey'),
  },
  nomadsScimitar: {
    text: t('weaponSpecialNomadsScimitarText'),
    notes: t('weaponSpecialNomadsScimitarNotes', { int: 16 }),
    int: 16,
    value: 0,
    canOwn: ownsItem('weapon_special_nomadsScimitar'),
  },
  fencingFoil: {
    text: t('weaponSpecialFencingFoilText'),
    notes: t('weaponSpecialFencingFoilNotes', { str: 16 }),
    str: 16,
    value: 0,
    canOwn: ownsItem('weapon_special_fencingFoil'),
  },
  tachi: {
    text: t('weaponSpecialTachiText'),
    notes: t('weaponSpecialTachiNotes', { str: 17 }),
    str: 17,
    value: 0,
    canOwn: ownsItem('weapon_special_tachi'),
  },
  aetherCrystals: {
    text: t('weaponSpecialAetherCrystalsText'),
    notes: t('weaponSpecialAetherCrystalsNotes', { attrs: 10 }),
    con: 10,
    int: 10,
    per: 10,
    str: 10,
    value: 175,
    twoHanded: true,
    canOwn: ownsItem('weapon_special_aetherCrystals'),
  },
  yeti: {
    specialClass: 'warrior',
    set: 'yetiSet',
    text: t('weaponSpecialYetiText'),
    notes: t('weaponSpecialYetiNotes', { str: 15 }),
    str: 15,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  ski: {
    specialClass: 'rogue',
    set: 'skiSet',
    text: t('weaponSpecialSkiText'),
    notes: t('weaponSpecialSkiNotes', { str: 8 }),
    str: 8,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  candycane: {
    specialClass: 'wizard',
    set: 'candycaneSet',
    twoHanded: true,
    text: t('weaponSpecialCandycaneText'),
    notes: t('weaponSpecialCandycaneNotes', { int: 15, per: 7 }),
    int: 15,
    per: 7,
    value: 160,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  snowflake: {
    specialClass: 'healer',
    set: 'snowflakeSet',
    text: t('weaponSpecialSnowflakeText'),
    notes: t('weaponSpecialSnowflakeNotes', { int: 9 }),
    int: 9,
    value: 90,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  springRogue: {
    set: 'stealthyKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springWarrior: {
    set: 'mightyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springMage: {
    set: 'magicMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  springHealer: {
    set: 'lovingPupSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summerRogue: {
    set: 'roguishPirateSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerWarrior: {
    set: 'daringSwashbucklerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerMage: {
    set: 'emeraldMermageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summerHealer: {
    set: 'reefSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fallRogue: {
    set: 'vampireSmiterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallWarrior: {
    set: 'monsterOfScienceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallMage: {
    set: 'witchyWizardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fallHealer: {
    set: 'mummyMedicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2015Rogue: {
    set: 'icicleDrakeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Warrior: {
    set: 'gingerbreadSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Mage: {
    set: 'northMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2015Healer: {
    set: 'soothingSkaterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2015Rogue: {
    set: 'sneakySqueakerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Warrior: {
    set: 'bewareDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Mage: {
    set: 'magicianBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2015Healer: {
    set: 'comfortingKittySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2015Rogue: {
    set: 'reefRenegadeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Warrior: {
    set: 'sunfishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Mage: {
    set: 'shipSoothsayerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2015Healer: {
    set: 'strappingSailorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2015Rogue: {
    set: 'battleRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Warrior: {
    set: 'scarecrowWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Mage: {
    set: 'stitchWitchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2015Healer: {
    set: 'potionerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2016Rogue: {
    set: 'cocoaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Warrior: {
    set: 'snowDaySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Mage: {
    set: 'snowboardingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2016Healer: {
    set: 'festiveFairySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2016Rogue: {
    set: 'cleverDogSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Warrior: {
    set: 'braveMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Mage: {
    set: 'grandMalkinSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2016Healer: {
    set: 'springingBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2016Rogue: {
    set: 'summer2016EelSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Warrior: {
    set: 'summer2016SharkWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Mage: {
    set: 'summer2016DolphinMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2016Healer: {
    set: 'summer2016SeahorseHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2016Rogue: {
    set: 'fall2016BlackWidowSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Warrior: {
    set: 'fall2016SwampThingSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Mage: {
    set: 'fall2016WickedSorcererSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2016Healer: {
    set: 'fall2016GorgonHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2017Rogue: {
    set: 'winter2017FrostyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Warrior: {
    set: 'winter2017IceHockeySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Mage: {
    set: 'winter2017WinterWolfSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2017Healer: {
    set: 'winter2017SugarPlumSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2017Rogue: {
    set: 'spring2017SneakyBunnySet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Warrior: {
    set: 'spring2017FelineWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Mage: {
    set: 'spring2017CanineConjurorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2017Healer: {
    set: 'spring2017FloralMouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2017Rogue: {
    set: 'summer2017SeaDragonSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Warrior: {
    set: 'summer2017SandcastleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Mage: {
    set: 'summer2017WhirlpoolMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2017Healer: {
    set: 'summer2017SeashellSeahealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2017Rogue: {
    set: 'fall2017TrickOrTreatSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Warrior: {
    set: 'fall2017HabitoweenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Mage: {
    set: 'fall2017MasqueradeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2017Healer: {
    set: 'fall2017HauntedHouseSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2018Rogue: {
    set: 'winter2018ReindeerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Warrior: {
    set: 'winter2018GiftWrappedSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Mage: {
    set: 'winter2018ConfettiSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2018Healer: {
    set: 'winter2018MistletoeSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2018Rogue: {
    set: 'spring2018DucklingRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Warrior: {
    set: 'spring2018SunriseWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Mage: {
    set: 'spring2018TulipMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2018Healer: {
    set: 'spring2018GarnetHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2018Rogue: {
    set: 'summer2018FisherRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Warrior: {
    set: 'summer2018BettaFishWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Mage: {
    set: 'summer2018LionfishMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2018Healer: {
    set: 'summer2018MerfolkMonarchSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2018Rogue: {
    set: 'fall2018AlterEgoSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Warrior: {
    set: 'fall2018MinotaurWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Mage: {
    set: 'fall2018CandymancerMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2018Healer: {
    set: 'fall2018CarnivorousPlantSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2019Rogue: {
    set: 'winter2019PoinsettiaSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Warrior: {
    set: 'winter2019BlizzardSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Mage: {
    set: 'winter2019PyrotechnicSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2019Healer: {
    set: 'winter2019WinterStarSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2019Rogue: {
    set: 'spring2019CloudRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Warrior: {
    set: 'spring2019OrchidWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Mage: {
    set: 'spring2019AmberMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2019Healer: {
    set: 'spring2019RobinHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2019Rogue: {
    set: 'summer2019HammerheadRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Warrior: {
    set: 'summer2019SeaTurtleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Mage: {
    specialClass: 'wizard',
    set: 'summer2019WaterLilyMageSet',
    text: t('weaponSpecialSummer2019MageText'),
    notes: t('weaponSpecialSummer2019MageNotes', { int: 15 }),
    value: 90,
    int: 15,
    per: 0,
    twoHanded: false,
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2019Healer: {
    set: 'summer2019ConchHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2019Rogue: {
    set: 'fall2019OperaticSpecterSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Warrior: {
    set: 'fall2019RavenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Mage: {
    set: 'fall2019CyclopsSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2019Healer: {
    set: 'fall2019LichSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  ks2019: {
    text: t('weaponSpecialKS2019Text'),
    notes: t('weaponSpecialKS2019Notes', { str: 20 }),
    value: 0,
    str: 20,
    canOwn: ownsItem('weapon_special_ks2019'),
  },
  winter2020Rogue: {
    set: 'winter2020LanternSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Warrior: {
    set: 'winter2020EvergreenSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Mage: {
    set: 'winter2020CarolOfTheMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2020Healer: {
    set: 'winter2020WinterSpiceSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2020Rogue: {
    set: 'spring2020LapisLazuliRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Warrior: {
    set: 'spring2020BeetleWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Mage: {
    set: 'spring2020PuddleMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2020Healer: {
    set: 'spring2020IrisHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2020Rogue: {
    set: 'summer2020CrocodileRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Warrior: {
    set: 'summer2020RainbowTroutWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Mage: {
    set: 'summer2020OarfishMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  summer2020Healer: {
    set: 'summer2020SeaGlassHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
  },
  fall2020Rogue: {
    set: 'fall2020TwoHeadedRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Warrior: {
    set: 'fall2020WraithWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Mage: {
    set: 'fall2020ThirdEyeMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  fall2020Healer: {
    set: 'fall2020DeathsHeadMothHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
  },
  winter2021Rogue: {
    set: 'winter2021HollyIvyRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Warrior: {
    set: 'winter2021IceFishingWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Mage: {
    set: 'winter2021WinterMoonMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  winter2021Healer: {
    set: 'winter2021ArcticExplorerHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'winter',
  },
  spring2021Rogue: {
    set: 'spring2021TwinFlowerRogueSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Warrior: {
    set: 'spring2021SunstoneWarriorSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Mage: {
    set: 'spring2021SwanMageSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  spring2021Healer: {
    set: 'spring2021WillowHealerSet',
    canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'spring',
  },
  summer2021Rogue: {
    set: 'summer2021ClownfishRogueSet',
  },
  summer2021Warrior: {
    set: 'summer2021FlyingFishWarriorSet',
  },
  summer2021Mage: {
    set: 'summer2021NautilusMageSet',
  },
  summer2021Healer: {
    set: 'summer2021ParrotHealerSet',
  },
  fall2021Rogue: {
    set: 'fall2021OozeRogueSet',
  },
  fall2021Warrior: {
    set: 'fall2021HeadlessWarriorSet',
  },
  fall2021Mage: {
    set: 'fall2021BrainEaterMageSet',
  },
  fall2021Healer: {
    set: 'fall2021FlameSummonerHealerSet',
  },
  winter2022Rogue: {
    set: 'winter2022FireworksRogueSet',
  },
  winter2022Warrior: {
    set: 'winter2022StockingWarriorSet',
  },
  winter2022Mage: {
    set: 'winter2022PomegranateMageSet',
  },
  winter2022Healer: {
    set: 'winter2022IceCrystalHealerSet',
  },
  spring2022Rogue: {
    set: 'spring2022MagpieRogueSet',
  },
  spring2022Warrior: {
    set: 'spring2022RainstormWarriorSet',
  },
  spring2022Mage: {
    set: 'spring2022ForsythiaMageSet',
  },
  spring2022Healer: {
    set: 'spring2022PeridotHealerSet',
  },
};

const weaponStats = {
  healer: { int: 9 },
  rogue: { str: 8 },
  warrior: { str: 15 },
  wizard: { int: 15, per: 7 },
};

const weaponCosts = {
  healer: 90,
  rogue: 80,
  warrior: 90,
  wizard: 160,
};

Object.keys(gearEvents).forEach(event => {
  CLASSES.forEach(klass => {
    const classNameString = getClassName(klass);
    const eventString = `${event}${upperFirst(classNameString)}`;
    const textString = `weaponSpecial${upperFirst(event)}${upperFirst(classNameString)}`;
    defaults(weapon[eventString], {
      event: gearEvents[event],
      specialClass: klass,
      text: t(`${textString}Text`),
      notes: t(`${textString}Notes`, weaponStats[klass]),
      value: weaponCosts[klass],
      twoHanded: klass === 'wizard',
    }, weaponStats[klass]);
    if (weapon[eventString].canBuy && weapon[eventString].canBuy()) {
      weapon[eventString].event = CURRENT_EVENT;
    }
  });
});

export {
  armor,
  back,
  body,
  eyewear,
  head,
  headAccessory,
  shield,
  weapon,
};