feat(event): March-April goodness

This commit is contained in:
Sabe Jones
2021-03-23 11:58:21 -05:00
parent cd87d7d605
commit 676a9348d0
86 changed files with 10901 additions and 10557 deletions

View File

@@ -535,24 +535,12 @@ describe('PUT /tasks/:id', () => {
}); });
expect(savedMonthly.nextDue.length).to.eql(6); expect(savedMonthly.nextDue.length).to.eql(6);
expect(moment(savedMonthly.nextDue[0]).toDate()).to.eql( expect(moment(savedMonthly.nextDue[0]).isSame(moment(date2).add(1, 'months').startOf('day')));
moment(date2).add(1, 'months').startOf('day').toDate(), expect(moment(savedMonthly.nextDue[1]).isSame(moment(date2).add(2, 'months').startOf('day')));
); expect(moment(savedMonthly.nextDue[2]).isSame(moment(date2).add(3, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[1]).toDate()).to.eql( expect(moment(savedMonthly.nextDue[3]).isSame(moment(date2).add(4, 'months').startOf('day')));
moment(date2).add(2, 'months').startOf('day').toDate(), expect(moment(savedMonthly.nextDue[4]).isSame(moment(date2).add(5, 'months').startOf('day')));
); expect(moment(savedMonthly.nextDue[5]).isSame(moment(date2).add(6, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[2]).toDate()).to.eql(
moment(date2).add(3, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[3]).toDate()).to.eql(
moment(date2).add(4, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[4]).toDate()).to.eql(
moment(date2).add(5, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[5]).toDate()).to.eql(
moment(date2).add(6, 'months').startOf('day').toDate(),
);
}); });
}); });

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,132 +1,174 @@
.quest_bronze { .quest_atom2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1333px -1332px;
width: 207px;
height: 138px;
}
.quest_atom3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -211px -1534px;
width: 216px;
height: 180px;
}
.quest_axolotl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px 0px; background-position: -220px 0px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_bunny { .quest_badger {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1546px;
width: 210px;
height: 186px;
}
.quest_butterfly {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px 0px; background-position: -440px 0px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_cheetah { .quest_basilist {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -642px -1534px;
width: 189px;
height: 141px;
}
.quest_beetle {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1332px;
width: 204px;
height: 201px;
}
.quest_blackPearl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -214px;
width: 216px;
height: 216px;
}
.quest_bronze {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -232px; background-position: 0px -232px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_cow { .quest_bunny {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px 0px; background-position: 0px -1534px;
width: 174px;
height: 213px;
}
.quest_dilatory {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_dilatoryDistress1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -222px -1332px;
width: 210px; width: 210px;
height: 210px; height: 186px;
} }
.quest_dilatoryDistress2 { .quest_butterfly {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -422px;
width: 150px;
height: 150px;
}
.quest_dilatoryDistress3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px 0px;
width: 219px;
height: 219px;
}
.quest_dilatory_derby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -232px; background-position: -220px -232px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_dolphin { .quest_cheetah {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_cow {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px 0px;
width: 174px;
height: 213px;
}
.quest_dilatory {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -220px; background-position: -660px -220px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_dustbunnies { .quest_dilatoryDistress1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -1112px;
width: 210px;
height: 210px;
}
.quest_dilatoryDistress2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px -422px;
width: 150px;
height: 150px;
}
.quest_dilatoryDistress3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -452px; background-position: 0px -452px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_egg { .quest_dilatory_derby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -214px; background-position: -660px 0px;
width: 165px; width: 219px;
height: 207px; height: 219px;
} }
.quest_evilsanta { .quest_dolphin {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -724px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -452px; background-position: -220px -452px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_falcon { .quest_dustbunnies {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -452px; background-position: -440px -452px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_ferret { .quest_egg {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px -214px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px -724px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -452px; background-position: -660px -452px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_fluorite { .quest_falcon {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px 0px; background-position: -880px 0px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_frog { .quest_ferret {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1332px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -220px; background-position: -880px -220px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_goldenknight1 { .quest_fluorite {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -440px; background-position: -880px -440px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_frog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px 0px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -672px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -672px;
width: 219px;
height: 219px;
}
.quest_goldenknight2 { .quest_goldenknight2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -211px -1546px; background-position: -1082px -1332px;
width: 250px; width: 250px;
height: 150px; height: 150px;
} }
@@ -138,253 +180,211 @@
} }
.quest_gryphon { .quest_gryphon {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -876px -1332px; background-position: -648px -1332px;
width: 216px; width: 216px;
height: 177px; height: 177px;
} }
.quest_guineapig { .quest_guineapig {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -672px; background-position: -440px -672px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_harpy { .quest_harpy {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -672px; background-position: -660px -672px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_hedgehog { .quest_hedgehog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -433px -1332px; background-position: -205px -1332px;
width: 219px; width: 219px;
height: 186px; height: 186px;
} }
.quest_hippo { .quest_hippo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -672px; background-position: -880px -672px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_horse { .quest_horse {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -672px; background-position: -1100px 0px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_kangaroo { .quest_kangaroo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -672px; background-position: -1100px -220px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_kraken { .quest_kraken {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1093px -1332px; background-position: -865px -1332px;
width: 216px; width: 216px;
height: 177px; height: 177px;
} }
.quest_lostMasterclasser1 { .quest_lostMasterclasser1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px 0px; background-position: -1100px -440px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_lostMasterclasser2 { .quest_lostMasterclasser2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -220px; background-position: -1100px -660px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_lostMasterclasser3 { .quest_lostMasterclasser3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -440px; background-position: 0px -892px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_mayhemMistiflying1 { .quest_mayhemMistiflying1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -573px; background-position: -1762px -573px;
width: 150px; width: 150px;
height: 150px; height: 150px;
} }
.quest_mayhemMistiflying2 { .quest_mayhemMistiflying2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -660px; background-position: -220px -892px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_mayhemMistiflying3 { .quest_mayhemMistiflying3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -892px; background-position: -440px -892px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_monkey { .quest_monkey {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -892px; background-position: -660px -892px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_moon1 { .quest_moon1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -220px; background-position: -1540px -431px;
width: 216px; width: 216px;
height: 216px; height: 216px;
} }
.quest_moon2 { .quest_moon2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -892px; background-position: -880px -892px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_moon3 { .quest_moon3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -892px; background-position: -1100px -892px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_moonstone1 { .quest_moonstone1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -892px; background-position: -1320px 0px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_moonstone2 { .quest_moonstone2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -892px; background-position: -1320px -220px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_moonstone3 { .quest_moonstone3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px 0px; background-position: -1320px -440px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_nudibranch { .quest_nudibranch {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -437px; background-position: -1540px -648px;
width: 216px; width: 216px;
height: 216px; height: 216px;
} }
.quest_octopus { .quest_octopus {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -653px -1332px; background-position: -425px -1332px;
width: 222px; width: 222px;
height: 177px; height: 177px;
} }
.quest_owl { .quest_owl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -220px; background-position: -1320px -660px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_peacock { .quest_peacock {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -654px; background-position: -1540px -865px;
width: 216px; width: 216px;
height: 216px; height: 216px;
} }
.quest_penguin { .quest_penguin {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1733px; background-position: 0px -1721px;
width: 190px; width: 190px;
height: 183px; height: 183px;
} }
.quest_pterodactyl { .quest_pterodactyl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -440px; background-position: -1320px -880px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_rat { .quest_rat {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -660px; background-position: 0px -1112px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_robot { .quest_robot {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -880px; background-position: -220px -1112px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_rock { .quest_rock {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -871px; background-position: -1540px -1082px;
width: 216px; width: 216px;
height: 216px; height: 216px;
} }
.quest_rooster { .quest_rooster {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1527px -1332px; background-position: -428px -1534px;
width: 213px; width: 213px;
height: 174px; height: 174px;
} }
.quest_ruby { .quest_ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1112px; background-position: -440px -1112px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_sabretooth { .quest_sabretooth {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -1112px; background-position: -660px -1112px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_seaserpent { .quest_seaserpent {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -1112px; background-position: -880px -1112px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_sheep { .quest_sheep {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -1112px;
width: 219px;
height: 219px;
}
.quest_silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -1112px;
width: 219px;
height: 219px;
}
.quest_slime {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png'); background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -1112px; background-position: -1100px -1112px;
width: 219px; width: 219px;
height: 219px; height: 219px;
} }
.quest_sloth {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -1112px;
width: 219px;
height: 219px;
}
.quest_snail {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -1088px;
width: 219px;
height: 213px;
}
.quest_snake {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1310px -1332px;
width: 216px;
height: 177px;
}
.quest_spider {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -462px -1546px;
width: 250px;
height: 150px;
}
.quest_squirrel {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px 0px;
width: 219px;
height: 219px;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 KiB

After

Width:  |  Height:  |  Size: 378 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 172 KiB

View File

@@ -213,10 +213,9 @@ export default {
}), }),
eventName () { eventName () {
if ( if (
!this.currentEvent || !this.currentEvent.event !this.currentEvent || !this.currentEvent.event || !this.currentEvent.gear
|| this.currentEvent.season === 'normal' || this.currentEvent.season === 'valentines'
) return null; ) return null;
return this.currentEvent.event.replace('NoPromo', ''); return this.currentEvent.event;
}, },
}, },
methods: { methods: {

View File

@@ -81,7 +81,7 @@
<span <span
v-if="member.items.currentPet" v-if="member.items.currentPet"
class="current-pet" class="current-pet"
:class="'Pet-' + member.items.currentPet" :class="petClass"
></span> ></span>
</template> </template>
</div> </div>
@@ -121,9 +121,15 @@
.offset-kangaroo { .offset-kangaroo {
margin-top: 24px; margin-top: 24px;
} }
.invert {
filter: invert(100%);
}
</style> </style>
<script> <script>
import some from 'lodash/some';
import moment from 'moment';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import ClassBadge from '@/components/members/classBadge'; import ClassBadge from '@/components/members/classBadge';
@@ -174,6 +180,7 @@ export default {
computed: { computed: {
...mapState({ ...mapState({
flatGear: 'content.gear.flat', flatGear: 'content.gear.flat',
currentEventList: 'worldState.data.currentEventList',
}), }),
hasClass () { hasClass () {
return this.$store.getters['members:hasClass'](this.member); return this.$store.getters['members:hasClass'](this.member);
@@ -233,6 +240,15 @@ export default {
return null; return null;
}, },
petClass () {
if (some(
this.currentEventList,
event => moment().isBetween(event.start, event.end) && event.aprilFools && event.aprilFools === 'invert',
)) {
return `Pet-${this.member.items.currentPet} invert`;
}
return `Pet-${this.member.items.currentPet}`;
},
}, },
methods: { methods: {
getGearClass (gearType) { getGearClass (gearType) {

View File

@@ -103,9 +103,15 @@
transform: scale(1.2); transform: scale(1.2);
} }
} }
.invert {
filter: invert(100%);
}
</style> </style>
<script> <script>
import some from 'lodash/some';
import moment from 'moment';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import { import {
@@ -141,6 +147,7 @@ export default {
computed: { computed: {
...mapState({ ...mapState({
userItems: 'user.data.items', userItems: 'user.data.items',
currentEventList: 'worldState.data.currentEventList',
}), }),
potionClass () { potionClass () {
return `Pet_HatchingPotion_${this.item.potionKey}`; return `Pet_HatchingPotion_${this.item.potionKey}`;
@@ -160,6 +167,13 @@ export default {
return isAllowedToFeed(this.item, this.userItems); return isAllowedToFeed(this.item, this.userItems);
}, },
getPetItemClass () { getPetItemClass () {
if (this.isOwned() && some(
this.currentEventList,
event => moment().isBetween(event.start, event.end) && event.aprilFools && event.aprilFools === 'invert',
)) {
return `Pet Pet-${this.item.key} ${this.item.eggKey} invert`;
}
if (this.isOwned() || (this.mountOwned() && this.isHatchable())) { if (this.isOwned() || (this.mountOwned() && this.isHatchable())) {
return `Pet Pet-${this.item.key} ${this.item.eggKey}`; return `Pet Pet-${this.item.key} ${this.item.eggKey}`;
} }

View File

@@ -389,6 +389,15 @@
"headSpecialNye2020Text": "Extravagant Party Hat", "headSpecialNye2020Text": "Extravagant Party Hat",
"headSpecialNye2020Notes": "You've received an Extravagant Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.", "headSpecialNye2020Notes": "You've received an Extravagant Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
"weaponSpecialSpring2021RogueText": "Twin Flower Bloom",
"weaponSpecialSpring2021RogueNotes": "You know what's better than dual-wielding flowers? QUADRUPLE wielding flowers! Increases Strength by <%= str %>. Limited Edition 2021 Spring Gear.",
"weaponSpecialSpring2021WarriorText": "Hammer of the Sun",
"weaponSpecialSpring2021WarriorNotes": "Harness the power of the sun against your enemies, and let the sunstone bring you luck! Increases Strength by <%= str %>. Limited Edition 2021 Spring Gear.",
"weaponSpecialSpring2021MageText": "Swan Plume",
"weaponSpecialSpring2021MageNotes": "Throw, beat, treadle, rest! Swish this magnificent feather in time to conduct the music of your magic. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"weaponSpecialSpring2021HealerText": "Willow Branch",
"weaponSpecialSpring2021HealerNotes": "The bark and leaves of this fresh cutting are known for their ability to relieve pain. Or you can plant it and watch it grow! Increases Intelligence by <%= int %>. Limited Edition 2021 Spring Gear.",
"weaponMystery201411Text": "Pitchfork of Feasting", "weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.", "weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth", "weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -908,6 +917,15 @@
"armorSpecialWinter2021HealerText": "Arctic Parka", "armorSpecialWinter2021HealerText": "Arctic Parka",
"armorSpecialWinter2021HealerNotes": "Defy the chill winds with the best protection available north of the Circle! Increases Constitution by <%= con %>. Limited Edition 2020-2021 Winter Gear.", "armorSpecialWinter2021HealerNotes": "Defy the chill winds with the best protection available north of the Circle! Increases Constitution by <%= con %>. Limited Edition 2020-2021 Winter Gear.",
"armorSpecialSpring2021RogueText": "Twin Flower Stem",
"armorSpecialSpring2021RogueNotes": "No one will see you waiting in amBUSH with this cunning armor; you look like a plant from every angle. Increases Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"armorSpecialSpring2021WarriorText": "Armor of the Sun",
"armorSpecialSpring2021WarriorNotes": "Be careful you don't dazzle yourself as this sunstone armor catches the light! Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"armorSpecialSpring2021MageText": "White Swan's Splendor",
"armorSpecialSpring2021MageNotes": "Your transformation is complete! Take to the sky, or to the lake, and sing for joy! Increases Intelligence by <%= int %>. Limited Edition 2021 Spring Gear.",
"armorSpecialSpring2021HealerText": "Willow Bark Coat",
"armorSpecialSpring2021HealerNotes": "This armor helps you bend instead of break when buffeted by wind or weapon. Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"armorMystery201402Text": "Messenger Robes", "armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.", "armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor", "armorMystery201403Text": "Forest Walker Armor",
@@ -1528,6 +1546,15 @@
"headSpecialWinter2021HealerText": "Arctic Exploration Headgear", "headSpecialWinter2021HealerText": "Arctic Exploration Headgear",
"headSpecialWinter2021HealerNotes": "A surprising amount of heat escapes through the head! Not if you're wearing this thick hood and goggles, though. There'll be no icicles on YOUR eyelashes! Increases Intelligence by <%= int %>. Limited Edition 2020-2021 Winter Gear.", "headSpecialWinter2021HealerNotes": "A surprising amount of heat escapes through the head! Not if you're wearing this thick hood and goggles, though. There'll be no icicles on YOUR eyelashes! Increases Intelligence by <%= int %>. Limited Edition 2020-2021 Winter Gear.",
"headSpecialSpring2021RogueText": "Twin Flower Hat",
"headSpecialSpring2021RogueNotes": "Let's keep the flowery language to a minimum: this hat will help you blend in with the spring flowers! Increases Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"headSpecialSpring2021WarriorText": "Helm of the Sun",
"headSpecialSpring2021WarriorNotes": "Don't fear! The sunstone in this helm will help you bring to light those deepest, darkest red to-dos. Increases Strength by <%= str %>. Limited Edition 2021 Spring Gear.",
"headSpecialSpring2021MageText": "Cygnet Circlet",
"headSpecialSpring2021MageNotes": "Set this airy crown upon your brow, and the birds of the water will come attend to you. To what quest will you call them? Increases Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"headSpecialSpring2021HealerText": "Salix Wreath",
"headSpecialSpring2021HealerNotes": "Weep not, friends! A Healer is here to soothe your suffering! Increases Intelligence by <%= int %>. Limited Edition 2021 Spring Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm", "headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.", "headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -2005,6 +2032,11 @@
"shieldSpecialWinter2021HealerText": "Arctic Armguards", "shieldSpecialWinter2021HealerText": "Arctic Armguards",
"shieldSpecialWinter2021HealerNotes": "These mighty mitts stop weapons cold. Increases Constitution by <%= con %>. Limited Edition 2020-2021 Winter Gear.", "shieldSpecialWinter2021HealerNotes": "These mighty mitts stop weapons cold. Increases Constitution by <%= con %>. Limited Edition 2020-2021 Winter Gear.",
"shieldSpecialSpring2021WarriorText": "Shield of the Sun",
"shieldSpecialSpring2021WarriorNotes": "The beauty in this roughly-shaped sunstone will shine even in the deepest caves and darkest dungeons. Hold it high! Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"shieldSpecialSpring2021HealerText": "Salicylic Shield",
"shieldSpecialSpring2021HealerNotes": "A leafy green bundle that heralds shelter and compassion. Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"shieldMystery201601Text": "Resolution Slayer", "shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.", "shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield", "shieldMystery201701Text": "Time-Freezer Shield",

View File

@@ -163,6 +163,10 @@
"winter2021WinterMoonMageSet": "Winter Moon (Mage)", "winter2021WinterMoonMageSet": "Winter Moon (Mage)",
"winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)", "winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)",
"winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)", "winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)",
"spring2021SunstoneWarriorSet": "Sunstone (Warrior)",
"spring2021SwanMageSet": "Swan (Mage)",
"spring2021WillowHealerSet": "Willow (Healer)",
"spring2021TwinFlowerRogueSet": "Twin Flower (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailability": "Available for purchase until <%= date(locale) %>.",
"eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.", "eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.",
"dateEndMarch": "April 30", "dateEndMarch": "April 30",

View File

@@ -10,19 +10,35 @@ const gemsPromo = {
export const EVENTS = { export const EVENTS = {
noCurrentEvent2021: { noCurrentEvent2021: {
start: '2021-02-16T08:00-05:00', start: '2021-04-30T08:00-05:00',
end: '2021-03-23T08:00-05:00', end: '2021-08-23T08:00-05:00',
season: 'normal', season: 'normal',
npcImageSuffix: '',
},
spring2021: {
start: '2021-03-23T08:00-05:00',
end: '2021-04-30T20:00-05:00',
npcImageSuffix: 'spring',
season: 'spring',
gear: true,
},
aprilFools2021: {
start: '2021-04-01T08:00-05:00',
end: '2021-04-02T08:00-05:00',
aprilFools: 'invert',
}, },
valentines2021: { valentines2021: {
start: '2021-02-07T08:00-05:00', start: '2021-02-07T08:00-05:00',
end: '2021-02-16T08:00-05:00', end: '2021-02-16T08:00-05:00',
season: 'valentines', season: 'valentines',
npcImageSuffix: 'valentines',
}, },
winter2021: { winter2021: {
start: '2020-12-17T08:00-05:00', start: '2020-12-17T08:00-05:00',
end: '2021-01-31T20:00-05:00', end: '2021-01-31T20:00-05:00',
season: 'winter', season: 'winter',
npcImageSuffix: 'winter',
gear: true,
}, },
winter2021Promo: { // used in tests, not an actual past event winter2021Promo: { // used in tests, not an actual past event
start: '2020-12-01T08:00-05:00', start: '2020-12-01T08:00-05:00',
@@ -30,45 +46,41 @@ export const EVENTS = {
season: 'winter', season: 'winter',
promo: 'g1g1', promo: 'g1g1',
}, },
noCurrentEvent2020: {
start: '2020-10-31T20:00-05:00',
end: '2020-12-17T08:00-05:00',
season: 'normal',
},
fall2020: { fall2020: {
start: '2020-09-22T08:00-04:00', start: '2020-09-22T08:00-04:00',
end: '2020-10-31T20:00-04:00', end: '2020-10-31T20:00-04:00',
gear: true,
gemsPromo, gemsPromo,
}, },
// Dates from this point on (^) are in the RFC 2822 format, see https://momentjs.com/docs/#/parsing/string/ // Dates from this point on (^) are in the RFC 2822 format, see https://momentjs.com/docs/#/parsing/string/
summer2020: { start: '2020-06-18', end: '2020-08-02' }, summer2020: { start: '2020-06-18', end: '2020-08-02', gear: true },
spring2020: { start: '2020-03-17', end: '2020-05-02' }, spring2020: { start: '2020-03-17', end: '2020-05-02', gear: true },
winter2020: { start: '2019-12-19', end: '2020-02-02' }, winter2020: { start: '2019-12-19', end: '2020-02-02', gear: true },
fall2019: { start: '2019-09-24', end: '2019-11-02' }, fall2019: { start: '2019-09-24', end: '2019-11-02', gear: true },
summer2019: { start: '2019-06-18', end: '2019-08-02' }, summer2019: { start: '2019-06-18', end: '2019-08-02', gear: true },
spring2019: { start: '2019-03-19', end: '2019-05-02' }, spring2019: { start: '2019-03-19', end: '2019-05-02', gear: true },
winter2019: { start: '2018-12-19', end: '2019-02-02' }, winter2019: { start: '2018-12-19', end: '2019-02-02', gear: true },
fall2018: { start: '2018-09-20', end: '2018-11-02' }, fall2018: { start: '2018-09-20', end: '2018-11-02', gear: true },
summer2018: { start: '2018-06-19', end: '2018-08-02' }, summer2018: { start: '2018-06-19', end: '2018-08-02', gear: true },
spring2018: { start: '2018-03-20', end: '2018-05-02' }, spring2018: { start: '2018-03-20', end: '2018-05-02', gear: true },
winter2018: { start: '2017-12-19', end: '2018-02-02' }, winter2018: { start: '2017-12-19', end: '2018-02-02', gear: true },
fall2017: { start: '2017-09-21', end: '2017-11-02' }, fall2017: { start: '2017-09-21', end: '2017-11-02', gear: true },
summer2017: { start: '2017-06-20', end: '2017-08-02' }, summer2017: { start: '2017-06-20', end: '2017-08-02', gear: true },
spring2017: { start: '2017-03-21', end: '2017-05-02' }, spring2017: { start: '2017-03-21', end: '2017-05-02', gear: true },
winter2017: { start: '2016-12-16', end: '2017-02-02' }, winter2017: { start: '2016-12-16', end: '2017-02-02', gear: true },
fall2016: { start: '2016-09-20', end: '2016-11-02' }, fall2016: { start: '2016-09-20', end: '2016-11-02', gear: true },
summer2016: { start: '2016-06-21', end: '2016-08-02' }, summer2016: { start: '2016-06-21', end: '2016-08-02', gear: true },
spring2016: { start: '2016-03-18', end: '2016-05-02' }, spring2016: { start: '2016-03-18', end: '2016-05-02', gear: true },
winter2016: { start: '2015-12-18', end: '2016-02-02' }, winter2016: { start: '2015-12-18', end: '2016-02-02', gear: true },
gaymerx: { start: '2016-09-29', end: '2016-10-03' }, gaymerx: { start: '2016-09-29', end: '2016-10-03' },
fall2015: { start: '2015-09-21', end: '2015-11-01' }, fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true },
summer2015: { start: '2015-06-20', end: '2015-08-02' }, summer2015: { start: '2015-06-20', end: '2015-08-02', gear: true },
spring2015: { start: '2015-03-20', end: '2015-05-02' }, spring2015: { start: '2015-03-20', end: '2015-05-02', gear: true },
winter2015: { start: '2014-12-21', end: '2015-02-02' }, winter2015: { start: '2014-12-21', end: '2015-02-02', gear: true },
fall: { start: '2014-09-21', end: '2014-11-01' }, fall: { start: '2014-09-21', end: '2014-11-01', gear: true },
summer: { start: '2014-06-20', end: '2014-08-01' }, summer: { start: '2014-06-20', end: '2014-08-01', gear: true },
spring: { start: '2014-03-21', end: '2014-05-01' }, spring: { start: '2014-03-21', end: '2014-05-01', gear: true },
birthday: { start: '2017-01-31', end: '2017-02-02' }, birthday: { start: '2017-01-31', end: '2017-02-02' },
winter: { start: '2013-12-31', end: '2014-02-01' }, winter: { start: '2013-12-31', end: '2014-02-01' },
}; };

View File

@@ -86,11 +86,16 @@ const SEASONAL_SETS = {
'spring2019RobinHealerSet', 'spring2019RobinHealerSet',
// spring 2020 // spring 2020
'spring2020BeetleWarriorSet', 'spring2020BeetleWarriorSet',
'spring2020IrisHealerSet', 'spring2020IrisHealerSet',
'spring2020LapisLazuliRogueSet', 'spring2020LapisLazuliRogueSet',
'spring2020PuddleMageSet', 'spring2020PuddleMageSet',
// spring 2021
'spring2021SwanMageSet',
'spring2021WillowHealerSet',
'spring2021SunstoneWarriorSet',
'spring2021TwinFlowerRogueSet',
], ],
summer: [ summer: [
// summer 2014 // summer 2014

View File

@@ -1,5 +1,5 @@
import moment from 'moment'; import moment from 'moment';
import cloneDeep from 'lodash/cloneDeep'; import pickBy from 'lodash/pickBy';
import defaults from 'lodash/defaults'; import defaults from 'lodash/defaults';
import find from 'lodash/find'; import find from 'lodash/find';
import upperFirst from 'lodash/upperFirst'; import upperFirst from 'lodash/upperFirst';
@@ -14,12 +14,11 @@ import * as takeThisGear from './special-takeThis';
import * as wonderconGear from './special-wondercon'; import * as wonderconGear from './special-wondercon';
import t from '../../../translation'; import t from '../../../translation';
const CURRENT_EVENT = find(EVENTS, event => moment().isBetween(event.start, event.end)); const CURRENT_EVENT = find(
EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);
const gearEvents = cloneDeep(EVENTS); const gearEvents = pickBy(EVENTS, event => event.gear);
['winter', 'birthday', 'gaymerx', 'noCurrentEvent2020', 'winter2021NoPromo', 'noCurrentEvent2021'].forEach(nonGearEvent => {
delete gearEvents[nonGearEvent];
}); // TODO maybe we can match with regex instead of manually specifying here?
const armor = { const armor = {
0: backerGear.armorSpecial0, 0: backerGear.armorSpecial0,
@@ -664,6 +663,18 @@ const armor = {
value: 0, value: 0,
canOwn: ownsItem('armor_special_birthday2021'), canOwn: ownsItem('armor_special_birthday2021'),
}, },
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Mage: {
set: 'spring2021SwanMageSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
}; };
const armorStats = { const armorStats = {
@@ -1671,6 +1682,18 @@ const head = {
value: 0, value: 0,
canOwn: ownsItem('head_special_nye2020'), canOwn: ownsItem('head_special_nye2020'),
}, },
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Mage: {
set: 'spring2021SwanMageSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
}; };
const headStats = { const headStats = {
@@ -2403,6 +2426,15 @@ const shield = {
winter2021Healer: { winter2021Healer: {
set: 'winter2021ArcticExplorerHealerSet', set: 'winter2021ArcticExplorerHealerSet',
}, },
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
}; };
const shieldStats = { const shieldStats = {
@@ -3025,6 +3057,18 @@ const weapon = {
winter2021Healer: { winter2021Healer: {
set: 'winter2021ArcticExplorerHealerSet', set: 'winter2021ArcticExplorerHealerSet',
}, },
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Mage: {
set: 'spring2021SwanMageSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
}; };
const weaponStats = { const weaponStats = {

View File

@@ -6,7 +6,9 @@ import {
SEASONAL_SETS, SEASONAL_SETS,
} from '../content/constants'; } from '../content/constants';
const CURRENT_EVENT = find(EVENTS, event => moment().isBetween(event.start, event.end)); const CURRENT_EVENT = find(
EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);
const SHOP_OPEN = CURRENT_EVENT && ['winter', 'spring', 'summer', 'fall'].includes(CURRENT_EVENT.season); const SHOP_OPEN = CURRENT_EVENT && ['winter', 'spring', 'summer', 'fall'].includes(CURRENT_EVENT.season);
@@ -15,35 +17,37 @@ export default {
currentSeason: SHOP_OPEN ? upperFirst(CURRENT_EVENT.season) : 'Closed', currentSeason: SHOP_OPEN ? upperFirst(CURRENT_EVENT.season) : 'Closed',
dateRange: { start: '2020-12-17', end: '2021-01-31' }, dateRange: {
start: moment(CURRENT_EVENT.start).format('YYYY-MM-DD'),
end: moment(CURRENT_EVENT.end).format('YYYY-MM-DD'),
},
availableSets: SHOP_OPEN availableSets: SHOP_OPEN
? [ ? [
...SEASONAL_SETS.winter, ...SEASONAL_SETS[CURRENT_EVENT.season],
] ]
: [], : [],
pinnedSets: SHOP_OPEN pinnedSets: SHOP_OPEN
? { ? {
healer: 'winter2021ArcticExplorerHealerSet', healer: 'spring2021WillowHealerSet',
rogue: 'winter2021HollyIvyRogueSet', rogue: 'spring2021TwinFlowerRogueSet',
warrior: 'winter2021IceFishingWarriorSet', warrior: 'spring2021SunstoneWarriorSet',
wizard: 'winter2021WinterMoonMageSet', wizard: 'spring2021SwanMageSet',
} }
: {}, : {},
availableSpells: moment().isBetween('2020-12-29T08:00-04:00', '2021-01-31T20:00-04:00') availableSpells: moment().isBetween('2021-04-06T08:00-05:00', '2021-04-30T20:00-05:00')
? [ ? [
'snowball', 'shinySeed',
] ]
: [], : [],
availableQuests: SHOP_OPEN availableQuests: SHOP_OPEN && moment().isAfter('2021-03-30T08:00-05:00')
? [ ? [
'evilsanta', 'egg',
'evilsanta2',
] ]
: [], : [],
featuredSet: 'winter2020CarolOfTheMageSet', featuredSet: 'spring2020PuddleMageSet',
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 B

View File

@@ -1,5 +1,6 @@
import { import {
getCurrentEvent, getCurrentEvent,
getCurrentEventList,
getWorldBoss, getWorldBoss,
} from '../../libs/worldState'; } from '../../libs/worldState';
@@ -29,9 +30,10 @@ api.getWorldState = {
const worldState = {}; const worldState = {};
worldState.worldBoss = await getWorldBoss(); worldState.worldBoss = await getWorldBoss();
worldState.npcImageSuffix = '';
worldState.currentEvent = getCurrentEvent(); worldState.currentEvent = getCurrentEvent();
worldState.npcImageSuffix = worldState.currentEvent ? worldState.currentEvent.npcImageSuffix : '';
worldState.currentEventList = getCurrentEventList();
res.respond(200, worldState); res.respond(200, worldState);
}, },

View File

@@ -1,3 +1,4 @@
import filter from 'lodash/filter';
import moment from 'moment'; import moment from 'moment';
import { // eslint-disable-line import/no-cycle import { // eslint-disable-line import/no-cycle
model as Group, model as Group,
@@ -22,7 +23,7 @@ export function getCurrentEvent () {
const now = moment(); const now = moment();
return now.isBetween(event.start, event.end); return now.isBetween(event.start, event.end) && Boolean(event.npcImageSuffix);
}); });
if (!currEvtKey) return null; if (!currEvtKey) return null;
@@ -31,3 +32,22 @@ export function getCurrentEvent () {
...common.content.events[currEvtKey], ...common.content.events[currEvtKey],
}; };
} }
export function getCurrentEventList () {
const currentEventKeys = filter(Object.keys(common.content.events), eventKey => {
const eventData = common.content.events[eventKey];
return moment().isBetween(eventData.start, eventData.end);
});
const currentEventList = [];
currentEventKeys.forEach(key => {
currentEventList.push({
event: key,
...common.content.events[key],
});
});
return currentEventList;
}