From 639dfb31d77a5739f4ceb54febd133d0773b29f6 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Mon, 16 Nov 2015 17:29:13 -0600 Subject: [PATCH] Pull out gear into separate modules --- common/script/{src => }/content/gear/armor.js | 0 common/script/{src => }/content/gear/back.js | 0 common/script/{src => }/content/gear/body.js | 0 .../script/{src => }/content/gear/eyewear.js | 0 common/script/content/gear/gear-helper.js | 5 + .../{src => }/content/gear/head-accessory.js | 0 common/script/{src => }/content/gear/head.js | 0 common/script/content/gear/index.js | 84 + common/script/content/gear/sets/armoire.js | 351 ++ common/script/content/gear/sets/base.js | 80 + common/script/content/gear/sets/healer.js | 158 + common/script/content/gear/sets/mystery.js | 340 ++ common/script/content/gear/sets/rogue.js | 170 + common/script/content/gear/sets/special.js | 1500 +++++++ common/script/content/gear/sets/warrior.js | 155 + common/script/content/gear/sets/wizard.js | 141 + .../script/{src => }/content/gear/shield.js | 0 .../script/{src => }/content/gear/weapon.js | 0 common/script/content/index.js | 3495 +---------------- common/script/src/content/gear/index.js | 119 - .../script/src/content/gear/sets/armoire.js | 400 -- common/script/src/content/gear/sets/base.js | 48 - common/script/src/content/gear/sets/healer.js | 46 - .../script/src/content/gear/sets/mystery.js | 87 - common/script/src/content/gear/sets/rogue.js | 37 - .../script/src/content/gear/sets/special.js | 1203 ------ .../script/src/content/gear/sets/warrior.js | 46 - common/script/src/content/gear/sets/wizard.js | 44 - test/content/gear.js | 80 +- 29 files changed, 3022 insertions(+), 5567 deletions(-) rename common/script/{src => }/content/gear/armor.js (100%) rename common/script/{src => }/content/gear/back.js (100%) rename common/script/{src => }/content/gear/body.js (100%) rename common/script/{src => }/content/gear/eyewear.js (100%) create mode 100644 common/script/content/gear/gear-helper.js rename common/script/{src => }/content/gear/head-accessory.js (100%) rename common/script/{src => }/content/gear/head.js (100%) create mode 100644 common/script/content/gear/index.js create mode 100644 common/script/content/gear/sets/armoire.js create mode 100644 common/script/content/gear/sets/base.js create mode 100644 common/script/content/gear/sets/healer.js create mode 100644 common/script/content/gear/sets/mystery.js create mode 100644 common/script/content/gear/sets/rogue.js create mode 100644 common/script/content/gear/sets/special.js create mode 100644 common/script/content/gear/sets/warrior.js create mode 100644 common/script/content/gear/sets/wizard.js rename common/script/{src => }/content/gear/shield.js (100%) rename common/script/{src => }/content/gear/weapon.js (100%) delete mode 100644 common/script/src/content/gear/index.js delete mode 100644 common/script/src/content/gear/sets/armoire.js delete mode 100644 common/script/src/content/gear/sets/base.js delete mode 100644 common/script/src/content/gear/sets/healer.js delete mode 100644 common/script/src/content/gear/sets/mystery.js delete mode 100644 common/script/src/content/gear/sets/rogue.js delete mode 100644 common/script/src/content/gear/sets/special.js delete mode 100644 common/script/src/content/gear/sets/warrior.js delete mode 100644 common/script/src/content/gear/sets/wizard.js diff --git a/common/script/src/content/gear/armor.js b/common/script/content/gear/armor.js similarity index 100% rename from common/script/src/content/gear/armor.js rename to common/script/content/gear/armor.js diff --git a/common/script/src/content/gear/back.js b/common/script/content/gear/back.js similarity index 100% rename from common/script/src/content/gear/back.js rename to common/script/content/gear/back.js diff --git a/common/script/src/content/gear/body.js b/common/script/content/gear/body.js similarity index 100% rename from common/script/src/content/gear/body.js rename to common/script/content/gear/body.js diff --git a/common/script/src/content/gear/eyewear.js b/common/script/content/gear/eyewear.js similarity index 100% rename from common/script/src/content/gear/eyewear.js rename to common/script/content/gear/eyewear.js diff --git a/common/script/content/gear/gear-helper.js b/common/script/content/gear/gear-helper.js new file mode 100644 index 0000000000..a13a4a0775 --- /dev/null +++ b/common/script/content/gear/gear-helper.js @@ -0,0 +1,5 @@ +export function ownsItem (item) { + return (user) => { + return item && user.items.gear.owned[item]; + }; +} diff --git a/common/script/src/content/gear/head-accessory.js b/common/script/content/gear/head-accessory.js similarity index 100% rename from common/script/src/content/gear/head-accessory.js rename to common/script/content/gear/head-accessory.js diff --git a/common/script/src/content/gear/head.js b/common/script/content/gear/head.js similarity index 100% rename from common/script/src/content/gear/head.js rename to common/script/content/gear/head.js diff --git a/common/script/content/gear/index.js b/common/script/content/gear/index.js new file mode 100644 index 0000000000..1ef3088c14 --- /dev/null +++ b/common/script/content/gear/index.js @@ -0,0 +1,84 @@ +import {each, defaults} from 'lodash'; +import moment from 'moment'; + +import { + CLASSES, + GEAR_TYPES, +} from '../constants'; +import { ownsItem } from './gear-helper'; + +import weapon from './weapon'; +import armor from './armor'; +import head from './head'; +import shield from './shield'; +import back from './back'; +import body from './body'; +import headAccessory from './head-accessory'; +import eyewear from './eyewear'; + +let gear = { + weapon, + armor, + head, + shield, + back, + body, + headAccessory, + eyewear, +}; + +/* + The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since + they are needed in different forms at different points in the app + */ +let flat = {}; + +each(GEAR_TYPES, (type) => { + let allGearTypes = CLASSES.concat(['base', 'special', 'mystery', 'armoire']); + + each(allGearTypes, (klass) => { + each(gear[type][klass], (item, index) => { + let key = `${type}_${klass}_${index}`; + + defaults(item, { + type, + key, + klass, + index, + str: 0, + int: 0, + per: 0, + con: 0, + canBuy: () => { + return false; + }, + }); + + if (item.event) { + let canOwnFuncTrue = () => { + return true; + }; + let _canOwn = item.canOwn || canOwnFuncTrue; + + item.canOwn = (user) => { + let userOwnsItem = Boolean(user.items.gear.owned[key]); + let eventIsCurrent = moment().isAfter(item.event.start) && moment().isBefore(item.event.end); + let compatibleWithUserClass = item.specialClass ? user.stats.class === item.specialClass : true; + + return _canOwn(user) && (userOwnsItem || eventIsCurrent) && compatibleWithUserClass; + }; + } + + if (item.mystery) { + item.canOwn = ownsItem(key); + } + + flat[key] = item; + }); + }); +}); + +export default { + tree: gear, + flat, +}; diff --git a/common/script/content/gear/sets/armoire.js b/common/script/content/gear/sets/armoire.js new file mode 100644 index 0000000000..888b2586c4 --- /dev/null +++ b/common/script/content/gear/sets/armoire.js @@ -0,0 +1,351 @@ +import { ownsItem } from '../gear-helper'; +import t from '../../translation'; + +let armor = { + lunarArmor: { + text: t('armorArmoireLunarArmorText'), + notes: t('armorArmoireLunarArmorNotes', { str: 7, int: 7 }), + value: 100, + str: 7, + int: 7, + set: 'soothing', + canOwn: ownsItem('armor_armoire_lunarArmor'), + }, + gladiatorArmor: { + text: t('armorArmoireGladiatorArmorText'), + notes: t('armorArmoireGladiatorArmorNotes', { str: 7, per: 7 }), + value: 100, + str: 7, + per: 7, + set: 'gladiator', + canOwn: ownsItem('armor_armoire_gladiatorArmor '), + }, + rancherRobes: { + text: t('armorArmoireRancherRobesText'), + notes: t('armorArmoireRancherRobesNotes', { str: 5, per: 5, int: 5 }), + value: 100, + str: 5, + per: 5, + int: 5, + set: 'rancher', + canOwn: ownsItem('armor_armoire_rancherRobes '), + }, + goldenToga: { + text: t('armorArmoireGoldenTogaText'), + notes: t('armorArmoireGoldenTogaNotes', { attrs: 8 }), + value: 100, + str: 8, + con: 8, + set: 'goldenToga', + canOwn: ownsItem('armor_armoire_goldenToga '), + }, + hornedIronArmor: { + text: t('armorArmoireHornedIronArmorText'), + notes: t('armorArmoireHornedIronArmorNotes', { con: 9, per: 7 }), + value: 100, + con: 9, + per: 7, + set: 'hornedIron', + canOwn: ownsItem('armor_armoire_hornedIronArmor '), + }, + plagueDoctorOvercoat: { + text: t('armorArmoirePlagueDoctorOvercoatText'), + notes: t('armorArmoirePlagueDoctorOvercoatNotes', { int: 6, str: 5, con: 6 }), + value: 100, + int: 6, + str: 5, + con: 6, + set: 'plagueDoctor', + canOwn: ownsItem('armor_armoire_plagueDoctorOvercoat '), + }, + shepherdRobes: { + text: t('armorArmoireShepherdRobesText'), + notes: t('armorArmoireShepherdRobesNotes', { attrs: 9 }), + value: 100, + str: 9, + per: 9, + set: 'shepherd', + canOwn: ownsItem('armor_armoire_shepherdRobes '), + }, + royalRobes: { + text: t('armorArmoireRoyalRobesText'), + notes: t('armorArmoireRoyalRobesNotes', { attrs: 5 }), + value: 100, + con: 5, + per: 5, + int: 5, + set: 'royal', + canOwn: ownsItem('armor_armoire_royalRobes '), + }, +}; + +let eyewear = { + plagueDoctorMask: { + text: t('eyewearArmoirePlagueDoctorMaskText'), + notes: t('eyewearArmoirePlagueDoctorMaskNotes'), + value: 100, + set: 'plagueDoctor', + canOwn: ownsItem('eyewear_armoire_plagueDoctorMask '), + }, +}; + +let head = { + lunarCrown: { + text: t('headArmoireLunarCrownText'), + notes: t('headArmoireLunarCrownNotes', { con: 7, per: 7 }), + value: 100, + con: 7, + per: 7, + set: 'soothing', + canOwn: ownsItem('head_armoire_lunarCrown '), + }, + redHairbow: { + text: t('headArmoireRedHairbowText'), + notes: t('headArmoireRedHairbowNotes', { str: 5, int: 5, con: 5 }), + value: 100, + str: 5, + int: 5, + con: 5, + canOwn: ownsItem('head_armoire_redHairbow '), + }, + violetFloppyHat: { + text: t('headArmoireVioletFloppyHatText'), + notes: t('headArmoireVioletFloppyHatNotes', { per: 5, int: 5, con: 5 }), + value: 100, + per: 5, + int: 5, + con: 5, + canOwn: ownsItem('head_armoire_violetFloppyHat '), + }, + gladiatorHelm: { + text: t('headArmoireGladiatorHelmText'), + notes: t('headArmoireGladiatorHelmNotes', { per: 7, int: 7 }), + value: 100, + per: 7, + int: 7, + set: 'gladiator', + canOwn: ownsItem('head_armoire_gladiatorHelm '), + }, + rancherHat: { + text: t('headArmoireRancherHatText'), + notes: t('headArmoireRancherHatNotes', { str: 5, per: 5, int: 5 }), + value: 100, + str: 5, + per: 5, + int: 5, + set: 'rancher', + canOwn: ownsItem('head_armoire_rancherHat '), + }, + royalCrown: { + text: t('headArmoireRoyalCrownText'), + notes: t('headArmoireRoyalCrownNotes', { str: 10 }), + value: 100, + str: 10, + set: 'royal', + canOwn: ownsItem('head_armoire_royalCrown '), + }, + blueHairbow: { + text: t('headArmoireBlueHairbowText'), + notes: t('headArmoireBlueHairbowNotes', { per: 5, int: 5, con: 5 }), + value: 100, + per: 5, + int: 5, + con: 5, + canOwn: ownsItem('head_armoire_blueHairbow '), + }, + goldenLaurels: { + text: t('headArmoireGoldenLaurelsText'), + notes: t('headArmoireGoldenLaurelsNotes', { attrs: 8 }), + value: 100, + per: 8, + con: 8, + set: 'goldenToga', + canOwn: ownsItem('head_armoire_goldenLaurels '), + }, + hornedIronHelm: { + text: t('headArmoireHornedIronHelmText'), + notes: t('headArmoireHornedIronHelmNotes', { con: 9, str: 7 }), + value: 100, + con: 9, + str: 7, + set: 'hornedIron', + canOwn: ownsItem('head_armoire_hornedIronHelm '), + }, + yellowHairbow: { + text: t('headArmoireYellowHairbowText'), + notes: t('headArmoireYellowHairbowNotes', { attrs: 5 }), + value: 100, + int: 5, + per: 5, + str: 5, + canOwn: ownsItem('head_armoire_yellowHairbow '), + }, + redFloppyHat: { + text: t('headArmoireRedFloppyHatText'), + notes: t('headArmoireRedFloppyHatNotes', { attrs: 6 }), + value: 100, + con: 6, + int: 6, + per: 6, + canOwn: ownsItem('head_armoire_redFloppyHat '), + }, + plagueDoctorHat: { + text: t('headArmoirePlagueDoctorHatText'), + notes: t('headArmoirePlagueDoctorHatNotes', { int: 5, str: 6, con: 5 }), + value: 100, + int: 5, + str: 6, + con: 5, + set: 'plagueDoctor', + canOwn: ownsItem('head_armoire_plagueDoctorHat '), + }, + blackCat: { + text: t('headArmoireBlackCatText'), + notes: t('headArmoireBlackCatNotes', { attrs: 9 }), + value: 100, + int: 9, + per: 9, + canOwn: ownsItem('head_armoire_blackCat '), + }, + orangeCat: { + text: t('headArmoireOrangeCatText'), + notes: t('headArmoireOrangeCatNotes', { attrs: 9 }), + value: 100, + con: 9, + str: 9, + canOwn: ownsItem('head_armoire_orangeCat '), + }, + blueFloppyHat: { + text: t('headArmoireBlueFloppyHatText'), + notes: t('headArmoireBlueFloppyHatNotes', { attrs: 7 }), + value: 100, + per: 7, + int: 7, + con: 7, + canOwn: ownsItem('head_armoire_blueFloppyHat '), + }, + shepherdHeaddress: { + text: t('headArmoireShepherdHeaddressText'), + notes: t('headArmoireShepherdHeaddressNotes', { int: 9 }), + value: 100, + int: 9, + set: 'shepherd', + canOwn: ownsItem('head_armoire_shepherdHeaddress '), + }, +}; + +let shield = { + gladiatorShield: { + text: t('shieldArmoireGladiatorShieldText'), + notes: t('shieldArmoireGladiatorShieldNotes', { con: 5, str: 5 }), + value: 100, + con: 5, + str: 5, + set: 'gladiator', + canOwn: ownsItem('shield_armoire_gladiatorShield '), + }, + midnightShield: { + text: t('shieldArmoireMidnightShieldText'), + notes: t('shieldArmoireMidnightShieldNotes', { con: 10, str: 2 }), + value: 100, + con: 10, + str: 2, + canOwn: ownsItem('shield_armoire_midnightShield '), + }, + royalCane: { + text: t('shieldArmoireRoyalCaneText'), + notes: t('shieldArmoireRoyalCaneNotes', { attrs: 5 }), + value: 100, + con: 5, + int: 5, + per: 5, + set: 'royal', + canOwn: ownsItem('shield_armoire_royalCane '), + }, +}; + +let weapon = { + basicCrossbow: { + text: t('weaponArmoireBasicCrossbowText'), + notes: t('weaponArmoireBasicCrossbowNotes', { str: 5, per: 5, con: 5 }), + value: 100, + str: 5, + per: 5, + con: 5, + canOwn: ownsItem('weapon_armoire_basicCrossbow '), + }, + lunarSceptre: { + text: t('weaponArmoireLunarSceptreText'), + notes: t('weaponArmoireLunarSceptreNotes', { con: 7, int: 7 }), + value: 100, + con: 7, + int: 7, + set: 'soothing', + canOwn: ownsItem('weapon_armoire_lunarSceptre '), + }, + rancherLasso: { + twoHanded: true, + text: t('weaponArmoireRancherLassoText'), + notes: t('weaponArmoireRancherLassoNotes', { str: 5, per: 5, int: 5 }), + value: 100, + str: 5, + per: 5, + int: 5, + set: 'rancher', + canOwn: ownsItem('weapon_armoire_rancherLasso '), + }, + mythmakerSword: { + text: t('weaponArmoireMythmakerSwordText'), + notes: t('weaponArmoireMythmakerSwordNotes', { attrs: 6 }), + value: 100, + str: 6, + per: 6, + set: 'goldenToga', + canOwn: ownsItem('weapon_armoire_mythmakerSword '), + }, + ironCrook: { + text: t('weaponArmoireIronCrookText'), + notes: t('weaponArmoireIronCrookNotes', { attrs: 7 }), + value: 100, + str: 7, + per: 7, + set: 'hornedIron', + canOwn: ownsItem('weapon_armoire_ironCrook '), + }, + goldWingStaff: { + text: t('weaponArmoireGoldWingStaffText'), + notes: t('weaponArmoireGoldWingStaffNotes', { attrs: 4 }), + value: 100, + con: 4, + int: 4, + per: 4, + str: 4, + canOwn: ownsItem('weapon_armoire_goldWingStaff '), + }, + batWand: { + text: t('weaponArmoireBatWandText'), + notes: t('weaponArmoireBatWandNotes', { int: 10, per: 2 }), + value: 100, + int: 10, + per: 2, + canOwn: ownsItem('weapon_armoire_batWand '), + }, + shepherdsCrook: { + text: t('weaponArmoireShepherdsCrookText'), + notes: t('weaponArmoireShepherdsCrookNotes', { con: 9 }), + value: 100, + con: 9, + set: 'shepherd', + canOwn: ownsItem('weapon_armoire_shepherdsCrook '), + }, +}; + +let armoireSet = { + armor, + eyewear, + head, + shield, + weapon, +}; + +export default armoireSet; diff --git a/common/script/content/gear/sets/base.js b/common/script/content/gear/sets/base.js new file mode 100644 index 0000000000..4f0e84268a --- /dev/null +++ b/common/script/content/gear/sets/base.js @@ -0,0 +1,80 @@ +import t from '../../translation'; + +let armor = { + 0: { + text: t('armorBase0Text'), + notes: t('armorBase0Notes'), + value: 0, + }, +}; + +let back = { + 0: { + text: t('backBase0Text'), + notes: t('backBase0Notes'), + value: 0, + }, +}; + +let body = { + 0: { + text: t('bodyBase0Text'), + notes: t('bodyBase0Notes'), + value: 0, + }, +}; + +let eyewear = { + 0: { + text: t('eyewearBase0Text'), + notes: t('eyewearBase0Notes'), + value: 0, + last: true, + }, +}; + +let head = { + 0: { + text: t('headBase0Text'), + notes: t('headBase0Notes'), + value: 0, + }, +}; + +let headAccessory = { + 0: { + text: t('headAccessoryBase0Text'), + notes: t('headAccessoryBase0Notes'), + value: 0, + last: true, + }, +}; + +let shield = { + 0: { + text: t('shieldBase0Text'), + notes: t('shieldBase0Notes'), + value: 0, + }, +}; + +let weapon = { + 0: { + text: t('weaponBase0Text'), + notes: t('weaponBase0Notes'), + value: 0, + }, +}; + +let baseSet = { + armor, + back, + body, + eyewear, + head, + headAccessory, + shield, + weapon, +}; + +export default baseSet; diff --git a/common/script/content/gear/sets/healer.js b/common/script/content/gear/sets/healer.js new file mode 100644 index 0000000000..4fa5bc38dc --- /dev/null +++ b/common/script/content/gear/sets/healer.js @@ -0,0 +1,158 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorHealer1Text'), + notes: t('armorHealer1Notes', { con: 6 }), + con: 6, + value: 30, + }, + 2: { + text: t('armorHealer2Text'), + notes: t('armorHealer2Notes', { con: 9 }), + con: 9, + value: 45, + }, + 3: { + text: t('armorHealer3Text'), + notes: t('armorHealer3Notes', { con: 12 }), + con: 12, + value: 65, + }, + 4: { + text: t('armorHealer4Text'), + notes: t('armorHealer4Notes', { con: 15 }), + con: 15, + value: 90, + }, + 5: { + text: t('armorHealer5Text'), + notes: t('armorHealer5Notes', { con: 18 }), + con: 18, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headHealer1Text'), + notes: t('headHealer1Notes', { int: 2 }), + int: 2, + value: 15, + }, + 2: { + text: t('headHealer2Text'), + notes: t('headHealer2Notes', { int: 3 }), + int: 3, + value: 25, + }, + 3: { + text: t('headHealer3Text'), + notes: t('headHealer3Notes', { int: 5 }), + int: 5, + value: 40, + }, + 4: { + text: t('headHealer4Text'), + notes: t('headHealer4Notes', { int: 7 }), + int: 7, + value: 60, + }, + 5: { + text: t('headHealer5Text'), + notes: t('headHealer5Notes', { int: 9 }), + int: 9, + value: 80, + last: true, + }, +}; + +let shield = { + 1: { + text: t('shieldHealer1Text'), + notes: t('shieldHealer1Notes', { con: 2 }), + con: 2, + value: 20, + }, + 2: { + text: t('shieldHealer2Text'), + notes: t('shieldHealer2Notes', { con: 4 }), + con: 4, + value: 35, + }, + 3: { + text: t('shieldHealer3Text'), + notes: t('shieldHealer3Notes', { con: 6 }), + con: 6, + value: 50, + }, + 4: { + text: t('shieldHealer4Text'), + notes: t('shieldHealer4Notes', { con: 9 }), + con: 9, + value: 70, + }, + 5: { + text: t('shieldHealer5Text'), + notes: t('shieldHealer5Notes', { con: 12 }), + con: 12, + value: 90, + last: true, + }, +}; + +let weapon = { + + 0: { + text: t('weaponHealer0Text'), + notes: t('weaponHealer0Notes'), + value: 0, + }, + 1: { + text: t('weaponHealer1Text'), + notes: t('weaponHealer1Notes', { int: 2 }), + int: 2, + value: 20, + }, + 2: { + text: t('weaponHealer2Text'), + notes: t('weaponHealer2Notes', { int: 3 }), + int: 3, + value: 30, + }, + 3: { + text: t('weaponHealer3Text'), + notes: t('weaponHealer3Notes', { int: 5 }), + int: 5, + value: 45, + }, + 4: { + text: t('weaponHealer4Text'), + notes: t('weaponHealer4Notes', { int: 7 }), + int: 7, + value: 65, + }, + 5: { + text: t('weaponHealer5Text'), + notes: t('weaponHealer5Notes', { int: 9 }), + int: 9, + value: 90, + }, + 6: { + text: t('weaponHealer6Text'), + notes: t('weaponHealer6Notes', { int: 11 }), + int: 11, + value: 120, + last: true, + }, +}; + +let healerSet = { + armor, + head, + shield, + weapon, +}; + +export default healerSet; diff --git a/common/script/content/gear/sets/mystery.js b/common/script/content/gear/sets/mystery.js new file mode 100644 index 0000000000..a25caeeea9 --- /dev/null +++ b/common/script/content/gear/sets/mystery.js @@ -0,0 +1,340 @@ +import t from '../../translation'; + +let armor = { + 201402: { + text: t('armorMystery201402Text'), + notes: t('armorMystery201402Notes'), + mystery: '201402', + value: 0, + }, + 201403: { + text: t('armorMystery201403Text'), + notes: t('armorMystery201403Notes'), + mystery: '201403', + value: 0, + }, + 201405: { + text: t('armorMystery201405Text'), + notes: t('armorMystery201405Notes'), + mystery: '201405', + value: 0, + }, + 201406: { + text: t('armorMystery201406Text'), + notes: t('armorMystery201406Notes'), + mystery: '201406', + value: 0, + }, + 201407: { + text: t('armorMystery201407Text'), + notes: t('armorMystery201407Notes'), + mystery: '201407', + value: 0, + }, + 201408: { + text: t('armorMystery201408Text'), + notes: t('armorMystery201408Notes'), + mystery: '201408', + value: 0, + }, + 201409: { + text: t('armorMystery201409Text'), + notes: t('armorMystery201409Notes'), + mystery: '201409', + value: 0, + }, + 201410: { + text: t('armorMystery201410Text'), + notes: t('armorMystery201410Notes'), + mystery: '201410', + value: 0, + }, + 201412: { + text: t('armorMystery201412Text'), + notes: t('armorMystery201412Notes'), + mystery: '201412', + value: 0, + }, + 201501: { + text: t('armorMystery201501Text'), + notes: t('armorMystery201501Notes'), + mystery: '201501', + value: 0, + }, + 201503: { + text: t('armorMystery201503Text'), + notes: t('armorMystery201503Notes'), + mystery: '201503', + value: 0, + }, + 201504: { + text: t('armorMystery201504Text'), + notes: t('armorMystery201504Notes'), + mystery: '201504', + value: 0, + }, + 201506: { + text: t('armorMystery201506Text'), + notes: t('armorMystery201506Notes'), + mystery: '201506', + value: 0, + }, + 201508: { + text: t('armorMystery201508Text'), + notes: t('armorMystery201508Notes'), + mystery: '201508', + value: 0, + }, + 201509: { + text: t('armorMystery201509Text'), + notes: t('armorMystery201509Notes'), + mystery: '201509', + value: 0, + }, + 301404: { + text: t('armorMystery301404Text'), + notes: t('armorMystery301404Notes'), + mystery: '301404', + value: 0, + }, +}; + +let back = { + 201402: { + text: t('backMystery201402Text'), + notes: t('backMystery201402Notes'), + mystery: '201402', + value: 0, + }, + 201404: { + text: t('backMystery201404Text'), + notes: t('backMystery201404Notes'), + mystery: '201404', + value: 0, + }, + 201410: { + text: t('backMystery201410Text'), + notes: t('backMystery201410Notes'), + mystery: '201410', + value: 0, + }, + 201504: { + text: t('backMystery201504Text'), + notes: t('backMystery201504Notes'), + mystery: '201504', + value: 0, + }, + 201507: { + text: t('backMystery201507Text'), + notes: t('backMystery201507Notes'), + mystery: '201507', + value: 0, + }, + 201510: { + text: t('backMystery201510Text'), + notes: t('backMystery201510Notes'), + mystery: '201510', + value: 0, + }, +}; + +let eyewear = { + 201503: { + text: t('eyewearMystery201503Text'), + notes: t('eyewearMystery201503Notes'), + mystery: '201503', + value: 0, + }, + 201506: { + text: t('eyewearMystery201506Text'), + notes: t('eyewearMystery201506Notes'), + mystery: '201506', + value: 0, + }, + 201507: { + text: t('eyewearMystery201507Text'), + notes: t('eyewearMystery201507Notes'), + mystery: '201507', + value: 0, + }, + 301404: { + text: t('eyewearMystery301404Text'), + notes: t('eyewearMystery301404Notes'), + mystery: '301404', + value: 0, + }, + 301405: { + text: t('eyewearMystery301405Text'), + notes: t('eyewearMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let head = { + 201402: { + text: t('headMystery201402Text'), + notes: t('headMystery201402Notes'), + mystery: '201402', + value: 0, + }, + 201405: { + text: t('headMystery201405Text'), + notes: t('headMystery201405Notes'), + mystery: '201405', + value: 0, + }, + 201406: { + text: t('headMystery201406Text'), + notes: t('headMystery201406Notes'), + mystery: '201406', + value: 0, + }, + 201407: { + text: t('headMystery201407Text'), + notes: t('headMystery201407Notes'), + mystery: '201407', + value: 0, + }, + 201408: { + text: t('headMystery201408Text'), + notes: t('headMystery201408Notes'), + mystery: '201408', + value: 0, + }, + 201411: { + text: t('headMystery201411Text'), + notes: t('headMystery201411Notes'), + mystery: '201411', + value: 0, + }, + 201412: { + text: t('headMystery201412Text'), + notes: t('headMystery201412Notes'), + mystery: '201412', + value: 0, + }, + 201501: { + text: t('headMystery201501Text'), + notes: t('headMystery201501Notes'), + mystery: '201501', + value: 0, + }, + 201505: { + text: t('headMystery201505Text'), + notes: t('headMystery201505Notes'), + mystery: '201505', + value: 0, + }, + 201508: { + text: t('headMystery201508Text'), + notes: t('headMystery201508Notes'), + mystery: '201508', + value: 0, + }, + 201509: { + text: t('headMystery201509Text'), + notes: t('headMystery201509Notes'), + mystery: '201509', + value: 0, + }, + 301404: { + text: t('headMystery301404Text'), + notes: t('headMystery301404Notes'), + mystery: '301404', + value: 0, + }, + 301405: { + text: t('headMystery301405Text'), + notes: t('headMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let headAccessory = { + 201403: { + text: t('headAccessoryMystery201403Text'), + notes: t('headAccessoryMystery201403Notes'), + mystery: '201403', + value: 0, + }, + 201404: { + text: t('headAccessoryMystery201404Text'), + notes: t('headAccessoryMystery201404Notes'), + mystery: '201404', + value: 0, + }, + 201409: { + text: t('headAccessoryMystery201409Text'), + notes: t('headAccessoryMystery201409Notes'), + mystery: '201409', + value: 0, + }, + 201502: { + text: t('headAccessoryMystery201502Text'), + notes: t('headAccessoryMystery201502Notes'), + mystery: '201502', + value: 0, + }, + 201510: { + text: t('headAccessoryMystery201510Text'), + notes: t('headAccessoryMystery201510Notes'), + mystery: '201510', + value: 0, + }, + 301405: { + text: t('headAccessoryMystery301405Text'), + notes: t('headAccessoryMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let shield = { + 301405: { + text: t('shieldMystery301405Text'), + notes: t('shieldMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let weapon = { + 201411: { + text: t('weaponMystery201411Text'), + notes: t('weaponMystery201411Notes'), + mystery: '201411', + value: 0, + }, + 201502: { + text: t('weaponMystery201502Text'), + notes: t('weaponMystery201502Notes'), + mystery: '201502', + value: 0, + }, + 201505: { + text: t('weaponMystery201505Text'), + notes: t('weaponMystery201505Notes'), + mystery: '201505', + value: 0, + }, + 301404: { + text: t('weaponMystery301404Text'), + notes: t('weaponMystery301404Notes'), + mystery: '301404', + value: 0, + }, +}; + +let mysterySet = { + armor, + back, + eyewear, + head, + headAccessory, + shield, + weapon, +}; + +export default mysterySet; diff --git a/common/script/content/gear/sets/rogue.js b/common/script/content/gear/sets/rogue.js new file mode 100644 index 0000000000..43d6c7cdaa --- /dev/null +++ b/common/script/content/gear/sets/rogue.js @@ -0,0 +1,170 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorRogue1Text'), + notes: t('armorRogue1Notes', { per: 6 }), + per: 6, + value: 30, + }, + 2: { + text: t('armorRogue2Text'), + notes: t('armorRogue2Notes', { per: 9 }), + per: 9, + value: 45, + }, + 3: { + text: t('armorRogue3Text'), + notes: t('armorRogue3Notes', { per: 12 }), + per: 12, + value: 65, + }, + 4: { + text: t('armorRogue4Text'), + notes: t('armorRogue4Notes', { per: 15 }), + per: 15, + value: 90, + }, + 5: { + text: t('armorRogue5Text'), + notes: t('armorRogue5Notes', { per: 18 }), + per: 18, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headRogue1Text'), + notes: t('headRogue1Notes', { per: 2 }), + per: 2, + value: 15, + }, + 2: { + text: t('headRogue2Text'), + notes: t('headRogue2Notes', { per: 4 }), + per: 4, + value: 25, + }, + 3: { + text: t('headRogue3Text'), + notes: t('headRogue3Notes', { per: 6 }), + per: 6, + value: 40, + }, + 4: { + text: t('headRogue4Text'), + notes: t('headRogue4Notes', { per: 9 }), + per: 9, + value: 60, + }, + 5: { + text: t('headRogue5Text'), + notes: t('headRogue5Notes', { per: 12 }), + per: 12, + value: 80, + last: true, + }, +}; + +let weapon = { + 0: { + text: t('weaponRogue0Text'), + notes: t('weaponRogue0Notes'), + str: 0, + value: 0, + }, + 1: { + text: t('weaponRogue1Text'), + notes: t('weaponRogue1Notes', { str: 2 }), + str: 2, + value: 20, + }, + 2: { + text: t('weaponRogue2Text'), + notes: t('weaponRogue2Notes', { str: 3 }), + str: 3, + value: 35, + }, + 3: { + text: t('weaponRogue3Text'), + notes: t('weaponRogue3Notes', { str: 4 }), + str: 4, + value: 50, + }, + 4: { + text: t('weaponRogue4Text'), + notes: t('weaponRogue4Notes', { str: 6 }), + str: 6, + value: 70, + }, + 5: { + text: t('weaponRogue5Text'), + notes: t('weaponRogue5Notes', { str: 8 }), + str: 8, + value: 90, + }, + 6: { + text: t('weaponRogue6Text'), + notes: t('weaponRogue6Notes', { str: 10 }), + str: 10, + value: 120, + last: true, + }, +}; + +let shield = { + 0: { + text: t('weaponRogue0Text'), + notes: t('weaponRogue0Notes'), + str: 0, + value: 0, + }, + 1: { + text: t('weaponRogue1Text'), + notes: t('weaponRogue1Notes', { str: 2 }), + str: 2, + value: 20, + }, + 2: { + text: t('weaponRogue2Text'), + notes: t('weaponRogue2Notes', { str: 3 }), + str: 3, + value: 35, + }, + 3: { + text: t('weaponRogue3Text'), + notes: t('weaponRogue3Notes', { str: 4 }), + str: 4, + value: 50, + }, + 4: { + text: t('weaponRogue4Text'), + notes: t('weaponRogue4Notes', { str: 6 }), + str: 6, + value: 70, + }, + 5: { + text: t('weaponRogue5Text'), + notes: t('weaponRogue5Notes', { str: 8 }), + str: 8, + value: 90, + }, + 6: { + text: t('weaponRogue6Text'), + notes: t('weaponRogue6Notes', { str: 10 }), + str: 10, + value: 120, + last: true, + }, +}; + +let rogueSet = { + armor, + head, + shield, + weapon, +}; + +export default rogueSet; diff --git a/common/script/content/gear/sets/special.js b/common/script/content/gear/sets/special.js new file mode 100644 index 0000000000..4aeb858acf --- /dev/null +++ b/common/script/content/gear/sets/special.js @@ -0,0 +1,1500 @@ +/* eslint-disable camelcase */ + +import { + EVENTS, +} from '../../constants'; +import { ownsItem } from '../gear-helper'; +import t from '../../translation'; + +let isBackerOfLevel = (tierRequirement, ownedItem) => { + return (user) => { + let backer = user.backer; + let tier = backer && backer.tier; + + return Number(tier) >= tierRequirement || ownsItem(ownedItem); + }; +}; + +let isContributorOfLevel = (tierRequirement, ownedItem) => { + return (user) => { + let contributor = user.contributor; + let tier = contributor && contributor.level; + + return Number(tier) >= tierRequirement || ownsItem(ownedItem); + }; +}; + +let armor = { + 0: { + text: t('armorSpecial0Text'), + notes: t('armorSpecial0Notes', { con: 20 }), + con: 20, + value: 150, + canOwn: isBackerOfLevel(45), + }, + 1: { + text: t('armorSpecial1Text'), + notes: t('armorSpecial1Notes', { attrs: 6 }), + con: 6, + str: 6, + per: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(2), + }, + 2: { + text: t('armorSpecial2Text'), + notes: t('armorSpecial2Notes', { attrs: 25 }), + int: 25, + con: 25, + value: 200, + canOwn: isBackerOfLevel(300, 'armor_special_2'), + }, + finnedOceanicArmor: { + text: t('armorSpecialFinnedOceanicArmorText'), + notes: t('armorSpecialFinnedOceanicArmorNotes', { str: 15 }), + str: 15, + value: 130, + canOwn: ownsItem('armor_special_finnedOceanicArmor'), + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('armorSpecialYetiText'), + notes: t('armorSpecialYetiNotes', { con: 9 }), + con: 9, + value: 90, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('armorSpecialSkiText'), + notes: t('armorSpecialSkiNotes', { per: 15 }), + per: 15, + value: 90, + }, + candycane: { + event: EVENTS.winter, + specialClass: 'wizard', + text: t('armorSpecialCandycaneText'), + notes: t('armorSpecialCandycaneNotes', { int: 9 }), + int: 9, + value: 90, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('armorSpecialSnowflakeText'), + notes: t('armorSpecialSnowflakeNotes', { con: 15 }), + con: 15, + value: 90, + }, + birthday: { + event: EVENTS.birthday, + text: t('armorSpecialBirthdayText'), + notes: t('armorSpecialBirthdayNotes'), value: 0 }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('armorSpecialSpringRogueText'), + notes: t('armorSpecialSpringRogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('armorSpecialSpringWarriorText'), + notes: t('armorSpecialSpringWarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + text: t('armorSpecialSpringMageText'), + notes: t('armorSpecialSpringMageNotes', { int: 9 }), + value: 90, + int: 9, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('armorSpecialSpringHealerText'), + notes: t('armorSpecialSpringHealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('armorSpecialSummerRogueText'), + notes: t('armorSpecialSummerRogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('armorSpecialSummerWarriorText'), + notes: t('armorSpecialSummerWarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + text: t('armorSpecialSummerMageText'), + notes: t('armorSpecialSummerMageNotes', { int: 9 }), + value: 90, + int: 9, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('armorSpecialSummerHealerText'), + notes: t('armorSpecialSummerHealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('armorSpecialFallRogueText'), + notes: t('armorSpecialFallRogueNotes', { per: 15 }), + value: 90, + per: 15, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('armorSpecialFallWarriorText'), + notes: t('armorSpecialFallWarriorNotes', { con: 9 }), + value: 90, + con: 9, + canBuy: () => { + return true; + }, + }, + fallMage: { + event: EVENTS.fall, + specialClass: 'wizard', + text: t('armorSpecialFallMageText'), + notes: t('armorSpecialFallMageNotes', { int: 9 }), + value: 90, + int: 9, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('armorSpecialFallHealerText'), + notes: t('armorSpecialFallHealerNotes', { con: 15 }), + value: 90, + con: 15, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('armorSpecialWinter2015RogueText'), + notes: t('armorSpecialWinter2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('armorSpecialWinter2015WarriorText'), + notes: t('armorSpecialWinter2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + winter2015Mage: { + event: EVENTS.winter2015, + specialClass: 'wizard', + text: t('armorSpecialWinter2015MageText'), + notes: t('armorSpecialWinter2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('armorSpecialWinter2015HealerText'), + notes: t('armorSpecialWinter2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + birthday2015: { + text: t('armorSpecialBirthday2015Text'), + notes: t('armorSpecialBirthday2015Notes'), + value: 0, + canOwn: ownsItem('armor_special_birthday2015'), + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('armorSpecialSpring2015RogueText'), + notes: t('armorSpecialSpring2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('armorSpecialSpring2015WarriorText'), + notes: t('armorSpecialSpring2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + text: t('armorSpecialSpring2015MageText'), + notes: t('armorSpecialSpring2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('armorSpecialSpring2015HealerText'), + notes: t('armorSpecialSpring2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('armorSpecialSummer2015RogueText'), + notes: t('armorSpecialSummer2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('armorSpecialSummer2015WarriorText'), + notes: t('armorSpecialSummer2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + text: t('armorSpecialSummer2015MageText'), + notes: t('armorSpecialSummer2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('armorSpecialSummer2015HealerText'), + notes: t('armorSpecialSummer2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('armorSpecialFall2015RogueText'), + notes: t('armorSpecialFall2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('armorSpecialFall2015WarriorText'), + notes: t('armorSpecialFall2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + fall2015Mage: { + event: EVENTS.fall2015, + specialClass: 'wizard', + text: t('armorSpecialFall2015MageText'), + notes: t('armorSpecialFall2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('armorSpecialFall2015HealerText'), + notes: t('armorSpecialFall2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + gaymerx: { + event: EVENTS.gaymerx, + text: t('armorSpecialGaymerxText'), + notes: t('armorSpecialGaymerxNotes'), + value: 0, + }, +}; + +let back = { + wondercon_red: { + text: t('backSpecialWonderconRedText'), + notes: t('backSpecialWonderconRedNotes'), + value: 0, + mystery: 'wondercon', + }, + wondercon_black: { + text: t('backSpecialWonderconBlackText'), + notes: t('backSpecialWonderconBlackNotes'), + value: 0, + mystery: 'wondercon', + }, +}; + +let body = { + wondercon_red: { + text: t('bodySpecialWonderconRedText'), + notes: t('bodySpecialWonderconRedNotes'), + value: 0, + mystery: 'wondercon', + }, + wondercon_gold: { + text: t('bodySpecialWonderconGoldText'), + notes: t('bodySpecialWonderconGoldNotes'), + value: 0, + mystery: 'wondercon', + }, + wondercon_black: { + text: t('bodySpecialWonderconBlackText'), + notes: t('bodySpecialWonderconBlackNotes'), + value: 0, + mystery: 'wondercon', + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('bodySpecialSummerHealerText'), + notes: t('bodySpecialSummerHealerNotes'), + value: 20, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + text: t('bodySpecialSummerMageText'), + notes: t('bodySpecialSummerMageNotes'), + value: 20, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('bodySpecialSummer2015HealerText'), + notes: t('bodySpecialSummer2015HealerNotes'), + value: 20, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + text: t('bodySpecialSummer2015MageText'), + notes: t('bodySpecialSummer2015MageNotes'), + value: 20, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('bodySpecialSummer2015RogueText'), + notes: t('bodySpecialSummer2015RogueNotes'), + value: 20, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('bodySpecialSummer2015WarriorText'), + notes: t('bodySpecialSummer2015WarriorNotes'), + value: 20, + }, +}; + +let eyewear = { + wondercon_red: { + text: t('eyewearSpecialWonderconRedText'), + notes: t('eyewearSpecialWonderconRedNotes'), + value: 0, + mystery: 'wondercon', + }, + wondercon_black: { + text: t('eyewearSpecialWonderconBlackText'), + notes: t('eyewearSpecialWonderconBlackNotes'), + value: 0, + mystery: 'wondercon', + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('eyewearSpecialSummerRogueText'), + notes: t('eyewearSpecialSummerRogueNotes'), + value: 20, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('eyewearSpecialSummerWarriorText'), + notes: t('eyewearSpecialSummerWarriorNotes'), + value: 20, + }, +}; + +let head = { + 0: { + text: t('headSpecial0Text'), + notes: t('headSpecial0Notes', { int: 20 }), + int: 20, + value: 150, + canOwn: isBackerOfLevel(45), + }, + 1: { + text: t('headSpecial1Text'), + notes: t('headSpecial1Notes', { attrs: 6 }), + con: 6, + str: 6, + per: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(3), + }, + 2: { + text: t('headSpecial2Text'), + notes: t('headSpecial2Notes', { attrs: 25 }), + int: 25, + str: 25, + value: 200, + canOwn: isBackerOfLevel(300, 'head_special_2'), + }, + fireCoralCirclet: { + text: t('headSpecialFireCoralCircletText'), + notes: t('headSpecialFireCoralCircletNotes', { per: 15 }), + per: 15, + value: 130, + canOwn: ownsItem('head_special_fireCoralCirclet'), + }, + nye: { + event: EVENTS.winter, + text: t('headSpecialNyeText'), + notes: t('headSpecialNyeNotes'), + value: 0, + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('headSpecialYetiText'), + notes: t('headSpecialYetiNotes', { str: 9 }), + str: 9, + value: 60, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('headSpecialSkiText'), + notes: t('headSpecialSkiNotes', { per: 9 }), + per: 9, + value: 60, + }, + candycane: { + event: EVENTS.winter, + specialClass: 'wizard', + text: t('headSpecialCandycaneText'), + notes: t('headSpecialCandycaneNotes', { per: 7 }), + per: 7, + value: 60, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('headSpecialSnowflakeText'), + notes: t('headSpecialSnowflakeNotes', { int: 7 }), + int: 7, + value: 60, + }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('headSpecialSpringRogueText'), + notes: t('headSpecialSpringRogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('headSpecialSpringWarriorText'), + notes: t('headSpecialSpringWarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + text: t('headSpecialSpringMageText'), + notes: t('headSpecialSpringMageNotes', { per: 7 }), + value: 60, + per: 7, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('headSpecialSpringHealerText'), + notes: t('headSpecialSpringHealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('headSpecialSummerRogueText'), + notes: t('headSpecialSummerRogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('headSpecialSummerWarriorText'), + notes: t('headSpecialSummerWarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + text: t('headSpecialSummerMageText'), + notes: t('headSpecialSummerMageNotes', { per: 7 }), + value: 60, + per: 7, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('headSpecialSummerHealerText'), + notes: t('headSpecialSummerHealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('headSpecialFallRogueText'), + notes: t('headSpecialFallRogueNotes', { per: 9 }), + value: 60, + per: 9, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('headSpecialFallWarriorText'), + notes: t('headSpecialFallWarriorNotes', { str: 9 }), + value: 60, + str: 9, + canBuy: () => { + return true; + }, + }, + fallMage: { + event: EVENTS.fall, + specialClass: 'wizard', + text: t('headSpecialFallMageText'), + notes: t('headSpecialFallMageNotes', { per: 7 }), + value: 60, + per: 7, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('headSpecialFallHealerText'), + notes: t('headSpecialFallHealerNotes', { int: 7 }), + value: 60, + int: 7, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('headSpecialWinter2015RogueText'), + notes: t('headSpecialWinter2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('headSpecialWinter2015WarriorText'), + notes: t('headSpecialWinter2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + winter2015Mage: { + event: EVENTS.winter2015, + specialClass: 'wizard', + text: t('headSpecialWinter2015MageText'), + notes: t('headSpecialWinter2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('headSpecialWinter2015HealerText'), + notes: t('headSpecialWinter2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + nye2014: { + text: t('headSpecialNye2014Text'), + notes: t('headSpecialNye2014Notes'), + value: 0, + canOwn: ownsItem('head_special_nye2014'), + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('headSpecialSpring2015RogueText'), + notes: t('headSpecialSpring2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('headSpecialSpring2015WarriorText'), + notes: t('headSpecialSpring2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + text: t('headSpecialSpring2015MageText'), + notes: t('headSpecialSpring2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('headSpecialSpring2015HealerText'), + notes: t('headSpecialSpring2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('headSpecialSummer2015RogueText'), + notes: t('headSpecialSummer2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('headSpecialSummer2015WarriorText'), + notes: t('headSpecialSummer2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + text: t('headSpecialSummer2015MageText'), + notes: t('headSpecialSummer2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('headSpecialSummer2015HealerText'), + notes: t('headSpecialSummer2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('headSpecialFall2015RogueText'), + notes: t('headSpecialFall2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('headSpecialFall2015WarriorText'), + notes: t('headSpecialFall2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + fall2015Mage: { + event: EVENTS.fall2015, + specialClass: 'wizard', + text: t('headSpecialFall2015MageText'), + notes: t('headSpecialFall2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('headSpecialFall2015HealerText'), + notes: t('headSpecialFall2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + gaymerx: { + event: EVENTS.gaymerx, + text: t('headSpecialGaymerxText'), + notes: t('headSpecialGaymerxNotes'), + value: 0, + }, +}; + +let headAccessory = { + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('headAccessorySpecialSpringRogueText'), + notes: t('headAccessorySpecialSpringRogueNotes'), + value: 20, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('headAccessorySpecialSpringWarriorText'), + notes: t('headAccessorySpecialSpringWarriorNotes'), + value: 20, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + text: t('headAccessorySpecialSpringMageText'), + notes: t('headAccessorySpecialSpringMageNotes'), + value: 20, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('headAccessorySpecialSpringHealerText'), + notes: t('headAccessorySpecialSpringHealerNotes'), + value: 20, + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('headAccessorySpecialSpring2015RogueText'), + notes: t('headAccessorySpecialSpring2015RogueNotes'), + value: 20, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('headAccessorySpecialSpring2015WarriorText'), + notes: t('headAccessorySpecialSpring2015WarriorNotes'), + value: 20, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + text: t('headAccessorySpecialSpring2015MageText'), + notes: t('headAccessorySpecialSpring2015MageNotes'), + value: 20, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('headAccessorySpecialSpring2015HealerText'), + notes: t('headAccessorySpecialSpring2015HealerNotes'), + value: 20, + }, + bearEars: { + gearSet: 'animal', + text: t('headAccessoryBearEarsText'), + notes: t('headAccessoryBearEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_bearEars'), + canBuy: () => { + return true; + }, + }, + cactusEars: { + gearSet: 'animal', + text: t('headAccessoryCactusEarsText'), + notes: t('headAccessoryCactusEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_cactusEars'), + canBuy: () => { + return true; + }, + }, + foxEars: { + gearSet: 'animal', + text: t('headAccessoryFoxEarsText'), + notes: t('headAccessoryFoxEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_foxEars'), + canBuy: () => { + return true; + }, + }, + lionEars: { + gearSet: 'animal', + text: t('headAccessoryLionEarsText'), + notes: t('headAccessoryLionEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_lionEars'), + canBuy: () => { + return true; + }, + }, + pandaEars: { + gearSet: 'animal', + text: t('headAccessoryPandaEarsText'), + notes: t('headAccessoryPandaEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_pandaEars'), + canBuy: () => { + return true; + }, + }, + pigEars: { + gearSet: 'animal', + text: t('headAccessoryPigEarsText'), + notes: t('headAccessoryPigEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_pigEars'), + canBuy: () => { + return true; + }, + }, + tigerEars: { + gearSet: 'animal', + text: t('headAccessoryTigerEarsText'), + notes: t('headAccessoryTigerEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_tigerEars'), + canBuy: () => { + return true; + }, + }, + wolfEars: { + gearSet: 'animal', + text: t('headAccessoryWolfEarsText'), + notes: t('headAccessoryWolfEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_wolfEars'), + canBuy: () => { + return true; + }, + }, +}; + +let shield = { + 0: { + text: t('shieldSpecial0Text'), + notes: t('shieldSpecial0Notes', { per: 20 }), + per: 20, + value: 150, + canOwn: isBackerOfLevel(45), + }, + 1: { + text: t('shieldSpecial1Text'), + notes: t('shieldSpecial1Notes', { attrs: 6 }), + con: 6, + str: 6, + per: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(5), + }, + 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'), + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('shieldSpecialYetiText'), + notes: t('shieldSpecialYetiNotes', { con: 7 }), + con: 7, + value: 70, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('weaponSpecialSkiText'), + notes: t('weaponSpecialSkiNotes', { str: 8 }), + str: 8, + value: 90, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('shieldSpecialSnowflakeText'), + notes: t('shieldSpecialSnowflakeNotes', { con: 9 }), + con: 9, + value: 70, + }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('shieldSpecialSpringRogueText'), + notes: t('shieldSpecialSpringRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('shieldSpecialSpringWarriorText'), + notes: t('shieldSpecialSpringWarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('shieldSpecialSpringHealerText'), + notes: t('shieldSpecialSpringHealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('shieldSpecialSummerRogueText'), + notes: t('shieldSpecialSummerRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('shieldSpecialSummerWarriorText'), + notes: t('shieldSpecialSummerWarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('shieldSpecialSummerHealerText'), + notes: t('shieldSpecialSummerHealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('shieldSpecialFallRogueText'), + notes: t('shieldSpecialFallRogueNotes', { str: 8 }), + value: 80, + str: 8, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('shieldSpecialFallWarriorText'), + notes: t('shieldSpecialFallWarriorNotes', { con: 7 }), + value: 70, + con: 7, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('shieldSpecialFallHealerText'), + notes: t('shieldSpecialFallHealerNotes', { con: 9 }), + value: 70, + con: 9, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('shieldSpecialWinter2015RogueText'), + notes: t('shieldSpecialWinter2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('shieldSpecialWinter2015WarriorText'), + notes: t('shieldSpecialWinter2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('shieldSpecialWinter2015HealerText'), + notes: t('shieldSpecialWinter2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('shieldSpecialSpring2015RogueText'), + notes: t('shieldSpecialSpring2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('shieldSpecialSpring2015WarriorText'), + notes: t('shieldSpecialSpring2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('shieldSpecialSpring2015HealerText'), + notes: t('shieldSpecialSpring2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('shieldSpecialSummer2015RogueText'), + notes: t('shieldSpecialSummer2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('shieldSpecialSummer2015WarriorText'), + notes: t('shieldSpecialSummer2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('shieldSpecialSummer2015HealerText'), + notes: t('shieldSpecialSummer2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('shieldSpecialFall2015RogueText'), + notes: t('shieldSpecialFall2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('shieldSpecialFall2015WarriorText'), + notes: t('shieldSpecialFall2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('shieldSpecialFall2015HealerText'), + notes: t('shieldSpecialFall2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, +}; + +let weapon = { + 0: { + text: t('weaponSpecial0Text'), + notes: t('weaponSpecial0Notes', { str: 20 }), + str: 20, + value: 150, + canOwn: isBackerOfLevel(70), + }, + 1: { + text: t('weaponSpecial1Text'), + notes: t('weaponSpecial1Notes', { attrs: 6 }), + str: 6, + per: 6, + con: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(4), + }, + 2: { + text: t('weaponSpecial2Text'), + notes: t('weaponSpecial2Notes', { attrs: 25 }), + str: 25, + per: 25, + value: 200, + canOwn: isBackerOfLevel(300, 'weapon_special_2'), + }, + 3: { + text: t('weaponSpecial3Text'), + notes: t('weaponSpecial3Notes', { attrs: 17 }), + str: 17, + int: 17, + con: 17, + value: 200, + canOwn: isBackerOfLevel(300, 'weapon_special_3'), + }, + critical: { + text: t('weaponSpecialCriticalText'), + notes: t('weaponSpecialCriticalNotes', { attrs: 40 }), + str: 40, + per: 40, + value: 200, + canOwn: (user) => { + let hasCritical = user.contributor && user.contributor.critical; + + return hasCritical; + }, + }, + tridentOfCrashingTides: { + text: t('weaponSpecialTridentOfCrashingTidesText'), + notes: t('weaponSpecialTridentOfCrashingTidesNotes', { int: 15 }), + int: 15, + value: 130, + canOwn: ownsItem('weapon_special_tridentOfCrashingTides'), + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('weaponSpecialYetiText'), + notes: t('weaponSpecialYetiNotes', { str: 15 }), + str: 15, + value: 90, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('weaponSpecialSkiText'), + notes: t('weaponSpecialSkiNotes', { str: 8 }), + str: 8, + value: 90, + }, + candycane: { + event: EVENTS.winter, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialCandycaneText'), + notes: t('weaponSpecialCandycaneNotes', { int: 15, per: 7 }), + int: 15, + per: 7, + value: 160, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('weaponSpecialSnowflakeText'), + notes: t('weaponSpecialSnowflakeNotes', { int: 9 }), + int: 9, + value: 90, + }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('weaponSpecialSpringRogueText'), + notes: t('weaponSpecialSpringRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('weaponSpecialSpringWarriorText'), + notes: t('weaponSpecialSpringWarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSpringMageText'), + notes: t('weaponSpecialSpringMageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('weaponSpecialSpringHealerText'), + notes: t('weaponSpecialSpringHealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('weaponSpecialSummerRogueText'), + notes: t('weaponSpecialSummerRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('weaponSpecialSummerWarriorText'), + notes: t('weaponSpecialSummerWarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSummerMageText'), + notes: t('weaponSpecialSummerMageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('weaponSpecialSummerHealerText'), + notes: t('weaponSpecialSummerHealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('weaponSpecialFallRogueText'), + notes: t('weaponSpecialFallRogueNotes', { str: 8 }), + value: 80, + str: 8, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('weaponSpecialFallWarriorText'), + notes: t('weaponSpecialFallWarriorNotes', { str: 15 }), + value: 90, + str: 15, + canBuy: () => { + return true; + }, + }, + fallMage: { + event: EVENTS.fall, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialFallMageText'), + notes: t('weaponSpecialFallMageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('weaponSpecialFallHealerText'), + notes: t('weaponSpecialFallHealerNotes', { int: 9 }), + value: 90, + int: 9, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('weaponSpecialWinter2015RogueText'), + notes: t('weaponSpecialWinter2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('weaponSpecialWinter2015WarriorText'), + notes: t('weaponSpecialWinter2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + winter2015Mage: { + event: EVENTS.winter2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialWinter2015MageText'), + notes: t('weaponSpecialWinter2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('weaponSpecialWinter2015HealerText'), + notes: t('weaponSpecialWinter2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('weaponSpecialSpring2015RogueText'), + notes: t('weaponSpecialSpring2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('weaponSpecialSpring2015WarriorText'), + notes: t('weaponSpecialSpring2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSpring2015MageText'), + notes: t('weaponSpecialSpring2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('weaponSpecialSpring2015HealerText'), + notes: t('weaponSpecialSpring2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('weaponSpecialSummer2015RogueText'), + notes: t('weaponSpecialSummer2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('weaponSpecialSummer2015WarriorText'), + notes: t('weaponSpecialSummer2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSummer2015MageText'), + notes: t('weaponSpecialSummer2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('weaponSpecialSummer2015HealerText'), + notes: t('weaponSpecialSummer2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('weaponSpecialFall2015RogueText'), + notes: t('weaponSpecialFall2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('weaponSpecialFall2015WarriorText'), + notes: t('weaponSpecialFall2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + fall2015Mage: { + event: EVENTS.fall2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialFall2015MageText'), + notes: t('weaponSpecialFall2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('weaponSpecialFall2015HealerText'), + notes: t('weaponSpecialFall2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, +}; + +let specialSet = { + armor, + back, + body, + eyewear, + head, + headAccessory, + shield, + weapon, +}; + +export default specialSet; diff --git a/common/script/content/gear/sets/warrior.js b/common/script/content/gear/sets/warrior.js new file mode 100644 index 0000000000..4e4f3d2a8e --- /dev/null +++ b/common/script/content/gear/sets/warrior.js @@ -0,0 +1,155 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorWarrior1Text'), + notes: t('armorWarrior1Notes', { con: 3 }), + con: 3, + value: 30, + }, + 2: { + text: t('armorWarrior2Text'), + notes: t('armorWarrior2Notes', { con: 5 }), + con: 5, + value: 45, + }, + 3: { + text: t('armorWarrior3Text'), + notes: t('armorWarrior3Notes', { con: 7 }), + con: 7, + value: 65, + }, + 4: { + text: t('armorWarrior4Text'), + notes: t('armorWarrior4Notes', { con: 9 }), + con: 9, + value: 90, + }, + 5: { + text: t('armorWarrior5Text'), + notes: t('armorWarrior5Notes', { con: 11 }), + con: 11, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headWarrior1Text'), + notes: t('headWarrior1Notes', { str: 2 }), + str: 2, + value: 15, + }, + 2: { + text: t('headWarrior2Text'), + notes: t('headWarrior2Notes', { str: 4 }), + str: 4, + value: 25, + }, + 3: { + text: t('headWarrior3Text'), + notes: t('headWarrior3Notes', { str: 6 }), + str: 6, + value: 40, + }, + 4: { + text: t('headWarrior4Text'), + notes: t('headWarrior4Notes', { str: 9 }), + str: 9, + value: 60, + }, + 5: { + text: t('headWarrior5Text'), + notes: t('headWarrior5Notes', { str: 12 }), + str: 12, + value: 80, + last: true, + }, +}; + +let shield = { + 1: { + text: t('shieldWarrior1Text'), + notes: t('shieldWarrior1Notes', { con: 2 }), + con: 2, + value: 20, + }, + 2: { + text: t('shieldWarrior2Text'), + notes: t('shieldWarrior2Notes', { con: 3 }), + con: 3, + value: 35, + }, + 3: { + text: t('shieldWarrior3Text'), + notes: t('shieldWarrior3Notes', { con: 5 }), + con: 5, + value: 50, + }, + 4: { + text: t('shieldWarrior4Text'), + notes: t('shieldWarrior4Notes', { con: 7 }), + con: 7, + value: 70, + }, + 5: { + text: t('shieldWarrior5Text'), + notes: t('shieldWarrior5Notes', { con: 9 }), + con: 9, + value: 90, + last: true, + }, +}; + +let weapon = { + 0: { + text: t('weaponWarrior0Text'), + notes: t('weaponWarrior0Notes'), value: 1 }, + 1: { + text: t('weaponWarrior1Text'), + notes: t('weaponWarrior1Notes', { str: 3 }), + str: 3, + value: 20, + }, + 2: { + text: t('weaponWarrior2Text'), + notes: t('weaponWarrior2Notes', { str: 6 }), + str: 6, + value: 30, + }, + 3: { + text: t('weaponWarrior3Text'), + notes: t('weaponWarrior3Notes', { str: 9 }), + str: 9, + value: 45, + }, + 4: { + text: t('weaponWarrior4Text'), + notes: t('weaponWarrior4Notes', { str: 12 }), + str: 12, + value: 65, + }, + 5: { + text: t('weaponWarrior5Text'), + notes: t('weaponWarrior5Notes', { str: 15 }), + str: 15, + value: 90, + }, + 6: { + text: t('weaponWarrior6Text'), + notes: t('weaponWarrior6Notes', { str: 18 }), + str: 18, + value: 120, + last: true, + }, +}; + +let warriorSet = { + armor, + head, + shield, + weapon, +}; + +export default warriorSet; diff --git a/common/script/content/gear/sets/wizard.js b/common/script/content/gear/sets/wizard.js new file mode 100644 index 0000000000..898e7cac3a --- /dev/null +++ b/common/script/content/gear/sets/wizard.js @@ -0,0 +1,141 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorWizard1Text'), + notes: t('armorWizard1Notes', { int: 2 }), + int: 2, + value: 30, + }, + 2: { + text: t('armorWizard2Text'), + notes: t('armorWizard2Notes', { int: 4 }), + int: 4, + value: 45, + }, + 3: { + text: t('armorWizard3Text'), + notes: t('armorWizard3Notes', { int: 6 }), + int: 6, + value: 65, + }, + 4: { + text: t('armorWizard4Text'), + notes: t('armorWizard4Notes', { int: 9 }), + int: 9, + value: 90, + }, + 5: { + text: t('armorWizard5Text'), + notes: t('armorWizard5Notes', { int: 12 }), + int: 12, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headWizard1Text'), + notes: t('headWizard1Notes', { per: 2 }), + per: 2, + value: 15, + }, + 2: { + text: t('headWizard2Text'), + notes: t('headWizard2Notes', { per: 3 }), + per: 3, + value: 25, + }, + 3: { + text: t('headWizard3Text'), + notes: t('headWizard3Notes', { per: 5 }), + per: 5, + value: 40, + }, + 4: { + text: t('headWizard4Text'), + notes: t('headWizard4Notes', { per: 7 }), + per: 7, + value: 60, + }, + 5: { + text: t('headWizard5Text'), + notes: t('headWizard5Notes', { per: 10 }), + per: 10, + value: 80, + last: true, + }, +}; + +let shield = { + // Wizard's weapons are two handed + // And thus do not have shields + // But the content structure still expects an object +}; + +let weapon = { + + 0: { + twoHanded: true, + text: t('weaponWizard0Text'), + notes: t('weaponWizard0Notes'), value: 0 }, + 1: { + twoHanded: true, + text: t('weaponWizard1Text'), + notes: t('weaponWizard1Notes', { int: 3, per: 1 }), + int: 3, + per: 1, + value: 30, + }, + 2: { + twoHanded: true, + text: t('weaponWizard2Text'), + notes: t('weaponWizard2Notes', { int: 6, per: 2 }), + int: 6, + per: 2, + value: 50, + }, + 3: { + twoHanded: true, + text: t('weaponWizard3Text'), + notes: t('weaponWizard3Notes', { int: 9, per: 3 }), + int: 9, + per: 3, + value: 80, + }, + 4: { + twoHanded: true, + text: t('weaponWizard4Text'), + notes: t('weaponWizard4Notes', { int: 12, per: 5 }), + int: 12, + per: 5, + value: 120, + }, + 5: { + twoHanded: true, + text: t('weaponWizard5Text'), + notes: t('weaponWizard5Notes', { int: 15, per: 7 }), + int: 15, + per: 7, + value: 160, + }, + 6: { + twoHanded: true, + text: t('weaponWizard6Text'), + notes: t('weaponWizard6Notes', { int: 18, per: 10 }), + int: 18, + per: 10, + value: 200, + last: true, + }, +}; + +let wizardSet = { + armor, + head, + shield, + weapon, +}; + +export default wizardSet; diff --git a/common/script/src/content/gear/shield.js b/common/script/content/gear/shield.js similarity index 100% rename from common/script/src/content/gear/shield.js rename to common/script/content/gear/shield.js diff --git a/common/script/src/content/gear/weapon.js b/common/script/content/gear/weapon.js similarity index 100% rename from common/script/src/content/gear/weapon.js rename to common/script/content/gear/weapon.js diff --git a/common/script/content/index.js b/common/script/content/index.js index ba6f7544a7..f8a7055ecc 100644 --- a/common/script/content/index.js +++ b/common/script/content/index.js @@ -1,4 +1,4 @@ -var _, api, calculateBonus, diminishingReturns, gear, moment, t; +var _, api, calculateBonus, diminishingReturns, moment, t; api = module.exports; @@ -18,3502 +18,13 @@ import { import mysterySets from './mystery-sets'; -/* - --------------------------------------------------------------- - Gear (Weapons, Armor, Head, Shield) - Item definitions: {index, text, notes, value, str, def, int, per, classes, type} - --------------------------------------------------------------- - */ +import gear from './gear'; api.mystery = mysterySets; api.itemList = ITEM_LIST; -gear = { - weapon: { - base: { - 0: { - text: t('weaponBase0Text'), - notes: t('weaponBase0Notes'), - value: 0 - } - }, - warrior: { - 0: { - text: t('weaponWarrior0Text'), - notes: t('weaponWarrior0Notes'), - value: 1 - }, - 1: { - text: t('weaponWarrior1Text'), - notes: t('weaponWarrior1Notes', { - str: 3 - }), - str: 3, - value: 20 - }, - 2: { - text: t('weaponWarrior2Text'), - notes: t('weaponWarrior2Notes', { - str: 6 - }), - str: 6, - value: 30 - }, - 3: { - text: t('weaponWarrior3Text'), - notes: t('weaponWarrior3Notes', { - str: 9 - }), - str: 9, - value: 45 - }, - 4: { - text: t('weaponWarrior4Text'), - notes: t('weaponWarrior4Notes', { - str: 12 - }), - str: 12, - value: 65 - }, - 5: { - text: t('weaponWarrior5Text'), - notes: t('weaponWarrior5Notes', { - str: 15 - }), - str: 15, - value: 90 - }, - 6: { - text: t('weaponWarrior6Text'), - notes: t('weaponWarrior6Notes', { - str: 18 - }), - str: 18, - value: 120, - last: true - } - }, - rogue: { - 0: { - text: t('weaponRogue0Text'), - notes: t('weaponRogue0Notes'), - str: 0, - value: 0 - }, - 1: { - text: t('weaponRogue1Text'), - notes: t('weaponRogue1Notes', { - str: 2 - }), - str: 2, - value: 20 - }, - 2: { - text: t('weaponRogue2Text'), - notes: t('weaponRogue2Notes', { - str: 3 - }), - str: 3, - value: 35 - }, - 3: { - text: t('weaponRogue3Text'), - notes: t('weaponRogue3Notes', { - str: 4 - }), - str: 4, - value: 50 - }, - 4: { - text: t('weaponRogue4Text'), - notes: t('weaponRogue4Notes', { - str: 6 - }), - str: 6, - value: 70 - }, - 5: { - text: t('weaponRogue5Text'), - notes: t('weaponRogue5Notes', { - str: 8 - }), - str: 8, - value: 90 - }, - 6: { - text: t('weaponRogue6Text'), - notes: t('weaponRogue6Notes', { - str: 10 - }), - str: 10, - value: 120, - last: true - } - }, - wizard: { - 0: { - twoHanded: true, - text: t('weaponWizard0Text'), - notes: t('weaponWizard0Notes'), - value: 0 - }, - 1: { - twoHanded: true, - text: t('weaponWizard1Text'), - notes: t('weaponWizard1Notes', { - int: 3, - per: 1 - }), - int: 3, - per: 1, - value: 30 - }, - 2: { - twoHanded: true, - text: t('weaponWizard2Text'), - notes: t('weaponWizard2Notes', { - int: 6, - per: 2 - }), - int: 6, - per: 2, - value: 50 - }, - 3: { - twoHanded: true, - text: t('weaponWizard3Text'), - notes: t('weaponWizard3Notes', { - int: 9, - per: 3 - }), - int: 9, - per: 3, - value: 80 - }, - 4: { - twoHanded: true, - text: t('weaponWizard4Text'), - notes: t('weaponWizard4Notes', { - int: 12, - per: 5 - }), - int: 12, - per: 5, - value: 120 - }, - 5: { - twoHanded: true, - text: t('weaponWizard5Text'), - notes: t('weaponWizard5Notes', { - int: 15, - per: 7 - }), - int: 15, - per: 7, - value: 160 - }, - 6: { - twoHanded: true, - text: t('weaponWizard6Text'), - notes: t('weaponWizard6Notes', { - int: 18, - per: 10 - }), - int: 18, - per: 10, - value: 200, - last: true - } - }, - healer: { - 0: { - text: t('weaponHealer0Text'), - notes: t('weaponHealer0Notes'), - value: 0 - }, - 1: { - text: t('weaponHealer1Text'), - notes: t('weaponHealer1Notes', { - int: 2 - }), - int: 2, - value: 20 - }, - 2: { - text: t('weaponHealer2Text'), - notes: t('weaponHealer2Notes', { - int: 3 - }), - int: 3, - value: 30 - }, - 3: { - text: t('weaponHealer3Text'), - notes: t('weaponHealer3Notes', { - int: 5 - }), - int: 5, - value: 45 - }, - 4: { - text: t('weaponHealer4Text'), - notes: t('weaponHealer4Notes', { - int: 7 - }), - int: 7, - value: 65 - }, - 5: { - text: t('weaponHealer5Text'), - notes: t('weaponHealer5Notes', { - int: 9 - }), - int: 9, - value: 90 - }, - 6: { - text: t('weaponHealer6Text'), - notes: t('weaponHealer6Notes', { - int: 11 - }), - int: 11, - value: 120, - last: true - } - }, - special: { - 0: { - text: t('weaponSpecial0Text'), - notes: t('weaponSpecial0Notes', { - str: 20 - }), - str: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 70; - }) - }, - 1: { - text: t('weaponSpecial1Text'), - notes: t('weaponSpecial1Notes', { - attrs: 6 - }), - str: 6, - per: 6, - con: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 4; - }) - }, - 2: { - text: t('weaponSpecial2Text'), - notes: t('weaponSpecial2Notes', { - attrs: 25 - }), - str: 25, - per: 25, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.weapon_special_2 != null); - }) - }, - 3: { - text: t('weaponSpecial3Text'), - notes: t('weaponSpecial3Notes', { - attrs: 17 - }), - str: 17, - int: 17, - con: 17, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.weapon_special_3 != null); - }) - }, - critical: { - text: t('weaponSpecialCriticalText'), - notes: t('weaponSpecialCriticalNotes', { - attrs: 40 - }), - str: 40, - per: 40, - value: 200, - canOwn: (function(u) { - var ref; - return !!((ref = u.contributor) != null ? ref.critical : void 0); - }) - }, - tridentOfCrashingTides: { - text: t('weaponSpecialTridentOfCrashingTidesText'), - notes: t('weaponSpecialTridentOfCrashingTidesNotes', { - int: 15 - }), - int: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.weapon_special_tridentOfCrashingTides != null; - }) - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('weaponSpecialYetiText'), - notes: t('weaponSpecialYetiNotes', { - str: 15 - }), - str: 15, - value: 90 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('weaponSpecialSkiText'), - notes: t('weaponSpecialSkiNotes', { - str: 8 - }), - str: 8, - value: 90 - }, - candycane: { - event: EVENTS.winter, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialCandycaneText'), - notes: t('weaponSpecialCandycaneNotes', { - int: 15, - per: 7 - }), - int: 15, - per: 7, - value: 160 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('weaponSpecialSnowflakeText'), - notes: t('weaponSpecialSnowflakeNotes', { - int: 9 - }), - int: 9, - value: 90 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('weaponSpecialSpringRogueText'), - notes: t('weaponSpecialSpringRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('weaponSpecialSpringWarriorText'), - notes: t('weaponSpecialSpringWarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSpringMageText'), - notes: t('weaponSpecialSpringMageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('weaponSpecialSpringHealerText'), - notes: t('weaponSpecialSpringHealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('weaponSpecialSummerRogueText'), - notes: t('weaponSpecialSummerRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('weaponSpecialSummerWarriorText'), - notes: t('weaponSpecialSummerWarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSummerMageText'), - notes: t('weaponSpecialSummerMageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('weaponSpecialSummerHealerText'), - notes: t('weaponSpecialSummerHealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('weaponSpecialFallRogueText'), - notes: t('weaponSpecialFallRogueNotes', { - str: 8 - }), - value: 80, - str: 8, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('weaponSpecialFallWarriorText'), - notes: t('weaponSpecialFallWarriorNotes', { - str: 15 - }), - value: 90, - str: 15, - canBuy: (function() { - return true; - }) - }, - fallMage: { - event: EVENTS.fall, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialFallMageText'), - notes: t('weaponSpecialFallMageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('weaponSpecialFallHealerText'), - notes: t('weaponSpecialFallHealerNotes', { - int: 9 - }), - value: 90, - int: 9, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('weaponSpecialWinter2015RogueText'), - notes: t('weaponSpecialWinter2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('weaponSpecialWinter2015WarriorText'), - notes: t('weaponSpecialWinter2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - winter2015Mage: { - event: EVENTS.winter2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialWinter2015MageText'), - notes: t('weaponSpecialWinter2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('weaponSpecialWinter2015HealerText'), - notes: t('weaponSpecialWinter2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('weaponSpecialSpring2015RogueText'), - notes: t('weaponSpecialSpring2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('weaponSpecialSpring2015WarriorText'), - notes: t('weaponSpecialSpring2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSpring2015MageText'), - notes: t('weaponSpecialSpring2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('weaponSpecialSpring2015HealerText'), - notes: t('weaponSpecialSpring2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('weaponSpecialSummer2015RogueText'), - notes: t('weaponSpecialSummer2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('weaponSpecialSummer2015WarriorText'), - notes: t('weaponSpecialSummer2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSummer2015MageText'), - notes: t('weaponSpecialSummer2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('weaponSpecialSummer2015HealerText'), - notes: t('weaponSpecialSummer2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('weaponSpecialFall2015RogueText'), - notes: t('weaponSpecialFall2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('weaponSpecialFall2015WarriorText'), - notes: t('weaponSpecialFall2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - fall2015Mage: { - event: EVENTS.fall2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialFall2015MageText'), - notes: t('weaponSpecialFall2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('weaponSpecialFall2015HealerText'), - notes: t('weaponSpecialFall2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - } - }, - mystery: { - 201411: { - text: t('weaponMystery201411Text'), - notes: t('weaponMystery201411Notes'), - mystery: '201411', - value: 0 - }, - 201502: { - text: t('weaponMystery201502Text'), - notes: t('weaponMystery201502Notes'), - mystery: '201502', - value: 0 - }, - 201505: { - text: t('weaponMystery201505Text'), - notes: t('weaponMystery201505Notes'), - mystery: '201505', - value: 0 - }, - 301404: { - text: t('weaponMystery301404Text'), - notes: t('weaponMystery301404Notes'), - mystery: '301404', - value: 0 - } - }, - armoire: { - basicCrossbow: { - text: t('weaponArmoireBasicCrossbowText'), - notes: t('weaponArmoireBasicCrossbowNotes', { - str: 5, - per: 5, - con: 5 - }), - value: 100, - str: 5, - per: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_basicCrossbow != null; - }) - }, - lunarSceptre: { - text: t('weaponArmoireLunarSceptreText'), - notes: t('weaponArmoireLunarSceptreNotes', { - con: 7, - int: 7 - }), - value: 100, - con: 7, - int: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_lunarSceptre != null; - }) - }, - rancherLasso: { - twoHanded: true, - text: t('weaponArmoireRancherLassoText'), - notes: t('weaponArmoireRancherLassoNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_rancherLasso != null; - }) - }, - mythmakerSword: { - text: t('weaponArmoireMythmakerSwordText'), - notes: t('weaponArmoireMythmakerSwordNotes', { - attrs: 6 - }), - value: 100, - str: 6, - per: 6, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_mythmakerSword != null; - }) - }, - ironCrook: { - text: t('weaponArmoireIronCrookText'), - notes: t('weaponArmoireIronCrookNotes', { - attrs: 7 - }), - value: 100, - str: 7, - per: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_ironCrook != null; - }) - }, - goldWingStaff: { - text: t('weaponArmoireGoldWingStaffText'), - notes: t('weaponArmoireGoldWingStaffNotes', { - attrs: 4 - }), - value: 100, - con: 4, - int: 4, - per: 4, - str: 4, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_goldWingStaff != null; - }) - }, - batWand: { - text: t('weaponArmoireBatWandText'), - notes: t('weaponArmoireBatWandNotes', { - int: 10, - per: 2 - }), - value: 100, - int: 10, - per: 2, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_batWand != null; - }) - }, - shepherdsCrook: { - text: t('weaponArmoireShepherdsCrookText'), - notes: t('weaponArmoireShepherdsCrookNotes', { - con: 9 - }), - value: 100, - con: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_shepherdsCrook != null; - }) - } - } - }, - armor: { - base: { - 0: { - text: t('armorBase0Text'), - notes: t('armorBase0Notes'), - value: 0 - } - }, - warrior: { - 1: { - text: t('armorWarrior1Text'), - notes: t('armorWarrior1Notes', { - con: 3 - }), - con: 3, - value: 30 - }, - 2: { - text: t('armorWarrior2Text'), - notes: t('armorWarrior2Notes', { - con: 5 - }), - con: 5, - value: 45 - }, - 3: { - text: t('armorWarrior3Text'), - notes: t('armorWarrior3Notes', { - con: 7 - }), - con: 7, - value: 65 - }, - 4: { - text: t('armorWarrior4Text'), - notes: t('armorWarrior4Notes', { - con: 9 - }), - con: 9, - value: 90 - }, - 5: { - text: t('armorWarrior5Text'), - notes: t('armorWarrior5Notes', { - con: 11 - }), - con: 11, - value: 120, - last: true - } - }, - rogue: { - 1: { - text: t('armorRogue1Text'), - notes: t('armorRogue1Notes', { - per: 6 - }), - per: 6, - value: 30 - }, - 2: { - text: t('armorRogue2Text'), - notes: t('armorRogue2Notes', { - per: 9 - }), - per: 9, - value: 45 - }, - 3: { - text: t('armorRogue3Text'), - notes: t('armorRogue3Notes', { - per: 12 - }), - per: 12, - value: 65 - }, - 4: { - text: t('armorRogue4Text'), - notes: t('armorRogue4Notes', { - per: 15 - }), - per: 15, - value: 90 - }, - 5: { - text: t('armorRogue5Text'), - notes: t('armorRogue5Notes', { - per: 18 - }), - per: 18, - value: 120, - last: true - } - }, - wizard: { - 1: { - text: t('armorWizard1Text'), - notes: t('armorWizard1Notes', { - int: 2 - }), - int: 2, - value: 30 - }, - 2: { - text: t('armorWizard2Text'), - notes: t('armorWizard2Notes', { - int: 4 - }), - int: 4, - value: 45 - }, - 3: { - text: t('armorWizard3Text'), - notes: t('armorWizard3Notes', { - int: 6 - }), - int: 6, - value: 65 - }, - 4: { - text: t('armorWizard4Text'), - notes: t('armorWizard4Notes', { - int: 9 - }), - int: 9, - value: 90 - }, - 5: { - text: t('armorWizard5Text'), - notes: t('armorWizard5Notes', { - int: 12 - }), - int: 12, - value: 120, - last: true - } - }, - healer: { - 1: { - text: t('armorHealer1Text'), - notes: t('armorHealer1Notes', { - con: 6 - }), - con: 6, - value: 30 - }, - 2: { - text: t('armorHealer2Text'), - notes: t('armorHealer2Notes', { - con: 9 - }), - con: 9, - value: 45 - }, - 3: { - text: t('armorHealer3Text'), - notes: t('armorHealer3Notes', { - con: 12 - }), - con: 12, - value: 65 - }, - 4: { - text: t('armorHealer4Text'), - notes: t('armorHealer4Notes', { - con: 15 - }), - con: 15, - value: 90 - }, - 5: { - text: t('armorHealer5Text'), - notes: t('armorHealer5Notes', { - con: 18 - }), - con: 18, - value: 120, - last: true - } - }, - special: { - 0: { - text: t('armorSpecial0Text'), - notes: t('armorSpecial0Notes', { - con: 20 - }), - con: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - text: t('armorSpecial1Text'), - notes: t('armorSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 2; - }) - }, - 2: { - text: t('armorSpecial2Text'), - notes: t('armorSpecial2Notes', { - attrs: 25 - }), - int: 25, - con: 25, - value: 200, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 300 || (u.items.gear.owned.armor_special_2 != null); - }) - }, - finnedOceanicArmor: { - text: t('armorSpecialFinnedOceanicArmorText'), - notes: t('armorSpecialFinnedOceanicArmorNotes', { - str: 15 - }), - str: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.armor_special_finnedOceanicArmor != null; - }) - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('armorSpecialYetiText'), - notes: t('armorSpecialYetiNotes', { - con: 9 - }), - con: 9, - value: 90 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('armorSpecialSkiText'), - notes: t('armorSpecialSkiNotes', { - per: 15 - }), - per: 15, - value: 90 - }, - candycane: { - event: EVENTS.winter, - specialClass: 'wizard', - text: t('armorSpecialCandycaneText'), - notes: t('armorSpecialCandycaneNotes', { - int: 9 - }), - int: 9, - value: 90 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('armorSpecialSnowflakeText'), - notes: t('armorSpecialSnowflakeNotes', { - con: 15 - }), - con: 15, - value: 90 - }, - birthday: { - event: EVENTS.birthday, - text: t('armorSpecialBirthdayText'), - notes: t('armorSpecialBirthdayNotes'), - value: 0 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('armorSpecialSpringRogueText'), - notes: t('armorSpecialSpringRogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('armorSpecialSpringWarriorText'), - notes: t('armorSpecialSpringWarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - text: t('armorSpecialSpringMageText'), - notes: t('armorSpecialSpringMageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('armorSpecialSpringHealerText'), - notes: t('armorSpecialSpringHealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('armorSpecialSummerRogueText'), - notes: t('armorSpecialSummerRogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('armorSpecialSummerWarriorText'), - notes: t('armorSpecialSummerWarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - text: t('armorSpecialSummerMageText'), - notes: t('armorSpecialSummerMageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('armorSpecialSummerHealerText'), - notes: t('armorSpecialSummerHealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('armorSpecialFallRogueText'), - notes: t('armorSpecialFallRogueNotes', { - per: 15 - }), - value: 90, - per: 15, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('armorSpecialFallWarriorText'), - notes: t('armorSpecialFallWarriorNotes', { - con: 9 - }), - value: 90, - con: 9, - canBuy: (function() { - return true; - }) - }, - fallMage: { - event: EVENTS.fall, - specialClass: 'wizard', - text: t('armorSpecialFallMageText'), - notes: t('armorSpecialFallMageNotes', { - int: 9 - }), - value: 90, - int: 9, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('armorSpecialFallHealerText'), - notes: t('armorSpecialFallHealerNotes', { - con: 15 - }), - value: 90, - con: 15, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('armorSpecialWinter2015RogueText'), - notes: t('armorSpecialWinter2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('armorSpecialWinter2015WarriorText'), - notes: t('armorSpecialWinter2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - winter2015Mage: { - event: EVENTS.winter2015, - specialClass: 'wizard', - text: t('armorSpecialWinter2015MageText'), - notes: t('armorSpecialWinter2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('armorSpecialWinter2015HealerText'), - notes: t('armorSpecialWinter2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - birthday2015: { - text: t('armorSpecialBirthday2015Text'), - notes: t('armorSpecialBirthday2015Notes'), - value: 0, - canOwn: (function(u) { - return u.items.gear.owned.armor_special_birthday2015 != null; - }) - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('armorSpecialSpring2015RogueText'), - notes: t('armorSpecialSpring2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('armorSpecialSpring2015WarriorText'), - notes: t('armorSpecialSpring2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - text: t('armorSpecialSpring2015MageText'), - notes: t('armorSpecialSpring2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('armorSpecialSpring2015HealerText'), - notes: t('armorSpecialSpring2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('armorSpecialSummer2015RogueText'), - notes: t('armorSpecialSummer2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('armorSpecialSummer2015WarriorText'), - notes: t('armorSpecialSummer2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - text: t('armorSpecialSummer2015MageText'), - notes: t('armorSpecialSummer2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('armorSpecialSummer2015HealerText'), - notes: t('armorSpecialSummer2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('armorSpecialFall2015RogueText'), - notes: t('armorSpecialFall2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('armorSpecialFall2015WarriorText'), - notes: t('armorSpecialFall2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - fall2015Mage: { - event: EVENTS.fall2015, - specialClass: 'wizard', - text: t('armorSpecialFall2015MageText'), - notes: t('armorSpecialFall2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('armorSpecialFall2015HealerText'), - notes: t('armorSpecialFall2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - gaymerx: { - event: EVENTS.gaymerx, - text: t('armorSpecialGaymerxText'), - notes: t('armorSpecialGaymerxNotes'), - value: 0 - } - }, - mystery: { - 201402: { - text: t('armorMystery201402Text'), - notes: t('armorMystery201402Notes'), - mystery: '201402', - value: 0 - }, - 201403: { - text: t('armorMystery201403Text'), - notes: t('armorMystery201403Notes'), - mystery: '201403', - value: 0 - }, - 201405: { - text: t('armorMystery201405Text'), - notes: t('armorMystery201405Notes'), - mystery: '201405', - value: 0 - }, - 201406: { - text: t('armorMystery201406Text'), - notes: t('armorMystery201406Notes'), - mystery: '201406', - value: 0 - }, - 201407: { - text: t('armorMystery201407Text'), - notes: t('armorMystery201407Notes'), - mystery: '201407', - value: 0 - }, - 201408: { - text: t('armorMystery201408Text'), - notes: t('armorMystery201408Notes'), - mystery: '201408', - value: 0 - }, - 201409: { - text: t('armorMystery201409Text'), - notes: t('armorMystery201409Notes'), - mystery: '201409', - value: 0 - }, - 201410: { - text: t('armorMystery201410Text'), - notes: t('armorMystery201410Notes'), - mystery: '201410', - value: 0 - }, - 201412: { - text: t('armorMystery201412Text'), - notes: t('armorMystery201412Notes'), - mystery: '201412', - value: 0 - }, - 201501: { - text: t('armorMystery201501Text'), - notes: t('armorMystery201501Notes'), - mystery: '201501', - value: 0 - }, - 201503: { - text: t('armorMystery201503Text'), - notes: t('armorMystery201503Notes'), - mystery: '201503', - value: 0 - }, - 201504: { - text: t('armorMystery201504Text'), - notes: t('armorMystery201504Notes'), - mystery: '201504', - value: 0 - }, - 201506: { - text: t('armorMystery201506Text'), - notes: t('armorMystery201506Notes'), - mystery: '201506', - value: 0 - }, - 201508: { - text: t('armorMystery201508Text'), - notes: t('armorMystery201508Notes'), - mystery: '201508', - value: 0 - }, - 201509: { - text: t('armorMystery201509Text'), - notes: t('armorMystery201509Notes'), - mystery: '201509', - value: 0 - }, - 301404: { - text: t('armorMystery301404Text'), - notes: t('armorMystery301404Notes'), - mystery: '301404', - value: 0 - } - }, - armoire: { - lunarArmor: { - text: t('armorArmoireLunarArmorText'), - notes: t('armorArmoireLunarArmorNotes', { - str: 7, - int: 7 - }), - value: 100, - str: 7, - int: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_lunarArmor != null; - }) - }, - gladiatorArmor: { - text: t('armorArmoireGladiatorArmorText'), - notes: t('armorArmoireGladiatorArmorNotes', { - str: 7, - per: 7 - }), - value: 100, - str: 7, - per: 7, - set: 'gladiator', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_gladiatorArmor != null; - }) - }, - rancherRobes: { - text: t('armorArmoireRancherRobesText'), - notes: t('armorArmoireRancherRobesNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_rancherRobes != null; - }) - }, - goldenToga: { - text: t('armorArmoireGoldenTogaText'), - notes: t('armorArmoireGoldenTogaNotes', { - attrs: 8 - }), - value: 100, - str: 8, - con: 8, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_goldenToga != null; - }) - }, - hornedIronArmor: { - text: t('armorArmoireHornedIronArmorText'), - notes: t('armorArmoireHornedIronArmorNotes', { - con: 9, - per: 7 - }), - value: 100, - con: 9, - per: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_hornedIronArmor != null; - }) - }, - plagueDoctorOvercoat: { - text: t('armorArmoirePlagueDoctorOvercoatText'), - notes: t('armorArmoirePlagueDoctorOvercoatNotes', { - int: 6, - str: 5, - con: 6 - }), - value: 100, - int: 6, - str: 5, - con: 6, - set: 'plagueDoctor', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_plagueDoctorOvercoat != null; - }) - }, - shepherdRobes: { - text: t('armorArmoireShepherdRobesText'), - notes: t('armorArmoireShepherdRobesNotes', { - attrs: 9 - }), - value: 100, - str: 9, - per: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_shepherdRobes != null; - }) - }, - royalRobes: { - text: t('armorArmoireRoyalRobesText'), - notes: t('armorArmoireRoyalRobesNotes', { - attrs: 5 - }), - value: 100, - con: 5, - per: 5, - int: 5, - set: 'royal', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_royalRobes != null; - }) - } - } - }, - head: { - base: { - 0: { - text: t('headBase0Text'), - notes: t('headBase0Notes'), - value: 0 - } - }, - warrior: { - 1: { - text: t('headWarrior1Text'), - notes: t('headWarrior1Notes', { - str: 2 - }), - str: 2, - value: 15 - }, - 2: { - text: t('headWarrior2Text'), - notes: t('headWarrior2Notes', { - str: 4 - }), - str: 4, - value: 25 - }, - 3: { - text: t('headWarrior3Text'), - notes: t('headWarrior3Notes', { - str: 6 - }), - str: 6, - value: 40 - }, - 4: { - text: t('headWarrior4Text'), - notes: t('headWarrior4Notes', { - str: 9 - }), - str: 9, - value: 60 - }, - 5: { - text: t('headWarrior5Text'), - notes: t('headWarrior5Notes', { - str: 12 - }), - str: 12, - value: 80, - last: true - } - }, - rogue: { - 1: { - text: t('headRogue1Text'), - notes: t('headRogue1Notes', { - per: 2 - }), - per: 2, - value: 15 - }, - 2: { - text: t('headRogue2Text'), - notes: t('headRogue2Notes', { - per: 4 - }), - per: 4, - value: 25 - }, - 3: { - text: t('headRogue3Text'), - notes: t('headRogue3Notes', { - per: 6 - }), - per: 6, - value: 40 - }, - 4: { - text: t('headRogue4Text'), - notes: t('headRogue4Notes', { - per: 9 - }), - per: 9, - value: 60 - }, - 5: { - text: t('headRogue5Text'), - notes: t('headRogue5Notes', { - per: 12 - }), - per: 12, - value: 80, - last: true - } - }, - wizard: { - 1: { - text: t('headWizard1Text'), - notes: t('headWizard1Notes', { - per: 2 - }), - per: 2, - value: 15 - }, - 2: { - text: t('headWizard2Text'), - notes: t('headWizard2Notes', { - per: 3 - }), - per: 3, - value: 25 - }, - 3: { - text: t('headWizard3Text'), - notes: t('headWizard3Notes', { - per: 5 - }), - per: 5, - value: 40 - }, - 4: { - text: t('headWizard4Text'), - notes: t('headWizard4Notes', { - per: 7 - }), - per: 7, - value: 60 - }, - 5: { - text: t('headWizard5Text'), - notes: t('headWizard5Notes', { - per: 10 - }), - per: 10, - value: 80, - last: true - } - }, - healer: { - 1: { - text: t('headHealer1Text'), - notes: t('headHealer1Notes', { - int: 2 - }), - int: 2, - value: 15 - }, - 2: { - text: t('headHealer2Text'), - notes: t('headHealer2Notes', { - int: 3 - }), - int: 3, - value: 25 - }, - 3: { - text: t('headHealer3Text'), - notes: t('headHealer3Notes', { - int: 5 - }), - int: 5, - value: 40 - }, - 4: { - text: t('headHealer4Text'), - notes: t('headHealer4Notes', { - int: 7 - }), - int: 7, - value: 60 - }, - 5: { - text: t('headHealer5Text'), - notes: t('headHealer5Notes', { - int: 9 - }), - int: 9, - value: 80, - last: true - } - }, - special: { - 0: { - text: t('headSpecial0Text'), - notes: t('headSpecial0Notes', { - int: 20 - }), - int: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - text: t('headSpecial1Text'), - notes: t('headSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 3; - }) - }, - 2: { - text: t('headSpecial2Text'), - notes: t('headSpecial2Notes', { - attrs: 25 - }), - int: 25, - str: 25, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.head_special_2 != null); - }) - }, - fireCoralCirclet: { - text: t('headSpecialFireCoralCircletText'), - notes: t('headSpecialFireCoralCircletNotes', { - per: 15 - }), - per: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.head_special_fireCoralCirclet != null; - }) - }, - nye: { - event: EVENTS.winter, - text: t('headSpecialNyeText'), - notes: t('headSpecialNyeNotes'), - value: 0 - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('headSpecialYetiText'), - notes: t('headSpecialYetiNotes', { - str: 9 - }), - str: 9, - value: 60 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('headSpecialSkiText'), - notes: t('headSpecialSkiNotes', { - per: 9 - }), - per: 9, - value: 60 - }, - candycane: { - event: EVENTS.winter, - specialClass: 'wizard', - text: t('headSpecialCandycaneText'), - notes: t('headSpecialCandycaneNotes', { - per: 7 - }), - per: 7, - value: 60 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('headSpecialSnowflakeText'), - notes: t('headSpecialSnowflakeNotes', { - int: 7 - }), - int: 7, - value: 60 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('headSpecialSpringRogueText'), - notes: t('headSpecialSpringRogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('headSpecialSpringWarriorText'), - notes: t('headSpecialSpringWarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - text: t('headSpecialSpringMageText'), - notes: t('headSpecialSpringMageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('headSpecialSpringHealerText'), - notes: t('headSpecialSpringHealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('headSpecialSummerRogueText'), - notes: t('headSpecialSummerRogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('headSpecialSummerWarriorText'), - notes: t('headSpecialSummerWarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - text: t('headSpecialSummerMageText'), - notes: t('headSpecialSummerMageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('headSpecialSummerHealerText'), - notes: t('headSpecialSummerHealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('headSpecialFallRogueText'), - notes: t('headSpecialFallRogueNotes', { - per: 9 - }), - value: 60, - per: 9, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('headSpecialFallWarriorText'), - notes: t('headSpecialFallWarriorNotes', { - str: 9 - }), - value: 60, - str: 9, - canBuy: (function() { - return true; - }) - }, - fallMage: { - event: EVENTS.fall, - specialClass: 'wizard', - text: t('headSpecialFallMageText'), - notes: t('headSpecialFallMageNotes', { - per: 7 - }), - value: 60, - per: 7, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('headSpecialFallHealerText'), - notes: t('headSpecialFallHealerNotes', { - int: 7 - }), - value: 60, - int: 7, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('headSpecialWinter2015RogueText'), - notes: t('headSpecialWinter2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('headSpecialWinter2015WarriorText'), - notes: t('headSpecialWinter2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - winter2015Mage: { - event: EVENTS.winter2015, - specialClass: 'wizard', - text: t('headSpecialWinter2015MageText'), - notes: t('headSpecialWinter2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('headSpecialWinter2015HealerText'), - notes: t('headSpecialWinter2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - nye2014: { - text: t('headSpecialNye2014Text'), - notes: t('headSpecialNye2014Notes'), - value: 0, - canOwn: (function(u) { - return u.items.gear.owned.head_special_nye2014 != null; - }) - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('headSpecialSpring2015RogueText'), - notes: t('headSpecialSpring2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('headSpecialSpring2015WarriorText'), - notes: t('headSpecialSpring2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - text: t('headSpecialSpring2015MageText'), - notes: t('headSpecialSpring2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('headSpecialSpring2015HealerText'), - notes: t('headSpecialSpring2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('headSpecialSummer2015RogueText'), - notes: t('headSpecialSummer2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('headSpecialSummer2015WarriorText'), - notes: t('headSpecialSummer2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - text: t('headSpecialSummer2015MageText'), - notes: t('headSpecialSummer2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('headSpecialSummer2015HealerText'), - notes: t('headSpecialSummer2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('headSpecialFall2015RogueText'), - notes: t('headSpecialFall2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('headSpecialFall2015WarriorText'), - notes: t('headSpecialFall2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - fall2015Mage: { - event: EVENTS.fall2015, - specialClass: 'wizard', - text: t('headSpecialFall2015MageText'), - notes: t('headSpecialFall2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('headSpecialFall2015HealerText'), - notes: t('headSpecialFall2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - gaymerx: { - event: EVENTS.gaymerx, - text: t('headSpecialGaymerxText'), - notes: t('headSpecialGaymerxNotes'), - value: 0 - } - }, - mystery: { - 201402: { - text: t('headMystery201402Text'), - notes: t('headMystery201402Notes'), - mystery: '201402', - value: 0 - }, - 201405: { - text: t('headMystery201405Text'), - notes: t('headMystery201405Notes'), - mystery: '201405', - value: 0 - }, - 201406: { - text: t('headMystery201406Text'), - notes: t('headMystery201406Notes'), - mystery: '201406', - value: 0 - }, - 201407: { - text: t('headMystery201407Text'), - notes: t('headMystery201407Notes'), - mystery: '201407', - value: 0 - }, - 201408: { - text: t('headMystery201408Text'), - notes: t('headMystery201408Notes'), - mystery: '201408', - value: 0 - }, - 201411: { - text: t('headMystery201411Text'), - notes: t('headMystery201411Notes'), - mystery: '201411', - value: 0 - }, - 201412: { - text: t('headMystery201412Text'), - notes: t('headMystery201412Notes'), - mystery: '201412', - value: 0 - }, - 201501: { - text: t('headMystery201501Text'), - notes: t('headMystery201501Notes'), - mystery: '201501', - value: 0 - }, - 201505: { - text: t('headMystery201505Text'), - notes: t('headMystery201505Notes'), - mystery: '201505', - value: 0 - }, - 201508: { - text: t('headMystery201508Text'), - notes: t('headMystery201508Notes'), - mystery: '201508', - value: 0 - }, - 201509: { - text: t('headMystery201509Text'), - notes: t('headMystery201509Notes'), - mystery: '201509', - value: 0 - }, - 301404: { - text: t('headMystery301404Text'), - notes: t('headMystery301404Notes'), - mystery: '301404', - value: 0 - }, - 301405: { - text: t('headMystery301405Text'), - notes: t('headMystery301405Notes'), - mystery: '301405', - value: 0 - } - }, - armoire: { - lunarCrown: { - text: t('headArmoireLunarCrownText'), - notes: t('headArmoireLunarCrownNotes', { - con: 7, - per: 7 - }), - value: 100, - con: 7, - per: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_lunarCrown != null; - }) - }, - redHairbow: { - text: t('headArmoireRedHairbowText'), - notes: t('headArmoireRedHairbowNotes', { - str: 5, - int: 5, - con: 5 - }), - value: 100, - str: 5, - int: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_redHairbow != null; - }) - }, - violetFloppyHat: { - text: t('headArmoireVioletFloppyHatText'), - notes: t('headArmoireVioletFloppyHatNotes', { - per: 5, - int: 5, - con: 5 - }), - value: 100, - per: 5, - int: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_violetFloppyHat != null; - }) - }, - gladiatorHelm: { - text: t('headArmoireGladiatorHelmText'), - notes: t('headArmoireGladiatorHelmNotes', { - per: 7, - int: 7 - }), - value: 100, - per: 7, - int: 7, - set: 'gladiator', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_gladiatorHelm != null; - }) - }, - rancherHat: { - text: t('headArmoireRancherHatText'), - notes: t('headArmoireRancherHatNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_rancherHat != null; - }) - }, - royalCrown: { - text: t('headArmoireRoyalCrownText'), - notes: t('headArmoireRoyalCrownNotes', { - str: 10 - }), - value: 100, - str: 10, - set: 'royal', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_royalCrown != null; - }) - }, - blueHairbow: { - text: t('headArmoireBlueHairbowText'), - notes: t('headArmoireBlueHairbowNotes', { - per: 5, - int: 5, - con: 5 - }), - value: 100, - per: 5, - int: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blueHairbow != null; - }) - }, - goldenLaurels: { - text: t('headArmoireGoldenLaurelsText'), - notes: t('headArmoireGoldenLaurelsNotes', { - attrs: 8 - }), - value: 100, - per: 8, - con: 8, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_goldenLaurels != null; - }) - }, - hornedIronHelm: { - text: t('headArmoireHornedIronHelmText'), - notes: t('headArmoireHornedIronHelmNotes', { - con: 9, - str: 7 - }), - value: 100, - con: 9, - str: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_hornedIronHelm != null; - }) - }, - yellowHairbow: { - text: t('headArmoireYellowHairbowText'), - notes: t('headArmoireYellowHairbowNotes', { - attrs: 5 - }), - value: 100, - int: 5, - per: 5, - str: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_yellowHairbow != null; - }) - }, - redFloppyHat: { - text: t('headArmoireRedFloppyHatText'), - notes: t('headArmoireRedFloppyHatNotes', { - attrs: 6 - }), - value: 100, - con: 6, - int: 6, - per: 6, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_redFloppyHat != null; - }) - }, - plagueDoctorHat: { - text: t('headArmoirePlagueDoctorHatText'), - notes: t('headArmoirePlagueDoctorHatNotes', { - int: 5, - str: 6, - con: 5 - }), - value: 100, - int: 5, - str: 6, - con: 5, - set: 'plagueDoctor', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_plagueDoctorHat != null; - }) - }, - blackCat: { - text: t('headArmoireBlackCatText'), - notes: t('headArmoireBlackCatNotes', { - attrs: 9 - }), - value: 100, - int: 9, - per: 9, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blackCat != null; - }) - }, - orangeCat: { - text: t('headArmoireOrangeCatText'), - notes: t('headArmoireOrangeCatNotes', { - attrs: 9 - }), - value: 100, - con: 9, - str: 9, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_orangeCat != null; - }) - }, - blueFloppyHat: { - text: t('headArmoireBlueFloppyHatText'), - notes: t('headArmoireBlueFloppyHatNotes', { - attrs: 7 - }), - value: 100, - per: 7, - int: 7, - con: 7, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blueFloppyHat != null; - }) - }, - shepherdHeaddress: { - text: t('headArmoireShepherdHeaddressText'), - notes: t('headArmoireShepherdHeaddressNotes', { - int: 9 - }), - value: 100, - int: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_shepherdHeaddress != null; - }) - } - } - }, - shield: { - base: { - 0: { - text: t('shieldBase0Text'), - notes: t('shieldBase0Notes'), - value: 0 - } - }, - warrior: { - 1: { - text: t('shieldWarrior1Text'), - notes: t('shieldWarrior1Notes', { - con: 2 - }), - con: 2, - value: 20 - }, - 2: { - text: t('shieldWarrior2Text'), - notes: t('shieldWarrior2Notes', { - con: 3 - }), - con: 3, - value: 35 - }, - 3: { - text: t('shieldWarrior3Text'), - notes: t('shieldWarrior3Notes', { - con: 5 - }), - con: 5, - value: 50 - }, - 4: { - text: t('shieldWarrior4Text'), - notes: t('shieldWarrior4Notes', { - con: 7 - }), - con: 7, - value: 70 - }, - 5: { - text: t('shieldWarrior5Text'), - notes: t('shieldWarrior5Notes', { - con: 9 - }), - con: 9, - value: 90, - last: true - } - }, - rogue: { - 0: { - text: t('weaponRogue0Text'), - notes: t('weaponRogue0Notes'), - str: 0, - value: 0 - }, - 1: { - text: t('weaponRogue1Text'), - notes: t('weaponRogue1Notes', { - str: 2 - }), - str: 2, - value: 20 - }, - 2: { - text: t('weaponRogue2Text'), - notes: t('weaponRogue2Notes', { - str: 3 - }), - str: 3, - value: 35 - }, - 3: { - text: t('weaponRogue3Text'), - notes: t('weaponRogue3Notes', { - str: 4 - }), - str: 4, - value: 50 - }, - 4: { - text: t('weaponRogue4Text'), - notes: t('weaponRogue4Notes', { - str: 6 - }), - str: 6, - value: 70 - }, - 5: { - text: t('weaponRogue5Text'), - notes: t('weaponRogue5Notes', { - str: 8 - }), - str: 8, - value: 90 - }, - 6: { - text: t('weaponRogue6Text'), - notes: t('weaponRogue6Notes', { - str: 10 - }), - str: 10, - value: 120, - last: true - } - }, - wizard: {}, - healer: { - 1: { - text: t('shieldHealer1Text'), - notes: t('shieldHealer1Notes', { - con: 2 - }), - con: 2, - value: 20 - }, - 2: { - text: t('shieldHealer2Text'), - notes: t('shieldHealer2Notes', { - con: 4 - }), - con: 4, - value: 35 - }, - 3: { - text: t('shieldHealer3Text'), - notes: t('shieldHealer3Notes', { - con: 6 - }), - con: 6, - value: 50 - }, - 4: { - text: t('shieldHealer4Text'), - notes: t('shieldHealer4Notes', { - con: 9 - }), - con: 9, - value: 70 - }, - 5: { - text: t('shieldHealer5Text'), - notes: t('shieldHealer5Notes', { - con: 12 - }), - con: 12, - value: 90, - last: true - } - }, - special: { - 0: { - text: t('shieldSpecial0Text'), - notes: t('shieldSpecial0Notes', { - per: 20 - }), - per: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - text: t('shieldSpecial1Text'), - notes: t('shieldSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 5; - }) - }, - goldenknight: { - text: t('shieldSpecialGoldenknightText'), - notes: t('shieldSpecialGoldenknightNotes', { - attrs: 25 - }), - con: 25, - per: 25, - value: 200, - canOwn: (function(u) { - return u.items.gear.owned.shield_special_goldenknight != null; - }) - }, - moonpearlShield: { - text: t('shieldSpecialMoonpearlShieldText'), - notes: t('shieldSpecialMoonpearlShieldNotes', { - con: 15 - }), - con: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.shield_special_moonpearlShield != null; - }) - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('shieldSpecialYetiText'), - notes: t('shieldSpecialYetiNotes', { - con: 7 - }), - con: 7, - value: 70 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('weaponSpecialSkiText'), - notes: t('weaponSpecialSkiNotes', { - str: 8 - }), - str: 8, - value: 90 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('shieldSpecialSnowflakeText'), - notes: t('shieldSpecialSnowflakeNotes', { - con: 9 - }), - con: 9, - value: 70 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('shieldSpecialSpringRogueText'), - notes: t('shieldSpecialSpringRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('shieldSpecialSpringWarriorText'), - notes: t('shieldSpecialSpringWarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('shieldSpecialSpringHealerText'), - notes: t('shieldSpecialSpringHealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('shieldSpecialSummerRogueText'), - notes: t('shieldSpecialSummerRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('shieldSpecialSummerWarriorText'), - notes: t('shieldSpecialSummerWarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('shieldSpecialSummerHealerText'), - notes: t('shieldSpecialSummerHealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('shieldSpecialFallRogueText'), - notes: t('shieldSpecialFallRogueNotes', { - str: 8 - }), - value: 80, - str: 8, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('shieldSpecialFallWarriorText'), - notes: t('shieldSpecialFallWarriorNotes', { - con: 7 - }), - value: 70, - con: 7, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('shieldSpecialFallHealerText'), - notes: t('shieldSpecialFallHealerNotes', { - con: 9 - }), - value: 70, - con: 9, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('shieldSpecialWinter2015RogueText'), - notes: t('shieldSpecialWinter2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('shieldSpecialWinter2015WarriorText'), - notes: t('shieldSpecialWinter2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('shieldSpecialWinter2015HealerText'), - notes: t('shieldSpecialWinter2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('shieldSpecialSpring2015RogueText'), - notes: t('shieldSpecialSpring2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('shieldSpecialSpring2015WarriorText'), - notes: t('shieldSpecialSpring2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('shieldSpecialSpring2015HealerText'), - notes: t('shieldSpecialSpring2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('shieldSpecialSummer2015RogueText'), - notes: t('shieldSpecialSummer2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('shieldSpecialSummer2015WarriorText'), - notes: t('shieldSpecialSummer2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('shieldSpecialSummer2015HealerText'), - notes: t('shieldSpecialSummer2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('shieldSpecialFall2015RogueText'), - notes: t('shieldSpecialFall2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('shieldSpecialFall2015WarriorText'), - notes: t('shieldSpecialFall2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('shieldSpecialFall2015HealerText'), - notes: t('shieldSpecialFall2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - } - }, - mystery: { - 301405: { - text: t('shieldMystery301405Text'), - notes: t('shieldMystery301405Notes'), - mystery: '301405', - value: 0 - } - }, - armoire: { - gladiatorShield: { - text: t('shieldArmoireGladiatorShieldText'), - notes: t('shieldArmoireGladiatorShieldNotes', { - con: 5, - str: 5 - }), - value: 100, - con: 5, - str: 5, - set: 'gladiator', - canOwn: (function(u) { - return u.items.gear.owned.shield_armoire_gladiatorShield != null; - }) - }, - midnightShield: { - text: t('shieldArmoireMidnightShieldText'), - notes: t('shieldArmoireMidnightShieldNotes', { - con: 10, - str: 2 - }), - value: 100, - con: 10, - str: 2, - canOwn: (function(u) { - return u.items.gear.owned.shield_armoire_midnightShield != null; - }) - }, - royalCane: { - text: t('shieldArmoireRoyalCaneText'), - notes: t('shieldArmoireRoyalCaneNotes', { - attrs: 5 - }), - value: 100, - con: 5, - int: 5, - per: 5, - set: 'royal', - canOwn: (function(u) { - return u.items.gear.owned.shield_armoire_royalCane != null; - }) - } - } - }, - back: { - base: { - 0: { - text: t('backBase0Text'), - notes: t('backBase0Notes'), - value: 0 - } - }, - mystery: { - 201402: { - text: t('backMystery201402Text'), - notes: t('backMystery201402Notes'), - mystery: '201402', - value: 0 - }, - 201404: { - text: t('backMystery201404Text'), - notes: t('backMystery201404Notes'), - mystery: '201404', - value: 0 - }, - 201410: { - text: t('backMystery201410Text'), - notes: t('backMystery201410Notes'), - mystery: '201410', - value: 0 - }, - 201504: { - text: t('backMystery201504Text'), - notes: t('backMystery201504Notes'), - mystery: '201504', - value: 0 - }, - 201507: { - text: t('backMystery201507Text'), - notes: t('backMystery201507Notes'), - mystery: '201507', - value: 0 - }, - 201510: { - text: t('backMystery201510Text'), - notes: t('backMystery201510Notes'), - mystery: '201510', - value: 0 - } - }, - special: { - wondercon_red: { - text: t('backSpecialWonderconRedText'), - notes: t('backSpecialWonderconRedNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - text: t('backSpecialWonderconBlackText'), - notes: t('backSpecialWonderconBlackNotes'), - value: 0, - mystery: 'wondercon' - } - } - }, - body: { - base: { - 0: { - text: t('bodyBase0Text'), - notes: t('bodyBase0Notes'), - value: 0 - } - }, - special: { - wondercon_red: { - text: t('bodySpecialWonderconRedText'), - notes: t('bodySpecialWonderconRedNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_gold: { - text: t('bodySpecialWonderconGoldText'), - notes: t('bodySpecialWonderconGoldNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - text: t('bodySpecialWonderconBlackText'), - notes: t('bodySpecialWonderconBlackNotes'), - value: 0, - mystery: 'wondercon' - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('bodySpecialSummerHealerText'), - notes: t('bodySpecialSummerHealerNotes'), - value: 20 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - text: t('bodySpecialSummerMageText'), - notes: t('bodySpecialSummerMageNotes'), - value: 20 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('bodySpecialSummer2015HealerText'), - notes: t('bodySpecialSummer2015HealerNotes'), - value: 20 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - text: t('bodySpecialSummer2015MageText'), - notes: t('bodySpecialSummer2015MageNotes'), - value: 20 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('bodySpecialSummer2015RogueText'), - notes: t('bodySpecialSummer2015RogueNotes'), - value: 20 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('bodySpecialSummer2015WarriorText'), - notes: t('bodySpecialSummer2015WarriorNotes'), - value: 20 - } - } - }, - headAccessory: { - base: { - 0: { - text: t('headAccessoryBase0Text'), - notes: t('headAccessoryBase0Notes'), - value: 0, - last: true - } - }, - special: { - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('headAccessorySpecialSpringRogueText'), - notes: t('headAccessorySpecialSpringRogueNotes'), - value: 20 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('headAccessorySpecialSpringWarriorText'), - notes: t('headAccessorySpecialSpringWarriorNotes'), - value: 20 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - text: t('headAccessorySpecialSpringMageText'), - notes: t('headAccessorySpecialSpringMageNotes'), - value: 20 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('headAccessorySpecialSpringHealerText'), - notes: t('headAccessorySpecialSpringHealerNotes'), - value: 20 - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('headAccessorySpecialSpring2015RogueText'), - notes: t('headAccessorySpecialSpring2015RogueNotes'), - value: 20 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('headAccessorySpecialSpring2015WarriorText'), - notes: t('headAccessorySpecialSpring2015WarriorNotes'), - value: 20 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - text: t('headAccessorySpecialSpring2015MageText'), - notes: t('headAccessorySpecialSpring2015MageNotes'), - value: 20 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('headAccessorySpecialSpring2015HealerText'), - notes: t('headAccessorySpecialSpring2015HealerNotes'), - value: 20 - }, - bearEars: { - gearSet: 'animal', - text: t('headAccessoryBearEarsText'), - notes: t('headAccessoryBearEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_bearEars != null; - }), - canBuy: (function() { - return true; - }) - }, - cactusEars: { - gearSet: 'animal', - text: t('headAccessoryCactusEarsText'), - notes: t('headAccessoryCactusEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_cactusEars != null; - }), - canBuy: (function() { - return true; - }) - }, - foxEars: { - gearSet: 'animal', - text: t('headAccessoryFoxEarsText'), - notes: t('headAccessoryFoxEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_foxEars != null; - }), - canBuy: (function() { - return true; - }) - }, - lionEars: { - gearSet: 'animal', - text: t('headAccessoryLionEarsText'), - notes: t('headAccessoryLionEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_lionEars != null; - }), - canBuy: (function() { - return true; - }) - }, - pandaEars: { - gearSet: 'animal', - text: t('headAccessoryPandaEarsText'), - notes: t('headAccessoryPandaEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_pandaEars != null; - }), - canBuy: (function() { - return true; - }) - }, - pigEars: { - gearSet: 'animal', - text: t('headAccessoryPigEarsText'), - notes: t('headAccessoryPigEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_pigEars != null; - }), - canBuy: (function() { - return true; - }) - }, - tigerEars: { - gearSet: 'animal', - text: t('headAccessoryTigerEarsText'), - notes: t('headAccessoryTigerEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_tigerEars != null; - }), - canBuy: (function() { - return true; - }) - }, - wolfEars: { - gearSet: 'animal', - text: t('headAccessoryWolfEarsText'), - notes: t('headAccessoryWolfEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_wolfEars != null; - }), - canBuy: (function() { - return true; - }) - } - }, - mystery: { - 201403: { - text: t('headAccessoryMystery201403Text'), - notes: t('headAccessoryMystery201403Notes'), - mystery: '201403', - value: 0 - }, - 201404: { - text: t('headAccessoryMystery201404Text'), - notes: t('headAccessoryMystery201404Notes'), - mystery: '201404', - value: 0 - }, - 201409: { - text: t('headAccessoryMystery201409Text'), - notes: t('headAccessoryMystery201409Notes'), - mystery: '201409', - value: 0 - }, - 201502: { - text: t('headAccessoryMystery201502Text'), - notes: t('headAccessoryMystery201502Notes'), - mystery: '201502', - value: 0 - }, - 201510: { - text: t('headAccessoryMystery201510Text'), - notes: t('headAccessoryMystery201510Notes'), - mystery: '201510', - value: 0 - }, - 301405: { - text: t('headAccessoryMystery301405Text'), - notes: t('headAccessoryMystery301405Notes'), - mystery: '301405', - value: 0 - } - } - }, - eyewear: { - base: { - 0: { - text: t('eyewearBase0Text'), - notes: t('eyewearBase0Notes'), - value: 0, - last: true - } - }, - special: { - wondercon_red: { - text: t('eyewearSpecialWonderconRedText'), - notes: t('eyewearSpecialWonderconRedNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - text: t('eyewearSpecialWonderconBlackText'), - notes: t('eyewearSpecialWonderconBlackNotes'), - value: 0, - mystery: 'wondercon' - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('eyewearSpecialSummerRogueText'), - notes: t('eyewearSpecialSummerRogueNotes'), - value: 20 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('eyewearSpecialSummerWarriorText'), - notes: t('eyewearSpecialSummerWarriorNotes'), - value: 20 - } - }, - mystery: { - 201503: { - text: t('eyewearMystery201503Text'), - notes: t('eyewearMystery201503Notes'), - mystery: '201503', - value: 0 - }, - 201506: { - text: t('eyewearMystery201506Text'), - notes: t('eyewearMystery201506Notes'), - mystery: '201506', - value: 0 - }, - 201507: { - text: t('eyewearMystery201507Text'), - notes: t('eyewearMystery201507Notes'), - mystery: '201507', - value: 0 - }, - 301404: { - text: t('eyewearMystery301404Text'), - notes: t('eyewearMystery301404Notes'), - mystery: '301404', - value: 0 - }, - 301405: { - text: t('eyewearMystery301405Text'), - notes: t('eyewearMystery301405Notes'), - mystery: '301405', - value: 0 - } - }, - armoire: { - plagueDoctorMask: { - text: t('eyewearArmoirePlagueDoctorMaskText'), - notes: t('eyewearArmoirePlagueDoctorMaskNotes'), - value: 100, - set: 'plagueDoctor', - canOwn: (function(u) { - return u.items.gear.owned.eyewear_armoire_plagueDoctorMask != null; - }) - } - } - } -}; - - -/* - The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since - they are needed in different forms at different points in the app - */ - -api.gear = { - tree: gear, - flat: {} -}; - -_.each(GEAR_TYPES, function(type) { - return _.each(CLASSES.concat(['base', 'special', 'mystery', 'armoire']), function(klass) { - return _.each(gear[type][klass], function(item, i) { - var _canOwn, key; - key = type + "_" + klass + "_" + i; - _.defaults(item, { - type: type, - key: key, - klass: klass, - index: i, - str: 0, - int: 0, - per: 0, - con: 0, - canBuy: (function() { - return false; - }) - }); - if (item.event) { - _canOwn = item.canOwn || (function() { - return true; - }); - item.canOwn = function(u) { - return _canOwn(u) && ((u.items.gear.owned[key] != null) || (moment().isAfter(item.event.start) && moment().isBefore(item.event.end))) && (item.specialClass ? u.stats["class"] === item.specialClass : true); - }; - } - if (item.mystery) { - item.canOwn = function(u) { - return u.items.gear.owned[key] != null; - }; - } - return api.gear.flat[key] = item; - }); - }); -}); - +api.gear = gear; /* Time Traveler Store, mystery sets need their items mapped in diff --git a/common/script/src/content/gear/index.js b/common/script/src/content/gear/index.js deleted file mode 100644 index 2c226511bd..0000000000 --- a/common/script/src/content/gear/index.js +++ /dev/null @@ -1,119 +0,0 @@ -import {each, defaults} from 'lodash'; -import moment from 'moment'; - -//-------------------------------------------------- -// Gear is structured by equipment type, but organized by set. Each set exports the equipment for each type that it has -// -// The class sets have numbered key values, as they are purchased sequentially -// -// : { -// key: __, -// type: , -// klass: , -// index: , -// text: t(Text), -// notes: t(Notes { -// -// }), -// con: , -// int: , -// per: , -// str: , -// value: , -// last: , -// -// event: , -// canOwn: , -// mystery: -// } -// -// - What type of equipment it is (armor, head, weapon, etc) -// - What set this gear is a part of (special, mystery, warrior, etc) -// - The order in this particular set -// - CamelCased version of key -// -// - if gear has stat bonuses, they are automatically applied to notes -// -// - Boost to con, defaults to 0 -// - Boost to int, defaults to 0 -// - Boost to per, defaults to 0 -// - Boost to str, defaults to 0 -// -// - Price in gold -// - whether this is the last in a particular class set -// -// - the event key, present if gear is part of an event -// - a function that determines whether or not gear can be purchased in the rewards column -// - the mystery set key, present if item is a mystery item -// -//-------------------------------------------------- - -import classes from '../classes'; - -import weapon from './weapon'; -import armor from './armor'; -import head from './head'; -import shield from './shield'; -import back from './back'; -import body from './body'; -import headAccessory from './head-accessory'; -import eyewear from './eyewear'; - -const GEAR_TYPES = [ 'weapon', 'armor', 'head', 'shield', 'body', 'back', 'headAccessory', 'eyewear'] - -let gear = { - weapon: weapon, - armor: armor, - head: head, - shield: shield, - back: back, - body: body, - headAccessory: headAccessory, - eyewear: eyewear, -}; - -let flat = {}; - - -// The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since -// they are needed in different forms at different points in the app - -each(GEAR_TYPES, (type) => { - let classTypes = classes.concat(['base', 'special', 'mystery', 'armoire']); - - each(classTypes, (klass) => { - each(gear[type][klass], (item, i) => { - let key = type + "_" + klass + "_" + i; - defaults(item, { - type: type, - key: key, - klass: klass, - index: i, - str: 0, - int: 0, - per: 0, - con: 0 - }); - if (item.event) { - let _canOwn = item.canOwn || (() => { - return true; - }); - item.canOwn = (u) => { - return _canOwn(u) && ((u.items.gear.owned[key] != null) || (moment().isAfter(item.event.start) && moment().isBefore(item.event.end))) && (item.specialClass ? u.stats["class"] === item.specialClass : true); - }; - } - if (item.mystery) { - item.canOwn = (u) => { - return u.items.gear.owned[key] != null; - }; - } - flat[key] = item; - }); - }); -}); - -export default { - tree: gear, - flat: flat, - gearTypes: GEAR_TYPES -}; diff --git a/common/script/src/content/gear/sets/armoire.js b/common/script/src/content/gear/sets/armoire.js deleted file mode 100644 index fd76442a8d..0000000000 --- a/common/script/src/content/gear/sets/armoire.js +++ /dev/null @@ -1,400 +0,0 @@ -import { - translator as t, - setGearSetDefaults -} from '../../helpers'; - -let armor = { - lunarArmor: { - value: 100, - str: 7, - int: 7, - set: 'soothing', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_lunarArmor != null; - }) - }, - gladiatorArmor: { - value: 100, - str: 7, - per: 7, - set: 'gladiator', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_gladiatorArmor != null; - }) - }, - rancherRobes: { - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_rancherRobes != null; - }) - }, - goldenToga: { - text: t('armorArmoireGoldenTogaText'), - notes: t('armorArmoireGoldenTogaNotes', { - attrs: 8 - }), - value: 100, - str: 8, - con: 8, - set: 'goldenToga', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_goldenToga != null; - }) - }, - hornedIronArmor: { - value: 100, - con: 9, - per: 7, - set: 'hornedIron', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_hornedIronArmor != null; - }) - }, - plagueDoctorOvercoat: { - value: 100, - int: 6, - str: 5, - con: 6, - set: 'plagueDoctor', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_plagueDoctorOvercoat != null; - }) - }, - shepherdRobes: { - value: 100, - str: 9, - per: 9, - notes: t('armorArmoireShepherdRobesNotes', { - attrs: 9 - }), - set: 'shepherd', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_shepherdRobes != null; - }) - }, - royalRobes: { - value: 100, - con: 5, - int: 5, - per: 5, - notes: t('armorArmoireRoyalRobesNotes', { - attrs: 9 - }), - set: 'royal', - canOwn: ((u) => { - return u.items.gear.owned.armor_armoire_royalRobes != null; - }) - } -}; - -let eyewear = { - plagueDoctorMask: { - value: 100, - set: 'plagueDoctor', - canOwn: ((u) => { - return u.items.gear.owned.eyewear_armoire_plagueDoctorMask != null; - }) - } -}; - -let head = { - lunarCrown: { - value: 100, - con: 7, - per: 7, - set: 'soothing', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_lunarCrown != null; - }) - }, - redHairbow: { - value: 100, - str: 5, - int: 5, - con: 5, - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_redHairbow != null; - }) - }, - violetFloppyHat: { - value: 100, - per: 5, - int: 5, - con: 5, - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_violetFloppyHat != null; - }) - }, - gladiatorHelm: { - value: 100, - per: 7, - int: 7, - set: 'gladiator', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_gladiatorHelm != null; - }) - }, - rancherHat: { - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_rancherHat != null; - }) - }, - royalCrown: { - value: 100, - str: 10, - set: 'royal', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_royalCrown != null; - }) - }, - blueHairbow: { - value: 100, - per: 5, - int: 5, - con: 5, - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_blueHairbow != null; - }) - }, - goldenLaurels: { - text: t('headArmoireGoldenLaurelsText'), - notes: t('headArmoireGoldenLaurelsNotes', { - attrs: 8 - }), - value: 100, - per: 8, - con: 8, - set: 'goldenToga', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_goldenLaurels != null; - }) - }, - hornedIronHelm: { - value: 100, - con: 9, - str: 7, - set: 'hornedIron', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_hornedIronHelm != null; - }) - }, - yellowHairbow: { - notes: t('headArmoireYellowHairbowNotes', { - attrs: 5 - }), - value: 100, - int: 5, - per: 5, - str: 5, - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_yellowHairbow != null; - }) - }, - redFloppyHat: { - notes: t('headArmoireRedFloppyHatNotes', { - attrs: 6 - }), - value: 100, - con: 6, - int: 6, - per: 6, - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_redFloppyHat != null; - }) - }, - plagueDoctorHat: { - value: 100, - int: 5, - str: 6, - con: 5, - set: 'plagueDoctor', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_plagueDoctorHat != null; - }) - }, - blackCat: { - notes: t('headArmoireBlackCatNotes', { - attrs: 9 - }), - value: 100, - int: 9, - per: 9, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blackCat != null; - }) - }, - orangeCat: { - notes: t('headArmoireOrangeCatNotes', { - attrs: 9 - }), - value: 100, - con: 9, - str: 9, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_orangeCat != null; - }) - }, - blueFloppyHat: { - notes: t('headArmoireBlueFloppyHatNotes', { - attrs: 7 - }), - value: 100, - con: 7, - int: 7, - per: 7, - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_blueFloppyHat != null; - }) - }, - shepherdHeaddress: { - value: 100, - int: 9, - set: 'shepherd', - canOwn: ((u) => { - return u.items.gear.owned.head_armoire_shepherdHeaddress != null; - }) - }, -}; - -let shield = { - gladiatorShield: { - value: 100, - con: 5, - str: 5, - set: 'gladiator', - canOwn: ((u) => { - return u.items.gear.owned.shield_armoire_gladiatorShield != null; - }) - }, - midnightShield: { - value: 100, - con: 10, - str: 2, - canOwn: ((u) => { - return u.items.gear.owned.shield_armoire_midnightShield != null; - }) - }, - royalCane: { - notes: t('shieldArmoireRoyalCaneNotes', { - attrs: 5 - }), - value: 100, - con: 5, - int: 5, - per: 5, - set: 'royal', - canOwn: ((u) => { - return u.items.gear.owned.shield_armoire_royalCane != null; - }) - } -}; - -let weapon = { - basicCrossbow: { - value: 100, - str: 5, - per: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_basicCrossbow != null; - }) - }, - lunarSceptre: { - value: 100, - con: 7, - int: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_lunarSceptre != null; - }) - }, - rancherLasso: { - notes: t('weaponArmoireRancherLassoNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_rancherLasso != null; - }) - }, - mythmakerSword: { - notes: t('weaponArmoireMythmakerSwordNotes', { - attrs: 6 - }), - value: 100, - str: 6, - per: 6, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_mythmakerSword != null; - }) - }, - ironCrook: { - notes: t('weaponArmoireIronCrookNotes', { - attrs: 7 - }), - value: 100, - str: 7, - per: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_ironCrook != null; - }) - }, - goldWingStaff: { - notes: t('weaponArmoireGoldWingStaffNotes', { - attrs: 4 - }), - value: 100, - con: 4, - int: 4, - per: 4, - str: 4, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_goldWingStaff != null; - }) - }, - batWand: { - value: 100, - int: 10, - per: 2, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_batWand != null; - }) - }, - shepherdsCrook: { - value: 100, - con: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_shepherdsCrook != null; - }) - } -}; - -let armoireSet = { - armor: armor, - eyewear: eyewear, - head: head, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(armoireSet, {setName: 'armoire'}); - -export default armoireSet; diff --git a/common/script/src/content/gear/sets/base.js b/common/script/src/content/gear/sets/base.js deleted file mode 100644 index b051b8a03b..0000000000 --- a/common/script/src/content/gear/sets/base.js +++ /dev/null @@ -1,48 +0,0 @@ -import {setGearSetDefaults} from '../../helpers'; - -let armor = { - 0: { value: 0 }, -}; - -let back = { - 0: { value: 0 } -}; - -let body = { - 0: { value: 0 } -}; - -let eyewear = { - 0: { value: 0 } -}; - -let head = { - 0: { value: 0 }, -}; - -let headAccessory = { - 0: { value: 0 }, -}; - -let shield = { - 0: { value: 0 }, -}; - -let weapon = { - 0: { value: 0 }, -}; - -let baseSet = { - armor: armor, - back: back, - body: body, - eyewear: eyewear, - head: head, - headAccessory: headAccessory, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(baseSet, {setName: 'base'}); - -export default baseSet; diff --git a/common/script/src/content/gear/sets/healer.js b/common/script/src/content/gear/sets/healer.js deleted file mode 100644 index 0265ce434c..0000000000 --- a/common/script/src/content/gear/sets/healer.js +++ /dev/null @@ -1,46 +0,0 @@ -import {setGearSetDefaults} from '../../helpers'; - -let armor = { - 1: { con: 6, value: 30 }, - 2: { con: 9, value: 45 }, - 3: { con: 12, value: 65 }, - 4: { con: 15, value: 90 }, - 5: { con: 18, value: 120, last: true }, -}; - -let head = { - 1: { int: 2, value: 15 }, - 2: { int: 3, value: 25 }, - 3: { int: 5, value: 40 }, - 4: { int: 7, value: 60 }, - 5: { int: 9, value: 80, last: true }, -}; - -let shield = { - 1: { con: 2, value: 20 }, - 2: { con: 4, value: 35 }, - 3: { con: 6, value: 50 }, - 4: { con: 9, value: 70 }, - 5: { con: 12, value: 90, last: true }, -}; - -let weapon = { - 0: { value: 0 }, - 1: { int: 2, value: 20 }, - 2: { int: 3, value: 30 }, - 3: { int: 5, value: 45 }, - 4: { int: 7, value: 65 }, - 5: { int: 9, value: 90 }, - 6: { int: 11, value: 120, last: true }, -}; - -let healerSet = { - armor: armor, - head: head, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(healerSet, {setName: 'healer'}); - -export default healerSet; diff --git a/common/script/src/content/gear/sets/mystery.js b/common/script/src/content/gear/sets/mystery.js deleted file mode 100644 index d3f8d330fd..0000000000 --- a/common/script/src/content/gear/sets/mystery.js +++ /dev/null @@ -1,87 +0,0 @@ -import {setGearSetDefaults} from '../../helpers'; - -let armor = { - 201402: { mystery: '201402', value: 0 }, - 201403: { mystery: '201403', value: 0 }, - 201405: { mystery: '201405', value: 0 }, - 201406: { mystery: '201406', value: 0 }, - 201407: { mystery: '201407', value: 0 }, - 201408: { mystery: '201408', value: 0 }, - 201409: { mystery: '201409', value: 0 }, - 201410: { mystery: '201410', value: 0 }, - 201412: { mystery: '201412', value: 0 }, - 201501: { mystery: '201501', value: 0 }, - 201503: { mystery: '201503', value: 0 }, - 201504: { mystery: '201504', value: 0 }, - 201506: { mystery: '201506', value: 0 }, - 201508: { mystery: '201508', value: 0 }, - 201509: { mystery: '201509', value: 0 }, - 301404: { mystery: '301404', value: 0 }, -}; - -let back = { - 201402: { mystery: '201402', value: 0 }, - 201404: { mystery: '201404', value: 0 }, - 201410: { mystery: '201410', value: 0 }, - 201504: { mystery: '201504', value: 0 }, - 201507: { mystery: '201507', value: 0 }, - 201510: { mystery: '201510', value: 0 }, -}; - -let eyewear = { - 201503: { mystery: '201503', value: 0 }, - 201506: { mystery: '201506', value: 0 }, - 201507: { mystery: '201507', value: 0 }, - 301404: { mystery: '301404', value: 0 }, - 301405: { mystery: '301405', value: 0 }, -}; - -let head = { - 201402: { mystery: '201402', value: 0 }, - 201405: { mystery: '201405', value: 0 }, - 201406: { mystery: '201406', value: 0 }, - 201407: { mystery: '201407', value: 0 }, - 201408: { mystery: '201408', value: 0 }, - 201411: { mystery: '201411', value: 0 }, - 201412: { mystery: '201412', value: 0 }, - 201501: { mystery: '201501', value: 0 }, - 201505: { mystery: '201505', value: 0 }, - 201508: { mystery: '201508', value: 0 }, - 201509: { mystery: '201509', value: 0 }, - 301404: { mystery: '301404', value: 0 }, - 301405: { mystery: '301405', value: 0 }, -}; - -let headAccessory = { - 201403: { mystery: '201403', value: 0 }, - 201404: { mystery: '201404', value: 0 }, - 201409: { mystery: '201409', value: 0 }, - 201502: { mystery: '201502', value: 0 }, - 201510: { mystery: '201510', value: 0 }, - 301405: { mystery: '301405', value: 0 }, -}; - -let shield = { - 301405: { mystery: '301405', value: 0 }, -}; - -let weapon = { - 201411: { mystery: '201411', value: 0 }, - 201502: { mystery: '201502', value: 0 }, - 201505: { mystery: '201505', value: 0 }, - 301404: { mystery: '301404', value: 0 }, -}; - -let mysterySet = { - armor: armor, - back: back, - eyewear: eyewear, - head: head, - headAccessory: headAccessory, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(mysterySet, {setName: 'mystery'}); - -export default mysterySet; diff --git a/common/script/src/content/gear/sets/rogue.js b/common/script/src/content/gear/sets/rogue.js deleted file mode 100644 index 274b2eb189..0000000000 --- a/common/script/src/content/gear/sets/rogue.js +++ /dev/null @@ -1,37 +0,0 @@ -import {setGearSetDefaults} from '../../helpers'; - -let armor = { - 1: { per: 6, value: 30 }, - 2: { per: 9, value: 45 }, - 3: { per: 12, value: 65 }, - 4: { per: 15, value: 90 }, - 5: { per: 18, value: 120, last: true }, -}; - -let head = { - 1: { per: 2, value: 15 }, - 2: { per: 4, value: 25 }, - 3: { per: 6, value: 40 }, - 4: { per: 9, value: 60 }, - 5: { per: 12, value: 80, last: true }, -}; - -let weapon = { - 0: { str: 0, value: 0 }, - 1: { str: 2, value: 20 }, - 2: { str: 3, value: 35 }, - 3: { str: 4, value: 50 }, - 4: { str: 6, value: 70 }, - 5: { str: 8, value: 90 }, - 6: { str: 10, value: 120, last: true }, -}; - -let rogueSet = { - armor: armor, - head: head, - weapon: weapon, -}; - -setGearSetDefaults(rogueSet, {setName: 'rogue'}); - -export default rogueSet; diff --git a/common/script/src/content/gear/sets/special.js b/common/script/src/content/gear/sets/special.js deleted file mode 100644 index 7a94c9dd4e..0000000000 --- a/common/script/src/content/gear/sets/special.js +++ /dev/null @@ -1,1203 +0,0 @@ -import { - setGearSetDefaults, - translator as t -} from '../../helpers'; -import events from '../../events'; - -let armor = { - 0: { - con: 20, - value: 150, - canOwn: ((u) => { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - notes: t('armorSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: ((u) => { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 2; - }) - }, - 2: { - notes: t('armorSpecial2Notes', { - attrs: 25 - }), - int: 25, - con: 25, - value: 200, - canOwn: ((u) => { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 300 || (u.items.gear.owned.armor_special_2 != null); - }) - }, - finnedOceanicArmor: { - str: 15, - value: 130, - canOwn: ((u) => { - return u.items.gear.owned.armor_special_finnedOceanicArmor != null; - }) - }, - yeti: { - event: events.winter, - specialClass: 'warrior', - con: 9, - value: 90 - }, - ski: { - event: events.winter, - specialClass: 'rogue', - per: 15, - value: 90 - }, - candycane: { - event: events.winter, - specialClass: 'wizard', - int: 9, - value: 90 - }, - snowflake: { - event: events.winter, - specialClass: 'healer', - con: 15, - value: 90 - }, - birthday: { - event: events.birthday, - value: 0 - }, - springRogue: { - event: events.spring, - specialClass: 'rogue', - value: 90, - per: 15 - }, - springWarrior: { - event: events.spring, - specialClass: 'warrior', - value: 90, - con: 9 - }, - springMage: { - event: events.spring, - specialClass: 'wizard', - value: 90, - int: 9 - }, - springHealer: { - event: events.spring, - specialClass: 'healer', - value: 90, - con: 15 - }, - summerRogue: { - event: events.summer, - specialClass: 'rogue', - value: 90, - per: 15 - }, - summerWarrior: { - event: events.summer, - specialClass: 'warrior', - value: 90, - con: 9 - }, - summerMage: { - event: events.summer, - specialClass: 'wizard', - value: 90, - int: 9 - }, - summerHealer: { - event: events.summer, - specialClass: 'healer', - value: 90, - con: 15 - }, - fallRogue: { - event: events.fall, - specialClass: 'rogue', - value: 90, - canBuy: () => { return true; }, - per: 15 - }, - fallWarrior: { - event: events.fall, - specialClass: 'warrior', - value: 90, - canBuy: () => { return true; }, - con: 9 - }, - fallMage: { - event: events.fall, - specialClass: 'wizard', - value: 90, - canBuy: () => { return true; }, - int: 9 - }, - fallHealer: { - event: events.fall, - specialClass: 'healer', - value: 90, - canBuy: () => { return true; }, - con: 15 - }, - winter2015Rogue: { - event: events.winter2015, - specialClass: 'rogue', - value: 90, - per: 15 - }, - winter2015Warrior: { - event: events.winter2015, - specialClass: 'warrior', - value: 90, - con: 9 - }, - winter2015Mage: { - event: events.winter2015, - specialClass: 'wizard', - value: 90, - int: 9 - }, - winter2015Healer: { - event: events.winter2015, - specialClass: 'healer', - value: 90, - con: 15 - }, - birthday2015: { - value: 0, - canOwn: ((u) => { - return u.items.gear.owned.armor_special_birthday2015 != null; - }) - }, - spring2015Rogue: { - event: events.spring2015, - specialClass: 'rogue', - value: 90, - per: 15 - }, - spring2015Warrior: { - event: events.spring2015, - specialClass: 'warrior', - value: 90, - con: 9 - }, - spring2015Mage: { - event: events.spring2015, - specialClass: 'wizard', - value: 90, - int: 9 - }, - spring2015Healer: { - event: events.spring2015, - specialClass: 'healer', - value: 90, - con: 15 - }, - summer2015Rogue: { - event: events.summer2015, - specialClass: 'rogue', - value: 90, - per: 15 - }, - summer2015Warrior: { - event: events.summer2015, - specialClass: 'warrior', - value: 90, - con: 9 - }, - summer2015Mage: { - event: events.summer2015, - specialClass: 'wizard', - value: 90, - int: 9 - }, - summer2015Healer: { - event: events.summer2015, - specialClass: 'healer', - value: 90, - con: 15 - }, - fall2015Rogue: { - event: events.fall2015, - specialClass: 'rogue', - value: 90, - per: 15 - }, - fall2015Warrior: { - event: events.fall2015, - specialClass: 'warrior', - value: 90, - con: 9 - }, - fall2015Mage: { - event: events.fall2015, - specialClass: 'wizard', - value: 90, - int: 9 - }, - fall2015Healer: { - event: events.fall2015, - specialClass: 'healer', - value: 90, - con: 15 - }, - gaymerx: { - event: events.gaymerx, - value: 0 - } -}; - -let back = { - wondercon_red: { - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - value: 0, - mystery: 'wondercon' - } -}; - -let body = { - wondercon_red: { - value: 0, - mystery: 'wondercon' - }, - wondercon_gold: { - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - value: 0, - mystery: 'wondercon' - }, - summerHealer: { - event: events.summer, - specialClass: 'healer', - value: 20 - }, - summerMage: { - event: events.summer, - specialClass: 'wizard', - value: 20 - }, - summer2015Healer: { - event: events.summer2015, - specialClass: 'healer', - value: 20 - }, - summer2015Mage: { - event: events.summer2015, - specialClass: 'wizard', - value: 20 - }, - summer2015Rogue: { - event: events.summer2015, - specialClass: 'rogue', - value: 20 - }, - summer2015Warrior: { - event: events.summer2015, - specialClass: 'warrior', - value: 20 - } -}; - -let eyewear = { - wondercon_red: { - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - value: 0, - mystery: 'wondercon' - }, - summerRogue: { - event: events.summer, - specialClass: 'rogue', - value: 20 - }, - summerWarrior: { - event: events.summer, - specialClass: 'warrior', - value: 20 - } -}; - -let head = { - 0: { - int: 20, - value: 150, - canOwn: ((u) => { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - notes: t('headSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: ((u) => { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 3; - }) - }, - 2: { - notes: t('headSpecial2Notes', { - attrs: 25 - }), - int: 25, - str: 25, - value: 200, - canOwn: ((u) => { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.head_special_2 != null); - }) - }, - fireCoralCirclet: { - per: 15, - value: 130, - canOwn: ((u) => { - return u.items.gear.owned.head_special_fireCoralCirclet != null; - }) - }, - nye: { - event: events.winter, - value: 0 - }, - yeti: { - event: events.winter, - specialClass: 'warrior', - str: 9, - value: 60 - }, - ski: { - event: events.winter, - specialClass: 'rogue', - per: 9, - value: 60 - }, - candycane: { - event: events.winter, - specialClass: 'wizard', - per: 7, - value: 60 - }, - snowflake: { - event: events.winter, - specialClass: 'healer', - int: 7, - value: 60 - }, - springRogue: { - event: events.spring, - specialClass: 'rogue', - value: 60, - per: 9 - }, - springWarrior: { - event: events.spring, - specialClass: 'warrior', - value: 60, - str: 9 - }, - springMage: { - event: events.spring, - specialClass: 'wizard', - value: 60, - per: 7 - }, - springHealer: { - event: events.spring, - specialClass: 'healer', - value: 60, - int: 7 - }, - summerRogue: { - event: events.summer, - specialClass: 'rogue', - value: 60, - per: 9 - }, - summerWarrior: { - event: events.summer, - specialClass: 'warrior', - value: 60, - str: 9 - }, - summerMage: { - event: events.summer, - specialClass: 'wizard', - value: 60, - per: 7 - }, - summerHealer: { - event: events.summer, - specialClass: 'healer', - value: 60, - int: 7 - }, - fallRogue: { - event: events.fall, - specialClass: 'rogue', - value: 60, - canBuy: () => { return true; }, - per: 9 - }, - fallWarrior: { - event: events.fall, - specialClass: 'warrior', - value: 60, - canBuy: () => { return true; }, - str: 9 - }, - fallMage: { - event: events.fall, - specialClass: 'wizard', - value: 60, - canBuy: () => { return true; }, - per: 7 - }, - fallHealer: { - event: events.fall, - specialClass: 'healer', - value: 60, - canBuy: () => { return true; }, - int: 7 - }, - winter2015Rogue: { - event: events.winter2015, - specialClass: 'rogue', - value: 60, - per: 9 - }, - winter2015Warrior: { - event: events.winter2015, - specialClass: 'warrior', - value: 60, - str: 9 - }, - winter2015Mage: { - event: events.winter2015, - specialClass: 'wizard', - value: 60, - per: 7 - }, - winter2015Healer: { - event: events.winter2015, - specialClass: 'healer', - value: 60, - int: 7 - }, - nye2014: { - value: 0, - canOwn: ((u) => { - return u.items.gear.owned.head_special_nye2014 != null; - }) - }, - spring2015Rogue: { - event: events.spring2015, - specialClass: 'rogue', - value: 60, - per: 9 - }, - spring2015Warrior: { - event: events.spring2015, - specialClass: 'warrior', - value: 60, - str: 9 - }, - spring2015Mage: { - event: events.spring2015, - specialClass: 'wizard', - value: 60, - per: 7 - }, - spring2015Healer: { - event: events.spring2015, - specialClass: 'healer', - value: 60, - int: 7 - }, - summer2015Rogue: { - event: events.summer2015, - specialClass: 'rogue', - value: 60, - per: 9 - }, - summer2015Warrior: { - event: events.summer2015, - specialClass: 'warrior', - value: 60, - str: 9 - }, - summer2015Mage: { - event: events.summer2015, - specialClass: 'wizard', - value: 60, - per: 7 - }, - summer2015Healer: { - event: events.summer2015, - specialClass: 'healer', - value: 60, - int: 7 - }, - fall2015Rogue: { - event: events.fall2015, - specialClass: 'rogue', - value: 60, - per: 9 - }, - fall2015Warrior: { - event: events.fall2015, - specialClass: 'warrior', - value: 60, - str: 9 - }, - fall2015Mage: { - event: events.fall2015, - specialClass: 'wizard', - value: 60, - per: 7 - }, - fall2015Healer: { - event: events.fall2015, - specialClass: 'healer', - value: 60, - int: 7 - }, - gaymerx: { - event: events.gaymerx, - value: 0 - } -}; - -let headAccessory = { - springRogue: { - event: events.spring, - specialClass: 'rogue', - value: 20 - }, - springWarrior: { - event: events.spring, - specialClass: 'warrior', - value: 20 - }, - springMage: { - event: events.spring, - specialClass: 'wizard', - value: 20 - }, - springHealer: { - event: events.spring, - specialClass: 'healer', - value: 20 - }, - spring2015Rogue: { - event: events.spring2015, - specialClass: 'rogue', - value: 20 - }, - spring2015Warrior: { - event: events.spring2015, - specialClass: 'warrior', - value: 20 - }, - spring2015Mage: { - event: events.spring2015, - specialClass: 'wizard', - value: 20 - }, - spring2015Healer: { - event: events.spring2015, - specialClass: 'healer', - value: 20 - }, - bearEars: { - gearSet: 'animal', - text: t('headAccessoryBearEarsText'), - notes: t('headAccessoryBearEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_bearEars != null; - }) - }, - cactusEars: { - gearSet: 'animal', - text: t('headAccessoryCactusEarsText'), - notes: t('headAccessoryCactusEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_cactusEars != null; - }) - }, - foxEars: { - gearSet: 'animal', - text: t('headAccessoryFoxEarsText'), - notes: t('headAccessoryFoxEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_foxEars != null; - }) - }, - lionEars: { - gearSet: 'animal', - text: t('headAccessoryLionEarsText'), - notes: t('headAccessoryLionEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_lionEars != null; - }) - }, - pandaEars: { - gearSet: 'animal', - text: t('headAccessoryPandaEarsText'), - notes: t('headAccessoryPandaEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_pandaEars != null; - }) - }, - pigEars: { - gearSet: 'animal', - text: t('headAccessoryPigEarsText'), - notes: t('headAccessoryPigEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_pigEars != null; - }) - }, - tigerEars: { - gearSet: 'animal', - text: t('headAccessoryTigerEarsText'), - notes: t('headAccessoryTigerEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_tigerEars != null; - }) - }, - wolfEars: { - gearSet: 'animal', - text: t('headAccessoryWolfEarsText'), - notes: t('headAccessoryWolfEarsNotes'), - value: 20, - canBuy: () => { return true; }, - canOwn: ((u) => { - return u.items.gear.owned.headAccessory_special_wolfEars != null; - }) - } -}; - -let shield = { - 0: { - per: 20, - value: 150, - canOwn: ((u) => { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - notes: t('shieldSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: ((u) => { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 5; - }) - }, - goldenknight: { - notes: t('shieldSpecialGoldenknightNotes', { - attrs: 25 - }), - con: 25, - per: 25, - value: 200, - canOwn: ((u) => { - return u.items.gear.owned.shield_special_goldenknight != null; - }) - }, - moonpearlShield: { - con: 15, - value: 130, - canOwn: ((u) => { - return u.items.gear.owned.shield_special_moonpearlShield != null; - }) - }, - yeti: { - event: events.winter, - specialClass: 'warrior', - con: 7, - value: 70 - }, - ski: { - text: t('weaponSpecialSkiText'), - notes: t('weaponSpecialSkiNotes', { - str: 8 - }), - event: events.winter, - specialClass: 'rogue', - str: 8, - value: 90 - }, - snowflake: { - event: events.winter, - specialClass: 'healer', - con: 9, - value: 70 - }, - springRogue: { - event: events.spring, - specialClass: 'rogue', - value: 80, - str: 8 - }, - springWarrior: { - event: events.spring, - specialClass: 'warrior', - value: 70, - con: 7 - }, - springHealer: { - event: events.spring, - specialClass: 'healer', - value: 70, - con: 9 - }, - summerRogue: { - event: events.summer, - specialClass: 'rogue', - value: 80, - str: 8 - }, - summerWarrior: { - event: events.summer, - specialClass: 'warrior', - value: 70, - con: 7 - }, - summerHealer: { - event: events.summer, - specialClass: 'healer', - value: 70, - con: 9 - }, - fallRogue: { - event: events.fall, - specialClass: 'rogue', - value: 80, - canBuy: () => { return true; }, - str: 8 - }, - fallWarrior: { - event: events.fall, - specialClass: 'warrior', - value: 70, - canBuy: () => { return true; }, - con: 7 - }, - fallHealer: { - event: events.fall, - specialClass: 'healer', - value: 70, - canBuy: () => { return true; }, - con: 9 - }, - winter2015Rogue: { - event: events.winter2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - winter2015Warrior: { - event: events.winter2015, - specialClass: 'warrior', - value: 70, - con: 7 - }, - winter2015Healer: { - event: events.winter2015, - specialClass: 'healer', - value: 70, - con: 9 - }, - spring2015Rogue: { - event: events.spring2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - spring2015Warrior: { - event: events.spring2015, - specialClass: 'warrior', - value: 70, - con: 7 - }, - spring2015Healer: { - event: events.spring2015, - specialClass: 'healer', - value: 70, - con: 9 - }, - summer2015Rogue: { - event: events.summer2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - summer2015Warrior: { - event: events.summer2015, - specialClass: 'warrior', - value: 70, - con: 7 - }, - summer2015Healer: { - event: events.summer2015, - specialClass: 'healer', - value: 70, - con: 9 - }, - fall2015Rogue: { - event: events.fall2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - fall2015Warrior: { - event: events.fall2015, - specialClass: 'warrior', - value: 70, - con: 7 - }, - fall2015Healer: { - event: events.fall2015, - specialClass: 'healer', - value: 70, - con: 9 - } -}; - -let weapon = { - 0: { - str: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 70; - }) - }, - 1: { - notes: t('weaponSpecial1Notes', { - attrs: 6 - }), - str: 6, - per: 6, - con: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 4; - }) - }, - 2: { - notes: t('weaponSpecial2Notes', { - attrs: 25 - }), - str: 25, - per: 25, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.weapon_special_2 != null); - }) - }, - 3: { - notes: t('weaponSpecial3Notes', { - attrs: 17 - }), - str: 17, - int: 17, - con: 17, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.weapon_special_3 != null); - }) - }, - critical: { - notes: t('weaponSpecialCriticalNotes', { - attrs: 40 - }), - str: 40, - per: 40, - value: 200, - canOwn: (function(u) { - var ref; - return !!((ref = u.contributor) != null ? ref.critical : void 0); - }) - }, - tridentOfCrashingTides: { - int: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.weapon_special_tridentOfCrashingTides != null; - }) - }, - yeti: { - event: events.winter, - specialClass: 'warrior', - str: 15, - value: 90 - }, - ski: { - event: events.winter, - specialClass: 'rogue', - str: 8, - value: 90 - }, - candycane: { - event: events.winter, - specialClass: 'wizard', - twoHanded: true, - int: 15, - per: 7, - value: 160 - }, - snowflake: { - event: events.winter, - specialClass: 'healer', - int: 9, - value: 90 - }, - springRogue: { - event: events.spring, - specialClass: 'rogue', - value: 80, - str: 8 - }, - springWarrior: { - event: events.spring, - specialClass: 'warrior', - value: 90, - str: 15 - }, - springMage: { - event: events.spring, - specialClass: 'wizard', - twoHanded: true, - value: 160, - int: 15, - per: 7 - }, - springHealer: { - event: events.spring, - specialClass: 'healer', - value: 90, - int: 9 - }, - summerRogue: { - event: events.summer, - specialClass: 'rogue', - value: 80, - str: 8 - }, - summerWarrior: { - event: events.summer, - specialClass: 'warrior', - value: 90, - str: 15 - }, - summerMage: { - event: events.summer, - specialClass: 'wizard', - twoHanded: true, - value: 160, - int: 15, - per: 7 - }, - summerHealer: { - event: events.summer, - specialClass: 'healer', - value: 90, - int: 9 - }, - fallRogue: { - event: events.fall, - specialClass: 'rogue', - value: 80, - canBuy: () => { return true; }, - str: 8 - }, - fallWarrior: { - event: events.fall, - specialClass: 'warrior', - value: 90, - canBuy: () => { return true; }, - str: 15 - }, - fallMage: { - event: events.fall, - specialClass: 'wizard', - twoHanded: true, - value: 160, - canBuy: () => { return true; }, - int: 15, - per: 7 - }, - fallHealer: { - event: events.fall, - specialClass: 'healer', - value: 90, - canBuy: () => { return true; }, - int: 9 - }, - winter2015Rogue: { - event: events.winter2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - winter2015Warrior: { - event: events.winter2015, - specialClass: 'warrior', - value: 90, - str: 15 - }, - winter2015Mage: { - event: events.winter2015, - specialClass: 'wizard', - twoHanded: true, - value: 160, - int: 15, - per: 7 - }, - winter2015Healer: { - event: events.winter2015, - specialClass: 'healer', - value: 90, - int: 9 - }, - spring2015Rogue: { - event: events.spring2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - spring2015Warrior: { - event: events.spring2015, - specialClass: 'warrior', - value: 90, - str: 15 - }, - spring2015Mage: { - event: events.spring2015, - specialClass: 'wizard', - twoHanded: true, - value: 160, - int: 15, - per: 7 - }, - spring2015Healer: { - event: events.spring2015, - specialClass: 'healer', - value: 90, - int: 9 - }, - summer2015Rogue: { - event: events.summer2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - summer2015Warrior: { - event: events.summer2015, - specialClass: 'warrior', - value: 90, - str: 15 - }, - summer2015Mage: { - event: events.summer2015, - specialClass: 'wizard', - twoHanded: true, - value: 160, - int: 15, - per: 7 - }, - summer2015Healer: { - event: events.summer2015, - specialClass: 'healer', - value: 90, - int: 9 - }, - fall2015Rogue: { - event: events.fall2015, - specialClass: 'rogue', - value: 80, - str: 8 - }, - fall2015Warrior: { - event: events.fall2015, - specialClass: 'warrior', - value: 90, - str: 15 - }, - fall2015Mage: { - event: events.fall2015, - specialClass: 'wizard', - twoHanded: true, - value: 160, - int: 15, - per: 7 - }, - fall2015Healer: { - event: events.fall2015, - specialClass: 'healer', - value: 90, - int: 9 - } -}; - -let specialSet = { - armor: armor, - back: back, - body: body, - eyewear: eyewear, - head: head, - headAccessory: headAccessory, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(specialSet, {setName: 'special'}); - -export default specialSet; diff --git a/common/script/src/content/gear/sets/warrior.js b/common/script/src/content/gear/sets/warrior.js deleted file mode 100644 index 2470f20a9c..0000000000 --- a/common/script/src/content/gear/sets/warrior.js +++ /dev/null @@ -1,46 +0,0 @@ -import {setGearSetDefaults} from '../../helpers'; - -let armor = { - 1: { con: 3, value: 30 }, - 2: { con: 5, value: 45 }, - 3: { con: 7, value: 65 }, - 4: { con: 9, value: 90 }, - 5: { con: 11, value: 120, last: true }, -}; - -let head = { - 1: { str: 2, value: 15 }, - 2: { str: 4, value: 25 }, - 3: { str: 6, value: 40 }, - 4: { str: 9, value: 60 }, - 5: { str: 12, value: 80, last: true }, -}; - -let shield = { - 1: { con: 2, value: 20 }, - 2: { con: 3, value: 35 }, - 3: { con: 5, value: 50 }, - 4: { con: 7, value: 70 }, - 5: { con: 9, value: 90, last: true }, -}; - -let weapon = { - 0: { value: 1 }, - 1: { str: 3, value: 20 }, - 2: { str: 6, value: 30 }, - 3: { str: 9, value: 45 }, - 4: { str: 12, value: 65 }, - 5: { str: 15, value: 90 }, - 6: { str: 18, value: 120, last: true }, -}; - -let warriorSet = { - armor: armor, - head: head, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(warriorSet, {setName: 'warrior'}); - -export default warriorSet; diff --git a/common/script/src/content/gear/sets/wizard.js b/common/script/src/content/gear/sets/wizard.js deleted file mode 100644 index d113e85462..0000000000 --- a/common/script/src/content/gear/sets/wizard.js +++ /dev/null @@ -1,44 +0,0 @@ -import {setGearSetDefaults} from '../../helpers'; - -let armor = { - 1: { int: 2, value: 30 }, - 2: { int: 4, value: 45 }, - 3: { int: 6, value: 65 }, - 4: { int: 9, value: 90 }, - 5: { int: 12, value: 120, last: true }, -}; - -let head = { - 1: { per: 2, value: 15 }, - 2: { per: 3, value: 25 }, - 3: { per: 5, value: 40 }, - 4: { per: 7, value: 60 }, - 5: { per: 10, value: 80, last: true }, -}; - -let shield = { - // Wizard's weapons are two handed - // And thus do not have shields - // But the content structure still expects an object -}; - -let weapon = { - 0: { twoHanded: true, value: 0 }, - 1: { twoHanded: true, int: 3, per: 1, value: 30 }, - 2: { twoHanded: true, int: 6, per: 2, value: 50 }, - 3: { twoHanded: true, int: 9, per: 3, value: 80 }, - 4: { twoHanded: true, int: 12, per: 5, value: 120 }, - 5: { twoHanded: true, int: 15, per: 7, value: 160 }, - 6: { twoHanded: true, int: 18, per: 10, value: 200, last: true }, -}; - -let wizardSet = { - armor: armor, - head: head, - shield: shield, - weapon: weapon, -}; - -setGearSetDefaults(wizardSet, {setName: 'wizard'}); - -export default wizardSet; diff --git a/test/content/gear.js b/test/content/gear.js index 2d9faf1883..c8076e8bd1 100644 --- a/test/content/gear.js +++ b/test/content/gear.js @@ -1,54 +1,44 @@ import { expectValidTranslationString, - describeEachItem } from '../helpers/content.helper'; -import {each} from 'lodash'; +import { each } from 'lodash'; -import {tree as allGear} from '../../common/script/src/content/gear'; +import { tree as allGear } from '../../common/script/content/gear'; describe('Gear', () => { - each(allGear, (piece, type) => { - describeEachItem(type, piece, (set, key) => { - checkGearAttributes(set); + each(allGear, (piece, gearType) => { + describe(gearType, () => { + each(piece, (items, klass) => { + context(`${klass} ${gearType}s`, () => { + it('have a value of at least 0 for each stat', () => { + each(items, (gear, itemKey) => { + expect(gear.con).to.be.at.least(0); + expect(gear.int).to.be.at.least(0); + expect(gear.per).to.be.at.least(0); + expect(gear.str).to.be.at.least(0); + }); + }); + + it('have a purchase value of at least 0', () => { + each(items, (gear, itemKey) => { + expect(gear.value).to.be.at.least(0); + }); + }); + + it('has a canBuy function', () => { + each(items, (gear, itemKey) => { + expect(gear.canBuy).to.be.a('function'); + }); + }); + + it('have valid translation strings for text and notes', () => { + each(items, (gear, itemKey) => { + expectValidTranslationString(gear.text); + expectValidTranslationString(gear.notes); + }); + }); + }); + }); }); }); }); - -function checkGearAttributes(set) { - each(set, (gear, key) => { - describe(`${key}`, () => { - - it('has a value attribute', () => { - expect(gear.value).to.be.at.least(0); - }); - - it('has a valid con attribute', () => { - expect(gear.con).to.be.at.least(0); - }); - - it('has a valid int attribute', () => { - expect(gear.int).to.be.at.least(0); - }); - - it('has a valid per attribute', () => { - expect(gear.per).to.be.at.least(0); - }); - - it('has a valid str attribute', () => { - expect(gear.str).to.be.at.least(0); - }); - - it('has a canBuy function', () => { - expect(gear.canBuy).to.be.a('function'); - }); - - it('has a valid text attribute', () => { - expectValidTranslationString(gear.text); - }); - - it('has a valid notes attribute', () => { - expectValidTranslationString(gear.notes); - }); - }); - }); -}