Merge remote-tracking branch 'origin/develop' into negue/ui/setting

# Conflicts:
#	package-lock.json
#	website/client/src/components/settings/site.vue
#	website/client/src/components/tasks/column.vue
#	website/server/models/user/schema.js
This commit is contained in:
negue
2023-05-30 19:54:06 +02:00
45 changed files with 1186 additions and 731 deletions
@@ -178,6 +178,11 @@ const animalSetAchievs = {
titleKey: 'achievementBirdsOfAFeather',
textKey: 'achievementBirdsOfAFeatherText',
},
dinosaurDynasty: {
icon: 'achievement-dinosaurDynasty',
titleKey: 'achievementDinosaurDynasty',
textKey: 'achievementDinosaurDynastyText',
},
domesticated: {
icon: 'achievement-domesticated',
titleKey: 'achievementDomesticated',
+2 -2
View File
@@ -178,9 +178,9 @@ const bundles = {
'penguin',
'rooster',
],
event: EVENTS.bundle202109,
event: EVENTS.bundle202305,
canBuy () {
return moment().isBefore(EVENTS.bundle202109.end);
return moment().isBefore(EVENTS.bundle202305.end);
},
type: 'quests',
value: 7,
@@ -26,6 +26,23 @@ const ANIMAL_SET_ACHIEVEMENTS = {
achievementKey: 'birdsOfAFeather',
notificationType: 'ACHIEVEMENT_ANIMAL_SET',
},
dinosaurDynasty: {
type: 'pet',
species: [
'Falcon',
'Owl',
'Parrot',
'Peacock',
'Penguin',
'Rooster',
'Pterodactyl',
'TRex',
'Triceratops',
'Velociraptor',
],
achievementKey: 'dinosaurDynasty',
notificationType: 'ACHIEVEMENT_ANIMAL_SET',
},
domesticated: {
type: 'pet',
species: [
@@ -10,11 +10,19 @@ const gemsPromo = {
export const EVENTS = {
noEvent: {
start: '2023-05-01T23:59-04:00',
start: '2023-05-31T23:59-04:00',
end: '2023-06-22T08:00-04:00',
season: 'normal',
npcImageSuffix: '',
},
bundle202305: {
start:'2023-05-23T08:00-04:00',
end:'2023-05-31T23:59-04:00',
},
potions202305: {
start:'2023-05-16T08:00-04:00',
end:'2023-05-31T23:59-04:00',
},
aprilFools2023: {
start: '2023-04-01T08:00-04:00',
end: '2023-04-02T08:00-04:00',
@@ -88,26 +88,26 @@ const premium = {
value: 2,
text: t('hatchingPotionFairy'),
limited: true,
event: EVENTS.potions202105,
event: EVENTS.potions202305,
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndMay'),
previousDate: t('mayYYYY', { year: 2020 }),
previousDate: t('mayYYYY', { year: 2021 }),
}),
canBuy () {
return moment().isBefore(EVENTS.potions202105.end);
return moment().isBefore(EVENTS.potions202305.end);
},
},
Floral: {
value: 2,
text: t('hatchingPotionFloral'),
limited: true,
event: EVENTS.potions202205,
event: EVENTS.potions202305,
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndMay'),
previousDate: t('mayYYYY', { year: 2021 }),
previousDate: t('mayYYYY', { year: 2022 }),
}),
canBuy () {
return moment().isBefore(EVENTS.potions202205.end);
return moment().isBefore(EVENTS.potions202305.end);
},
},
Aquatic: {
@@ -5,7 +5,7 @@ import { EVENTS } from './constants';
// path: 'premiumHatchingPotions.Rainbow',
const featuredItems = {
market () {
if (moment().isBetween(EVENTS.spring2023.start, EVENTS.spring2023.end)) {
if (moment().isBetween(EVENTS.potions202305.start, EVENTS.potions202305.end)) {
return [
{
type: 'armoire',
@@ -13,15 +13,15 @@ const featuredItems = {
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.PolkaDot',
path: 'premiumHatchingPotions.Fairy',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.BirchBark',
path: 'premiumHatchingPotions.Floral',
},
{
type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Rainbow',
type: 'hatchingPotions',
path: 'hatchingPotions.Golden',
},
];
}
@@ -45,19 +45,19 @@ const featuredItems = {
];
},
quests () { // start date is 3/28
if (moment().isBetween(EVENTS.bundle202303.start, EVENTS.bundle202303.end)) {
if (moment().isBetween(EVENTS.bundle202305.start, EVENTS.bundle202305.end)) {
return [
{
type: 'bundles',
path: 'bundles.jungleBuddies',
path: 'bundles.birdBuddies',
},
{
type: 'quests',
path: 'quests.kraken',
path: 'quests.harpy',
},
{
type: 'quests',
path: 'quests.nudibranch',
path: 'quests.owl',
},
];
}
+25 -37
View File
@@ -77,13 +77,11 @@ spells.wizard = {
lvl: 12,
target: 'party',
notes: t('spellWizardMPHealNotes'),
cast (user, target) {
each(target, member => {
const bonus = statsComputed(user).int;
if (user._id !== member._id && member.stats.class !== 'wizard') {
member.stats.mp += Math.ceil(diminishingReturns(bonus, 25, 125));
}
});
bulk: true,
cast (user, data) {
const bonus = statsComputed(user).int;
data.query['stats.class'] = { $ne: 'wizard' };
data.update = { $inc: { 'stats.mp': Math.ceil(diminishingReturns(bonus, 25, 125)) } };
},
},
earth: { // Earthquake
@@ -92,12 +90,10 @@ spells.wizard = {
lvl: 13,
target: 'party',
notes: t('spellWizardEarthNotes'),
cast (user, target) {
each(target, member => {
const bonus = statsComputed(user).int - user.stats.buffs.int;
if (!member.stats.buffs.int) member.stats.buffs.int = 0;
member.stats.buffs.int += Math.ceil(diminishingReturns(bonus, 30, 200));
});
bulk: true,
cast (user, data) {
const bonus = statsComputed(user).int - user.stats.buffs.int;
data.update = { $inc: { 'stats.buffs.int': Math.ceil(diminishingReturns(bonus, 30, 200)) } };
},
},
frost: { // Chilling Frost
@@ -147,12 +143,10 @@ spells.warrior = {
lvl: 13,
target: 'party',
notes: t('spellWarriorValorousPresenceNotes'),
cast (user, target) {
each(target, member => {
const bonus = statsComputed(user).str - user.stats.buffs.str;
if (!member.stats.buffs.str) member.stats.buffs.str = 0;
member.stats.buffs.str += Math.ceil(diminishingReturns(bonus, 20, 200));
});
bulk: true,
cast (user, data) {
const bonus = statsComputed(user).str - user.stats.buffs.str;
data.update = { $inc: { 'stats.buffs.str': Math.ceil(diminishingReturns(bonus, 20, 200)) } };
},
},
intimidate: { // Intimidating Gaze
@@ -161,12 +155,10 @@ spells.warrior = {
lvl: 14,
target: 'party',
notes: t('spellWarriorIntimidateNotes'),
cast (user, target) {
each(target, member => {
const bonus = statsComputed(user).con - user.stats.buffs.con;
if (!member.stats.buffs.con) member.stats.buffs.con = 0;
member.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 24, 200));
});
bulk: true,
cast (user, data) {
const bonus = statsComputed(user).con - user.stats.buffs.con;
data.update = { $inc: { 'stats.buffs.con': Math.ceil(diminishingReturns(bonus, 24, 200)) } };
},
},
};
@@ -203,12 +195,10 @@ spells.rogue = {
lvl: 13,
target: 'party',
notes: t('spellRogueToolsOfTradeNotes'),
cast (user, target) {
each(target, member => {
const bonus = statsComputed(user).per - user.stats.buffs.per;
if (!member.stats.buffs.per) member.stats.buffs.per = 0;
member.stats.buffs.per += Math.ceil(diminishingReturns(bonus, 100, 50));
});
bulk: true,
cast (user, data) {
const bonus = statsComputed(user).per - user.stats.buffs.per;
data.update = { $inc: { 'stats.buffs.per': Math.ceil(diminishingReturns(bonus, 100, 50)) } };
},
},
stealth: { // Stealth
@@ -257,12 +247,10 @@ spells.healer = {
lvl: 13,
target: 'party',
notes: t('spellHealerProtectAuraNotes'),
cast (user, target) {
each(target, member => {
const bonus = statsComputed(user).con - user.stats.buffs.con;
if (!member.stats.buffs.con) member.stats.buffs.con = 0;
member.stats.buffs.con += Math.ceil(diminishingReturns(bonus, 200, 200));
});
bulk: true,
cast (user, data) {
const bonus = statsComputed(user).con - user.stats.buffs.con;
data.update = { $inc: { 'stats.buffs.con': Math.ceil(diminishingReturns(bonus, 200, 200)) } };
},
},
healAll: { // Blessing