mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 22:27:26 +01:00
Merge branch '2023-winner-funderlamb' into release
by @CuriousMagpie
This commit is contained in:
@@ -18,7 +18,7 @@ export default prefill({
|
||||
setPrice: 5, availableFrom: '2023-10-03T08:00-04:00', availableUntil: EVENTS.fall2023.end, text: t('hauntedColors'),
|
||||
},
|
||||
winteryHairColors: {
|
||||
setPrice: 5, availableFrom: '2023-01-17T08:00-05:00', availableUntil: EVENTS.winter2023.end, text: t('winteryColors'),
|
||||
setPrice: 5, availableFrom: '2023-01-16T08:00-05:00', availableUntil: EVENTS.winter2024.end, text: t('winteryColors'), // 2024-01-16
|
||||
},
|
||||
rainbowSkins: { setPrice: 5, text: t('rainbowSkins') },
|
||||
animalSkins: { setPrice: 5, text: t('animalSkins') },
|
||||
@@ -33,6 +33,6 @@ export default prefill({
|
||||
setPrice: 5, availableFrom: '2023-07-11T08:00-05:00', availableUntil: EVENTS.summer2023.end, text: t('splashySkins'),
|
||||
},
|
||||
winterySkins: {
|
||||
setPrice: 5, availableFrom: '2023-01-17T08:00-05:00', availableUntil: EVENTS.winter2023.end, text: t('winterySkins'),
|
||||
setPrice: 5, availableFrom: '2023-01-16T08:00-05:00', availableUntil: EVENTS.winter2024.end, text: t('winterySkins'), // 2024-01-16
|
||||
},
|
||||
});
|
||||
|
||||
@@ -78,16 +78,16 @@ const bundles = {
|
||||
winterQuests: {
|
||||
key: 'winterQuests',
|
||||
text: t('winterQuestsText'),
|
||||
notes: t('winterQuestsNotes', { date: moment(EVENTS.winter2023.end).format('LL') }),
|
||||
notes: t('winterQuestsNotes', { date: moment(EVENTS.winter2024.end).format('LL') }),
|
||||
addlNotes: t('evilSantaAddlNotes'),
|
||||
bundleKeys: [
|
||||
'evilsanta',
|
||||
'evilsanta2',
|
||||
'penguin',
|
||||
],
|
||||
event: EVENTS.winter2023,
|
||||
event: EVENTS.winter2024,
|
||||
canBuy () {
|
||||
return moment().isBetween(EVENTS.winter2023.start, EVENTS.winter2023.end);
|
||||
return moment().isBetween(EVENTS.winter2024.start, EVENTS.winter2024.end);
|
||||
},
|
||||
type: 'quests',
|
||||
value: 7,
|
||||
|
||||
@@ -10,11 +10,29 @@ const gemsPromo = {
|
||||
|
||||
export const EVENTS = {
|
||||
noEvent: {
|
||||
start: '2023-12-01T00:00-05:00',
|
||||
end: '2023-12-21T08:00-05:00',
|
||||
start: '2024-02-01T00:00-05:00',
|
||||
end: '2024-03-20T08:00-05:00',
|
||||
season: 'normal',
|
||||
npcImageSuffix: '',
|
||||
},
|
||||
nye2023: {
|
||||
start: '2023-12-28T08:00-05:00',
|
||||
end: '2024-01-04T23:59-05:00',
|
||||
season: 'nye',
|
||||
npcImageSuffix: '_nye',
|
||||
},
|
||||
winter2024: {
|
||||
start: '2023-12-19T08:00-05:00',
|
||||
end: '2024-01-31T23:59-05:00',
|
||||
npcImageSuffix: '_winter',
|
||||
season: 'winter',
|
||||
gear: true,
|
||||
},
|
||||
g1g12023: {
|
||||
start: '2023-12-18T08:00-05:00',
|
||||
end: '2024-01-09T23:59-05:00',
|
||||
promo: 'g1g1',
|
||||
},
|
||||
potions202311: {
|
||||
start: '2023-11-14T08:00-04:00',
|
||||
end: '2023-11-30T23:59-04:00',
|
||||
|
||||
@@ -53,6 +53,10 @@ const SEASONAL_SETS = {
|
||||
'winter2023FairyLightsMageSet',
|
||||
'winter2023CardinalHealerSet',
|
||||
|
||||
'winter2024SnowyOwlRogueSet',
|
||||
'winter2024PeppermintBarkWarriorSet',
|
||||
'winter2024NarwhalWizardMageSet',
|
||||
'winter2024FrozenHealerSet',
|
||||
],
|
||||
spring: [
|
||||
// spring 2014
|
||||
|
||||
@@ -844,15 +844,31 @@ const armor = {
|
||||
},
|
||||
fall2023Warrior: {
|
||||
set: 'fall2023ScaryMovieWarriorSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Healer: {
|
||||
set: 'fall2023BogCreatureHealerSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Mage: {
|
||||
set: 'fall2023ScarletWarlockMageSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Rogue: {
|
||||
set: 'fall2023WitchsBrewRogueSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
winter2024Warrior: {
|
||||
set: 'winter2024PeppermintBarkWarriorSet',
|
||||
},
|
||||
winter2024Mage: {
|
||||
set: 'winter2024NarwhalWizardMageSet',
|
||||
},
|
||||
winter2024Healer: {
|
||||
set: 'winter2024FrozenHealerSet',
|
||||
},
|
||||
winter2024Rogue: {
|
||||
set: 'winter2024SnowyOwlRogueSet',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2051,15 +2067,37 @@ const head = {
|
||||
},
|
||||
fall2023Healer: {
|
||||
set: 'fall2023BogCreatureHealerSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Mage: {
|
||||
set: 'fall2023ScarletWarlockMageSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Rogue: {
|
||||
set: 'fall2023WitchsBrewRogueSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Warrior: {
|
||||
set: 'fall2023ScaryMovieWarriorSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
winter2024Healer: {
|
||||
set: 'winter2024FrozenHealerSet',
|
||||
},
|
||||
winter2024Rogue: {
|
||||
set: 'winter2024SnowyOwlRogueSet',
|
||||
},
|
||||
winter2024Warrior: {
|
||||
set: 'winter2024PeppermintBarkWarriorSet',
|
||||
},
|
||||
winter2024Mage: {
|
||||
set: 'winter2024NarwhalWizardMageSet',
|
||||
},
|
||||
nye2023: {
|
||||
text: t('headSpecialNye2023Text'),
|
||||
notes: t('headSpecialNye2023Notes'),
|
||||
value: 0,
|
||||
canOwn: ownsItem('head_special_nye2023'),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2893,26 +2931,38 @@ const shield = {
|
||||
},
|
||||
summer2023Rogue: {
|
||||
set: 'summer2023GuppyRogueSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
summer2023Warrior: {
|
||||
set: 'summer2023GoldfishWarriorSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
summer2023Healer: {
|
||||
set: 'summer2023KelpHealerSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
fall2023Rogue: {
|
||||
set: 'fall2023WitchsBrewRogueSet',
|
||||
text: t('shieldSpecialFall2023RogueText'),
|
||||
notes: t('shieldSpecialFall2023RogueNotes', { str: 8 }),
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Warrior: {
|
||||
set: 'fall2023ScaryMovieWarriorSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Healer: {
|
||||
set: 'fall2023BogCreatureHealerSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
winter2024Warrior: {
|
||||
set: 'winter2024PeppermintBarkWarriorSet',
|
||||
},
|
||||
winter2024Rogue: {
|
||||
set: 'winter2024SnowyOwlRogueSet',
|
||||
},
|
||||
winter2024Healer: {
|
||||
set: 'winter2024FrozenHealerSet',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -3688,31 +3738,47 @@ const weapon = {
|
||||
},
|
||||
summer2023Rogue: {
|
||||
set: 'summer2023GuppyRogueSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
summer2023Warrior: {
|
||||
set: 'summer2023GoldfishWarriorSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
summer2023Mage: {
|
||||
set: 'summer2023CoralMageSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
summer2023Healer: {
|
||||
set: 'summer2023KelpHealerSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'summer',
|
||||
},
|
||||
fall2023Rogue: {
|
||||
set: 'fall2023WitchsBrewRogueSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Healer: {
|
||||
set: 'fall2023BogCreatureHealerSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Warrior: {
|
||||
set: 'fall2023ScaryMovieWarriorSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
fall2023Mage: {
|
||||
set: 'fall2023ScarletWarlockMageSet',
|
||||
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
|
||||
},
|
||||
winter2024Rogue: {
|
||||
set: 'winter2024SnowyOwlRogueSet',
|
||||
},
|
||||
winter2024Healer: {
|
||||
set: 'winter2024FrozenHealerSet',
|
||||
},
|
||||
winter2024Warrior: {
|
||||
set: 'winter2024PeppermintBarkWarriorSet',
|
||||
},
|
||||
winter2024Mage: {
|
||||
set: 'winter2024NarwhalWizardMageSet',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -193,12 +193,12 @@ const premium = {
|
||||
text: t('hatchingPotionPeppermint'),
|
||||
limited: true,
|
||||
_addlNotes: t('eventAvailabilityReturning', {
|
||||
availableDate: t('dateStartFebruary'),
|
||||
availableDate: t('dateEndJanuary'),
|
||||
previousDate: t('januaryYYYY', { year: 2022 }),
|
||||
}),
|
||||
event: EVENTS.birthday10,
|
||||
event: EVENTS.winter2024,
|
||||
canBuy () {
|
||||
return moment().isBetween(EVENTS.birthday10.start, EVENTS.birthday10.end);
|
||||
return moment().isBetween(EVENTS.winter2024.start, EVENTS.winter2024.end);
|
||||
},
|
||||
},
|
||||
StarryNight: {
|
||||
@@ -270,13 +270,13 @@ const premium = {
|
||||
value: 2,
|
||||
text: t('hatchingPotionIcySnow'),
|
||||
limited: true,
|
||||
event: EVENTS.winter2024,
|
||||
_addlNotes: t('eventAvailabilityReturning', {
|
||||
availableDate: t('dateEndJanuary'),
|
||||
previousDate: t('decemberYYYY', { year: 2018 }),
|
||||
previousDate: t('novemberYYYY', { year: 2022 }),
|
||||
}),
|
||||
event: EVENTS.winter2021,
|
||||
canBuy () {
|
||||
return moment().isBetween('2020-12-22T08:00-04:00', '2021-01-31T20:00-04:00');
|
||||
return moment().isBetween(EVENTS.winter2024.start, EVENTS.winter2024.end);
|
||||
},
|
||||
},
|
||||
RoseQuartz: {
|
||||
@@ -470,12 +470,11 @@ const premium = {
|
||||
text: t('hatchingPotionStainedGlass'),
|
||||
limited: true,
|
||||
_addlNotes: t('eventAvailabilityReturning', {
|
||||
availableDate: t('dateStartFebruary'),
|
||||
previousDate: t('januaryYYYY', { year: 2022 }),
|
||||
availableDate: t('dateEndJanuary'),
|
||||
}),
|
||||
event: EVENTS.birthday10,
|
||||
event: EVENTS.winter2024,
|
||||
canBuy () {
|
||||
return moment().isBetween(EVENTS.birthday10.start, EVENTS.birthday10.end);
|
||||
return moment().isBetween(EVENTS.winter2024.start, EVENTS.winter2024.end);
|
||||
},
|
||||
},
|
||||
PolkaDot: {
|
||||
|
||||
@@ -127,7 +127,7 @@ api.cardTypes = {
|
||||
nye: {
|
||||
key: 'nye',
|
||||
messageOptions: 5,
|
||||
yearRound: moment().isBefore('2023-01-02T20:00-05:00'),
|
||||
yearRound: moment().isBetween(EVENTS.nye2023.start, EVENTS.nye2023.end),
|
||||
},
|
||||
thankyou: {
|
||||
key: 'thankyou',
|
||||
|
||||
@@ -5,7 +5,7 @@ import { EVENTS } from './constants';
|
||||
// path: 'premiumHatchingPotions.Rainbow',
|
||||
const featuredItems = {
|
||||
market () {
|
||||
if (moment().isBetween(EVENTS.potions202311.start, EVENTS.potions202311.end)) {
|
||||
if (moment().isBetween(EVENTS.winter2024.start, EVENTS.winter2024.end)) {
|
||||
return [
|
||||
{
|
||||
type: 'armoire',
|
||||
@@ -13,15 +13,15 @@ const featuredItems = {
|
||||
},
|
||||
{
|
||||
type: 'premiumHatchingPotion',
|
||||
path: 'premiumHatchingPotions.AutumnLeaf',
|
||||
path: 'premiumHatchingPotions.StainedGlass',
|
||||
},
|
||||
{
|
||||
type: 'premiumHatchingPotion',
|
||||
path: 'premiumHatchingPotions.Ember',
|
||||
path: 'premiumHatchingPotions.Peppermint',
|
||||
},
|
||||
{
|
||||
type: 'premiumHatchingPotion',
|
||||
path: 'premiumHatchingPotions.Frost',
|
||||
path: 'premiumHatchingPotions.IcySnow',
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -32,32 +32,32 @@ const featuredItems = {
|
||||
},
|
||||
{
|
||||
type: 'food',
|
||||
path: 'food.RottenMeat',
|
||||
path: 'food.Honey',
|
||||
},
|
||||
{
|
||||
type: 'hatchingPotions',
|
||||
path: 'hatchingPotions.Zombie',
|
||||
path: 'hatchingPotions.Golden',
|
||||
},
|
||||
{
|
||||
type: 'eggs',
|
||||
path: 'eggs.Cactus',
|
||||
path: 'eggs.BearCub',
|
||||
},
|
||||
];
|
||||
},
|
||||
quests () {
|
||||
if (moment().isBetween(EVENTS.bundle202311.start, EVENTS.bundle202311.end)) {
|
||||
if (moment().isBetween(EVENTS.winter2024.start, EVENTS.winter2024.end)) {
|
||||
return [
|
||||
{
|
||||
type: 'bundles',
|
||||
path: 'bundles.oddballs',
|
||||
path: 'bundles.winterQuests',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.gryphon',
|
||||
path: 'quests.ghost_stag',
|
||||
},
|
||||
{
|
||||
type: 'quests',
|
||||
path: 'quests.armadillo',
|
||||
path: 'quests.penguin',
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -77,7 +77,7 @@ const featuredItems = {
|
||||
},
|
||||
];
|
||||
},
|
||||
seasonal: 'fall2017TrickOrTreatSet',
|
||||
seasonal: 'winter2021WinterMoonMageSet',
|
||||
timeTravelers: [
|
||||
// TODO
|
||||
],
|
||||
|
||||
@@ -277,7 +277,7 @@ spells.special = {
|
||||
target: 'user',
|
||||
notes: t('spellSpecialSnowballAuraNotes'),
|
||||
canOwn () {
|
||||
return moment().isBetween('2022-12-27T08:00-05:00', EVENTS.winter2023.end);
|
||||
return moment().isBetween('2024-01-09T08:00-05:00', EVENTS.winter2024.end);
|
||||
},
|
||||
cast (user, target, req) {
|
||||
if (!user.items.special.snowball) throw new NotAuthorized(t('spellNotOwned')(req.language));
|
||||
@@ -423,7 +423,7 @@ spells.special = {
|
||||
target: 'user',
|
||||
notes: t('nyeCardNotes'),
|
||||
canOwn () {
|
||||
return moment().isBetween('2022-12-28T08:00-05:00', '2023-01-02T20:00-05:00');
|
||||
return moment().isBetween(EVENTS.nye2023.start, EVENTS.nye2023.end);
|
||||
},
|
||||
cast (user, target) {
|
||||
if (user === target) {
|
||||
|
||||
Reference in New Issue
Block a user