From 5b6cc23fb7e09e6b5d4ac35c3c865f6176f6cbbd Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 14 May 2024 12:41:49 +0200 Subject: [PATCH] event code cleanup --- test/common/libs/shops.test.js | 11 +- .../components/shops/quests/buyQuestModal.vue | 2 +- website/common/script/content/gear/index.js | 17 --- .../script/content/gear/sets/special/index.js | 101 ++++++++---------- website/common/script/libs/getItemInfo.js | 2 +- website/common/script/libs/shops.js | 6 +- 6 files changed, 53 insertions(+), 86 deletions(-) diff --git a/test/common/libs/shops.test.js b/test/common/libs/shops.test.js index 045bed1523..9c7ffc0f52 100644 --- a/test/common/libs/shops.test.js +++ b/test/common/libs/shops.test.js @@ -3,9 +3,7 @@ import { generateUser, } from '../../helpers/common.helper'; -import { - currentSeason, -} from '../../../website/common/script/libs/shops-seasonal.config'; +import seasonalConfig from '../../../website/common/script/libs/shops-seasonal.config'; describe('shops', () => { const user = generateUser(); @@ -149,7 +147,7 @@ describe('shops', () => { it('does not contain an empty category', () => { _.each(shopCategories, category => { - expect(category.items.length).to.be.greaterThan(0); + expect(category.items.length, category.identifier).to.be.greaterThan(0); }); }); @@ -264,9 +262,12 @@ describe('shops', () => { }); it('items match current season', () => { + const currentSeason = seasonalConfig.currentSeason.toLowerCase(); shopCategories.forEach(category => { category.items.forEach(item => { - expect(item.season).to.eql(currentSeason); + if (item.klass === 'special') { + expect(item.season, item.key).to.eql(currentSeason); + } }); }); }); diff --git a/website/client/src/components/shops/quests/buyQuestModal.vue b/website/client/src/components/shops/quests/buyQuestModal.vue index 395303ebc5..1b0f489f63 100644 --- a/website/client/src/components/shops/quests/buyQuestModal.vue +++ b/website/client/src/components/shops/quests/buyQuestModal.vue @@ -99,7 +99,7 @@
{ canBuy: () => false, }); - if (item.event) { - const canOwnFuncTrue = () => true; - const _canOwn = item.canOwn || canOwnFuncTrue; - - item.canOwn = user => { - const userHasOwnedItem = ownsItem(key)(user); - const eventIsCurrent = moment() - .isAfter(item.event.start) && moment().isBefore(item.event.end); - const compatibleWithUserClass = item.specialClass - ? user.stats.class === item.specialClass - : true; - - return _canOwn(user) && (userHasOwnedItem || eventIsCurrent) && compatibleWithUserClass; - }; - } - if (item.mystery || key.indexOf('takeThis') !== -1) { item.canOwn = ownsItem(key); } diff --git a/website/common/script/content/gear/sets/special/index.js b/website/common/script/content/gear/sets/special/index.js index c18322fd5f..c7d88a220c 100644 --- a/website/common/script/content/gear/sets/special/index.js +++ b/website/common/script/content/gear/sets/special/index.js @@ -17,7 +17,10 @@ function isSeasonalEventKey (key) { function fillSpecialGear (gearItems, gearType, value, stats) { Object.keys(gearItems).forEach(key => { if (isSeasonalEventKey(key)) { - const season = key.split(/(?=[A-Z])/)[1]; + let season = key.split(/[0-9]+/)[0]; + if (season.length === key.length) { + [season] = key.split(/(?=[A-Z])/); + } let klass = key.split(/(?=[A-Z])/)[1].toLowerCase(); if (klass === 'mage') { klass = 'wizard'; @@ -25,13 +28,14 @@ function fillSpecialGear (gearItems, gearType, value, stats) { const actualGearType = (typeof gearType === 'function') ? gearType(klass) : gearType; const textKey = `${actualGearType}Special${upperFirst(key)}`; const actualValue = (typeof value === 'function') ? value(klass) : value; + const actualStats = stats !== undefined ? stats[klass] : {}; defaults(gearItems[key], { specialClass: klass, text: t(`${textKey}Text`), - notes: t(`${textKey}Notes`, stats), + notes: t(`${textKey}Notes`, actualStats), value: actualValue, season, - }, stats); + }, actualStats); if (klass === 'wizard') { defaults(gearItems[key], { twoHanded: true, @@ -178,39 +182,51 @@ const armor = { }, springRogue: { set: 'stealthyKittySet', + season: 'spring', }, springWarrior: { set: 'mightyBunnySet', + season: 'spring', }, springMage: { set: 'magicMouseSet', + season: 'spring', }, springHealer: { set: 'lovingPupSet', + season: 'spring', }, summerRogue: { set: 'roguishPirateSet', + season: 'summer', }, summerWarrior: { set: 'daringSwashbucklerSet', + season: 'summer', }, summerMage: { set: 'emeraldMermageSet', + season: 'summer', }, summerHealer: { set: 'reefSeahealerSet', + season: 'summer', }, fallRogue: { set: 'vampireSmiterSet', + season: 'fall', }, fallWarrior: { set: 'monsterOfScienceSet', + season: 'fall', }, fallMage: { set: 'witchyWizardSet', + season: 'fall', }, fallHealer: { set: 'mummyMedicSet', + season: 'fall', }, winter2015Rogue: { set: 'icicleDrakeSet', @@ -1233,39 +1249,51 @@ const head = { }, springRogue: { set: 'stealthyKittySet', + season: 'spring', }, springWarrior: { set: 'mightyBunnySet', + season: 'spring', }, springMage: { set: 'magicMouseSet', + season: 'spring', }, springHealer: { set: 'lovingPupSet', + season: 'spring', }, summerRogue: { set: 'roguishPirateSet', + season: 'summer', }, summerWarrior: { set: 'daringSwashbucklerSet', + season: 'summer', }, summerMage: { set: 'emeraldMermageSet', + season: 'summer', }, summerHealer: { set: 'reefSeahealerSet', + season: 'summer', }, fallRogue: { set: 'vampireSmiterSet', + season: 'fall', }, fallWarrior: { set: 'monsterOfScienceSet', + season: 'fall', }, fallMage: { set: 'witchyWizardSet', + season: 'fall', }, fallHealer: { set: 'mummyMedicSet', + season: 'fall', }, winter2015Rogue: { set: 'icicleDrakeSet', @@ -1840,46 +1868,22 @@ fillSpecialGear(head, 'head', 60, headStats); const headAccessory = { heroicCirclet: contributorGear.headAccessorySpecialHeroicCirclet, springRogue: { - specialClass: 'rogue', set: 'stealthyKittySet', - text: t('headAccessorySpecialSpringRogueText'), - notes: t('headAccessorySpecialSpringRogueNotes'), - value: 20, }, springWarrior: { - specialClass: 'warrior', set: 'mightyBunnySet', - text: t('headAccessorySpecialSpringWarriorText'), - notes: t('headAccessorySpecialSpringWarriorNotes'), - value: 20, }, springMage: { - specialClass: 'wizard', set: 'magicMouseSet', - text: t('headAccessorySpecialSpringMageText'), - notes: t('headAccessorySpecialSpringMageNotes'), - value: 20, }, springHealer: { - specialClass: 'healer', set: 'lovingPupSet', - text: t('headAccessorySpecialSpringHealerText'), - notes: t('headAccessorySpecialSpringHealerNotes'), - value: 20, }, spring2015Rogue: { - specialClass: 'rogue', set: 'sneakySqueakerSet', - text: t('headAccessorySpecialSpring2015RogueText'), - notes: t('headAccessorySpecialSpring2015RogueNotes'), - value: 20, }, spring2015Warrior: { - specialClass: 'warrior', set: 'bewareDogSet', - text: t('headAccessorySpecialSpring2015WarriorText'), - notes: t('headAccessorySpecialSpring2015WarriorNotes'), - value: 20, }, spring2015Mage: { specialClass: 'wizard', @@ -1960,60 +1964,28 @@ const headAccessory = { canOwn: ownsItem('headAccessory_special_wolfEars'), }, spring2016Rogue: { - specialClass: 'rogue', set: 'cleverDogSet', - text: t('headAccessorySpecialSpring2016RogueText'), - notes: t('headAccessorySpecialSpring2016RogueNotes'), - value: 20, }, spring2016Warrior: { - specialClass: 'warrior', set: 'braveMouseSet', - text: t('headAccessorySpecialSpring2016WarriorText'), - notes: t('headAccessorySpecialSpring2016WarriorNotes'), - value: 20, }, spring2016Mage: { - specialClass: 'wizard', set: 'grandMalkinSet', - text: t('headAccessorySpecialSpring2016MageText'), - notes: t('headAccessorySpecialSpring2016MageNotes'), - value: 20, }, spring2016Healer: { - specialClass: 'healer', set: 'springingBunnySet', - text: t('headAccessorySpecialSpring2016HealerText'), - notes: t('headAccessorySpecialSpring2016HealerNotes'), - value: 20, }, spring2017Rogue: { - specialClass: 'rogue', set: 'spring2017SneakyBunnySet', - text: t('headAccessorySpecialSpring2017RogueText'), - notes: t('headAccessorySpecialSpring2017RogueNotes'), - value: 20, }, spring2017Warrior: { - specialClass: 'warrior', set: 'spring2017FelineWarriorSet', - text: t('headAccessorySpecialSpring2017WarriorText'), - notes: t('headAccessorySpecialSpring2017WarriorNotes'), - value: 20, }, spring2017Mage: { - specialClass: 'wizard', set: 'spring2017CanineConjurorSet', - text: t('headAccessorySpecialSpring2017MageText'), - notes: t('headAccessorySpecialSpring2017MageNotes'), - value: 20, }, spring2017Healer: { - specialClass: 'healer', set: 'spring2017FloralMouseSet', - text: t('headAccessorySpecialSpring2017HealerText'), - notes: t('headAccessorySpecialSpring2017HealerNotes'), - value: 20, }, blackHeadband: { gearSet: 'headband', @@ -2066,6 +2038,8 @@ const headAccessory = { }, }; +fillSpecialGear(headAccessory, 'headAccessory', 20); + const shield = { 0: backerGear.shieldSpecial0, 1: contributorGear.shieldSpecial1, @@ -2153,30 +2127,39 @@ const shield = { }, springRogue: { set: 'stealthyKittySet', + season: 'spring', }, springWarrior: { set: 'mightyBunnySet', + season: 'spring', }, springHealer: { set: 'lovingPupSet', + season: 'spring', }, summerRogue: { set: 'roguishPirateSet', + season: 'summer', }, summerWarrior: { set: 'daringSwashbucklerSet', + season: 'summer', }, summerHealer: { set: 'reefSeahealerSet', + season: 'summer', }, fallRogue: { set: 'vampireSmiterSet', + season: 'fall', }, fallWarrior: { set: 'monsterOfScienceSet', + season: 'fall', }, fallHealer: { set: 'mummyMedicSet', + season: 'fall', }, winter2015Rogue: { set: 'icicleDrakeSet', diff --git a/website/common/script/libs/getItemInfo.js b/website/common/script/libs/getItemInfo.js index 429831d28b..3d30cd10f9 100644 --- a/website/common/script/libs/getItemInfo.js +++ b/website/common/script/libs/getItemInfo.js @@ -54,6 +54,7 @@ function getDefaultGearProps (item, language) { con: item.con, klass: item.klass, set: item.set, + season: item.season, }; } @@ -226,7 +227,6 @@ export default function getItemInfo (user, type, item, officialPinnedItems, lang purchaseType: 'quests', path: `quests.${item.key}`, pinType: 'seasonalQuest', - event: item.event, }; break; case 'gear': diff --git a/website/common/script/libs/shops.js b/website/common/script/libs/shops.js index 464b48ac02..41a59a2b0f 100644 --- a/website/common/script/libs/shops.js +++ b/website/common/script/libs/shops.js @@ -303,8 +303,9 @@ shops.getQuestShopCategories = function getQuestShopCategories (user, language) } category.items = filteredQuests; - - categories.push(category); + if (category.items.length > 0) { + categories.push(category); + } }); return categories; @@ -535,7 +536,6 @@ shops.getSeasonalShopCategories = function getSeasonalShopCategories (user, lang const item = category.items[0]; category.specialClass = item.specialClass; - category.event = item.event; categories.push(category); } }