mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-13 04:37:36 +01:00
event code cleanup
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<countdown-banner
|
||||
v-if="item.event"
|
||||
v-if="item.end"
|
||||
:end-date="endDate"
|
||||
/>
|
||||
<div
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import each from 'lodash/each';
|
||||
import defaults from 'lodash/defaults';
|
||||
import moment from 'moment';
|
||||
|
||||
import {
|
||||
CLASSES,
|
||||
@@ -56,22 +55,6 @@ each(GEAR_TYPES, type => {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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':
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user