Merge branch 'release' into develop
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"version": "4.31.0",
|
"version": "4.32.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "habitica",
|
"name": "habitica",
|
||||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||||
"version": "4.31.0",
|
"version": "4.32.0",
|
||||||
"main": "./website/server/index.js",
|
"main": "./website/server/index.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@slack/client": "^3.8.1",
|
"@slack/client": "^3.8.1",
|
||||||
|
|||||||
@@ -32,4 +32,11 @@ describe('GET /world-state', () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('returns a string representing the current season for NPC sprites', async () => {
|
||||||
|
const res = await requester().get('/world-state');
|
||||||
|
|
||||||
|
expect(res).to.have.nested.property('npcImageSuffix');
|
||||||
|
expect(res.npcImageSuffix).to.be.a('string');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,78 +1,60 @@
|
|||||||
.promo_armoire_background_201803 {
|
.promo_armoire_background_201803 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: 0px -735px;
|
background-position: -142px -327px;
|
||||||
width: 141px;
|
width: 141px;
|
||||||
height: 441px;
|
height: 441px;
|
||||||
}
|
}
|
||||||
.promo_cupid_potions {
|
.promo_egg_hunt {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: -284px -735px;
|
background-position: -814px 0px;
|
||||||
width: 138px;
|
width: 354px;
|
||||||
height: 441px;
|
height: 147px;
|
||||||
}
|
|
||||||
.promo_dysheartener {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
|
||||||
background-position: -441px 0px;
|
|
||||||
width: 730px;
|
|
||||||
height: 170px;
|
|
||||||
}
|
|
||||||
.promo_hippogriff {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
|
||||||
background-position: -1172px -587px;
|
|
||||||
width: 105px;
|
|
||||||
height: 105px;
|
|
||||||
}
|
}
|
||||||
.promo_hugabug_bundle {
|
.promo_hugabug_bundle {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: -1172px 0px;
|
background-position: -583px -408px;
|
||||||
width: 141px;
|
width: 141px;
|
||||||
height: 441px;
|
height: 441px;
|
||||||
}
|
}
|
||||||
.promo_mystery_201802 {
|
.promo_mystery_201802 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: 0px -327px;
|
background-position: -441px 0px;
|
||||||
width: 372px;
|
width: 372px;
|
||||||
height: 196px;
|
height: 196px;
|
||||||
}
|
}
|
||||||
.promo_rainbow_potions {
|
.promo_rainbow_potions {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: -142px -735px;
|
background-position: -441px -408px;
|
||||||
width: 141px;
|
width: 141px;
|
||||||
height: 441px;
|
height: 441px;
|
||||||
}
|
}
|
||||||
.promo_seasonalshop_broken {
|
.promo_seasonalshop_spring {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: -751px -171px;
|
background-position: -814px -148px;
|
||||||
width: 198px;
|
width: 162px;
|
||||||
height: 147px;
|
height: 138px;
|
||||||
|
}
|
||||||
|
.promo_spring_fling_2018 {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
|
background-position: 0px -327px;
|
||||||
|
width: 141px;
|
||||||
|
height: 588px;
|
||||||
}
|
}
|
||||||
.promo_take_this {
|
.promo_take_this {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: -950px -171px;
|
background-position: -977px -148px;
|
||||||
width: 114px;
|
width: 114px;
|
||||||
height: 87px;
|
height: 87px;
|
||||||
}
|
}
|
||||||
.promo_valentines {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
|
||||||
background-position: -441px -171px;
|
|
||||||
width: 309px;
|
|
||||||
height: 147px;
|
|
||||||
}
|
|
||||||
.scene_achievement {
|
.scene_achievement {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: 0px -524px;
|
background-position: -441px -197px;
|
||||||
width: 339px;
|
width: 339px;
|
||||||
height: 210px;
|
height: 210px;
|
||||||
}
|
}
|
||||||
.scene_coding {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
|
||||||
background-position: -373px -327px;
|
|
||||||
width: 150px;
|
|
||||||
height: 150px;
|
|
||||||
}
|
|
||||||
.scene_sweeping {
|
.scene_sweeping {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||||
background-position: -1172px -442px;
|
background-position: -814px -287px;
|
||||||
width: 138px;
|
width: 138px;
|
||||||
height: 144px;
|
height: 144px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,54 @@
|
|||||||
.quest_TEMPLATE_FOR_MISSING_IMAGE {
|
.quest_TEMPLATE_FOR_MISSING_IMAGE {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -251px -1519px;
|
background-position: -832px -1519px;
|
||||||
width: 221px;
|
width: 221px;
|
||||||
height: 39px;
|
height: 39px;
|
||||||
}
|
}
|
||||||
|
.quest_atom3 {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: -211px -1519px;
|
||||||
|
width: 216px;
|
||||||
|
height: 180px;
|
||||||
|
}
|
||||||
|
.quest_axolotl {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: -1320px -660px;
|
||||||
|
width: 219px;
|
||||||
|
height: 219px;
|
||||||
|
}
|
||||||
|
.quest_badger {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: -220px -892px;
|
||||||
|
width: 219px;
|
||||||
|
height: 219px;
|
||||||
|
}
|
||||||
|
.quest_basilist {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: -642px -1519px;
|
||||||
|
width: 189px;
|
||||||
|
height: 141px;
|
||||||
|
}
|
||||||
|
.quest_beetle {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: -1322px -1112px;
|
||||||
|
width: 204px;
|
||||||
|
height: 201px;
|
||||||
|
}
|
||||||
|
.quest_bunny {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: 0px -1519px;
|
||||||
|
width: 210px;
|
||||||
|
height: 186px;
|
||||||
|
}
|
||||||
|
.quest_butterfly {
|
||||||
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
|
background-position: -440px -232px;
|
||||||
|
width: 219px;
|
||||||
|
height: 219px;
|
||||||
|
}
|
||||||
.quest_cheetah {
|
.quest_cheetah {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -440px -672px;
|
background-position: -660px 0px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
@@ -18,7 +60,7 @@
|
|||||||
}
|
}
|
||||||
.quest_dilatory {
|
.quest_dilatory {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -232px;
|
background-position: -220px -452px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
@@ -30,55 +72,55 @@
|
|||||||
}
|
}
|
||||||
.quest_dilatoryDistress2 {
|
.quest_dilatoryDistress2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -1023px;
|
background-position: -1757px -573px;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
.quest_dilatoryDistress3 {
|
.quest_dilatoryDistress3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -660px 0px;
|
background-position: -880px 0px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_dilatory_derby {
|
.quest_dilatory_derby {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -440px 0px;
|
background-position: 0px -452px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_dustbunnies {
|
.quest_dustbunnies {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -660px -220px;
|
background-position: -880px -220px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_egg {
|
.quest_egg {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -362px;
|
background-position: -1757px -214px;
|
||||||
width: 165px;
|
width: 165px;
|
||||||
height: 207px;
|
height: 207px;
|
||||||
}
|
}
|
||||||
.quest_evilsanta {
|
.quest_evilsanta {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -1174px;
|
background-position: -1757px -1026px;
|
||||||
width: 118px;
|
width: 118px;
|
||||||
height: 131px;
|
height: 131px;
|
||||||
}
|
}
|
||||||
.quest_evilsanta2 {
|
.quest_evilsanta2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -440px -452px;
|
background-position: -220px -672px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_falcon {
|
.quest_falcon {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -660px -452px;
|
background-position: -440px -672px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_ferret {
|
.quest_ferret {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -880px 0px;
|
background-position: -660px -672px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
@@ -90,19 +132,19 @@
|
|||||||
}
|
}
|
||||||
.quest_ghost_stag {
|
.quest_ghost_stag {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -880px -440px;
|
background-position: -1100px 0px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_goldenknight1 {
|
.quest_goldenknight1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -672px;
|
background-position: -1100px -220px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_goldenknight2 {
|
.quest_goldenknight2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1311px -1332px;
|
background-position: -1345px -1332px;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
@@ -120,13 +162,13 @@
|
|||||||
}
|
}
|
||||||
.quest_guineapig {
|
.quest_guineapig {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -880px -672px;
|
background-position: -220px 0px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_harpy {
|
.quest_harpy {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1100px 0px;
|
background-position: -440px -892px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
@@ -138,103 +180,103 @@
|
|||||||
}
|
}
|
||||||
.quest_hippo {
|
.quest_hippo {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1100px -440px;
|
background-position: -880px -892px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_horse {
|
.quest_horse {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1100px -660px;
|
background-position: -1100px -892px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_kraken {
|
.quest_kraken {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -877px -1332px;
|
background-position: -443px -1332px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 177px;
|
height: 177px;
|
||||||
}
|
}
|
||||||
.quest_lostMasterclasser1 {
|
.quest_lostMasterclasser1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -220px -892px;
|
background-position: -1320px -220px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_lostMasterclasser2 {
|
.quest_lostMasterclasser2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -440px -892px;
|
background-position: -1320px -440px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_lostMasterclasser3 {
|
.quest_lostMasterclasser3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -660px -892px;
|
background-position: -1100px -660px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_mayhemMistiflying1 {
|
.quest_mayhemMistiflying1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -570px;
|
background-position: -1757px -875px;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
.quest_mayhemMistiflying2 {
|
.quest_mayhemMistiflying2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1100px -892px;
|
background-position: 0px -1112px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_mayhemMistiflying3 {
|
.quest_mayhemMistiflying3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1320px 0px;
|
background-position: -220px -1112px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_monkey {
|
.quest_monkey {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1320px -220px;
|
background-position: -440px -1112px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_moon1 {
|
.quest_moon1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1540px -651px;
|
background-position: -1540px 0px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 216px;
|
height: 216px;
|
||||||
}
|
}
|
||||||
.quest_moon2 {
|
.quest_moon2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -220px 0px;
|
background-position: -660px -892px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_moon3 {
|
.quest_moon3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1320px -880px;
|
background-position: -880px -672px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_moonstone1 {
|
.quest_moonstone1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -1112px;
|
background-position: 0px -672px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_moonstone2 {
|
.quest_moonstone2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -220px -1112px;
|
background-position: -440px -452px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_moonstone3 {
|
.quest_moonstone3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -440px -1112px;
|
background-position: -660px -220px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_nudibranch {
|
.quest_nudibranch {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1540px -434px;
|
background-position: -1540px -868px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 216px;
|
height: 216px;
|
||||||
}
|
}
|
||||||
@@ -246,67 +288,67 @@
|
|||||||
}
|
}
|
||||||
.quest_owl {
|
.quest_owl {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1320px -660px;
|
background-position: -220px -232px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_peacock {
|
.quest_peacock {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1540px -217px;
|
background-position: -1540px -434px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 216px;
|
height: 216px;
|
||||||
}
|
}
|
||||||
.quest_penguin {
|
.quest_penguin {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -178px;
|
background-position: 0px -1706px;
|
||||||
width: 190px;
|
width: 190px;
|
||||||
height: 183px;
|
height: 183px;
|
||||||
}
|
}
|
||||||
.quest_pterodactyl {
|
.quest_pterodactyl {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1320px -440px;
|
background-position: 0px -232px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_rat {
|
.quest_rat {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -880px -892px;
|
background-position: -660px -1112px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_rock {
|
.quest_rock {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1540px -868px;
|
background-position: -1540px -217px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 216px;
|
height: 216px;
|
||||||
}
|
}
|
||||||
.quest_rooster {
|
.quest_rooster {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -1670px;
|
background-position: -428px -1519px;
|
||||||
width: 213px;
|
width: 213px;
|
||||||
height: 174px;
|
height: 174px;
|
||||||
}
|
}
|
||||||
.quest_sabretooth {
|
.quest_sabretooth {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -892px;
|
background-position: -1320px -880px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_sheep {
|
.quest_sheep {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1100px -220px;
|
background-position: -1320px 0px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_slime {
|
.quest_slime {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -660px -672px;
|
background-position: 0px -892px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_sloth {
|
.quest_sloth {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -220px -672px;
|
background-position: -1100px -440px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
@@ -318,85 +360,49 @@
|
|||||||
}
|
}
|
||||||
.quest_snake {
|
.quest_snake {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1322px -1112px;
|
background-position: -877px -1332px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 177px;
|
height: 177px;
|
||||||
}
|
}
|
||||||
.quest_spider {
|
.quest_spider {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -1519px;
|
background-position: -1094px -1332px;
|
||||||
width: 250px;
|
width: 250px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
.quest_stoikalmCalamity1 {
|
.quest_stoikalmCalamity1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -721px;
|
background-position: -1757px -422px;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
.quest_stoikalmCalamity2 {
|
.quest_stoikalmCalamity2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -880px -220px;
|
background-position: -880px -440px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_stoikalmCalamity3 {
|
.quest_stoikalmCalamity3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -220px -452px;
|
background-position: -660px -452px;
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
.quest_taskwoodsTerror1 {
|
.quest_taskwoodsTerror1 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1932px -872px;
|
background-position: -1757px -724px;
|
||||||
width: 150px;
|
width: 150px;
|
||||||
height: 150px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
.quest_taskwoodsTerror2 {
|
.quest_taskwoodsTerror2 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: -1540px 0px;
|
background-position: -1540px -651px;
|
||||||
width: 216px;
|
width: 216px;
|
||||||
height: 216px;
|
height: 216px;
|
||||||
}
|
}
|
||||||
.quest_taskwoodsTerror3 {
|
.quest_taskwoodsTerror3 {
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||||
background-position: 0px -452px;
|
background-position: -440px 0px;
|
||||||
width: 219px;
|
|
||||||
height: 219px;
|
|
||||||
}
|
|
||||||
.quest_treeling {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
|
||||||
background-position: -443px -1332px;
|
|
||||||
width: 216px;
|
|
||||||
height: 177px;
|
|
||||||
}
|
|
||||||
.quest_trex {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
|
||||||
background-position: -1932px 0px;
|
|
||||||
width: 204px;
|
|
||||||
height: 177px;
|
|
||||||
}
|
|
||||||
.quest_trex_undead {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
|
||||||
background-position: -1094px -1332px;
|
|
||||||
width: 216px;
|
|
||||||
height: 177px;
|
|
||||||
}
|
|
||||||
.quest_triceratops {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
|
||||||
background-position: -440px -232px;
|
|
||||||
width: 219px;
|
|
||||||
height: 219px;
|
|
||||||
}
|
|
||||||
.quest_turtle {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
|
||||||
background-position: -220px -232px;
|
|
||||||
width: 219px;
|
|
||||||
height: 219px;
|
|
||||||
}
|
|
||||||
.quest_unicorn {
|
|
||||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
|
||||||
background-position: -660px -1112px;
|
|
||||||
width: 219px;
|
width: 219px;
|
||||||
height: 219px;
|
height: 219px;
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
website/client/assets/images/npc/spring/market_background.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
website/client/assets/images/npc/spring/market_banner_npc.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
website/client/assets/images/npc/spring/npc_bailey.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
BIN
website/client/assets/images/npc/spring/npc_matt.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
BIN
website/client/assets/images/npc/spring/quest_shop_npc.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
BIN
website/client/assets/images/npc/spring/tavern_background.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
website/client/assets/images/npc/spring/tavern_npc.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 193 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 441 KiB After Width: | Height: | Size: 423 KiB |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 158 KiB |
@@ -1,9 +1,9 @@
|
|||||||
// this variables are used to determine which shop npc/backgrounds should be loaded
|
// this variables are used to determine which shop npc/backgrounds should be loaded
|
||||||
// possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines
|
// possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines, spring
|
||||||
// more to be added on future seasons
|
// more to be added on future seasons
|
||||||
|
|
||||||
$npc_market_flavor: 'normal';
|
$npc_market_flavor: 'spring';
|
||||||
$npc_quests_flavor: 'normal';
|
$npc_quests_flavor: 'spring';
|
||||||
$npc_seasonal_flavor: 'normal';
|
$npc_seasonal_flavor: 'spring';
|
||||||
$npc_timetravelers_flavor: 'normal';
|
$npc_timetravelers_flavor: 'spring';
|
||||||
$npc_tavern_flavor: 'normal';
|
$npc_tavern_flavor: 'spring';
|
||||||
|
|||||||
@@ -21,7 +21,6 @@
|
|||||||
span(:class="member.preferences.size + '_shirt_' + member.preferences.shirt")
|
span(:class="member.preferences.size + '_shirt_' + member.preferences.shirt")
|
||||||
span.head_0
|
span.head_0
|
||||||
span(:class="member.preferences.size + '_' + getGearClass('armor')")
|
span(:class="member.preferences.size + '_' + getGearClass('armor')")
|
||||||
span.head_0
|
|
||||||
span(:class="getGearClass('back_collar')")
|
span(:class="getGearClass('back_collar')")
|
||||||
span(:class="getGearClass('body')")
|
span(:class="getGearClass('body')")
|
||||||
template(v-for="type in ['bangs', 'base', 'mustache', 'beard']")
|
template(v-for="type in ['bangs', 'base', 'mustache', 'beard']")
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
:item="item"
|
:item="item"
|
||||||
)
|
)
|
||||||
|
|
||||||
.purchase-amount
|
.purchase-amount(v-if='item.value > 0')
|
||||||
.how-many-to-buy(v-if='showAmountToBuy(item)')
|
.how-many-to-buy(v-if='showAmountToBuy(item)')
|
||||||
strong {{ $t('howManyToBuy') }}
|
strong {{ $t('howManyToBuy') }}
|
||||||
div(v-if='showAmountToBuy(item)')
|
div(v-if='showAmountToBuy(item)')
|
||||||
|
|||||||
@@ -467,7 +467,7 @@ export default {
|
|||||||
},
|
},
|
||||||
async mounted () {
|
async mounted () {
|
||||||
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
||||||
this.broken = worldState.worldBoss.extra.worldDmg.market;
|
this.broken = worldState && worldState.worldBoss && worldState.worldBoss.extra && worldState.worldBoss.extra.worldDmg && worldState.worldBoss.extra.worldDmg.market;
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
|
|||||||
@@ -123,7 +123,7 @@ export default {
|
|||||||
key: 'keysToBoth',
|
key: 'keysToBoth',
|
||||||
text: this.$t('keyToBoth'),
|
text: this.$t('keyToBoth'),
|
||||||
notes: this.$t('keyToBothDesc'),
|
notes: this.$t('keyToBothDesc'),
|
||||||
value: 6,
|
value: 0,
|
||||||
currency: 'gems',
|
currency: 'gems',
|
||||||
class: 'key_to_both',
|
class: 'key_to_both',
|
||||||
locked: false,
|
locked: false,
|
||||||
|
|||||||
@@ -400,7 +400,7 @@ export default {
|
|||||||
},
|
},
|
||||||
async mounted () {
|
async mounted () {
|
||||||
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
||||||
this.broken = worldState.worldBoss.extra.worldDmg.quests;
|
this.broken = worldState && worldState.worldBoss && worldState.worldBoss.extra && worldState.worldBoss.extra.worldDmg && worldState.worldBoss.extra.worldDmg.quests;
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
|
|||||||
@@ -23,8 +23,7 @@
|
|||||||
)
|
)
|
||||||
.standard-page
|
.standard-page
|
||||||
div.featuredItems
|
div.featuredItems
|
||||||
.background(:class="{opened: seasonal.opened && !broken, broken: broken}")
|
.background(:class="{opened: seasonal.opened}")
|
||||||
.background(:class="{cracked: broken, broken: broken}")
|
|
||||||
div.npc
|
div.npc
|
||||||
div.featured-label
|
div.featured-label
|
||||||
span.rectangle
|
span.rectangle
|
||||||
@@ -373,7 +372,7 @@
|
|||||||
},
|
},
|
||||||
async mounted () {
|
async mounted () {
|
||||||
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
||||||
this.broken = worldState.worldBoss.extra.worldDmg.seasonalShop;
|
this.broken = worldState && worldState.worldBoss && worldState.worldBoss.extra && worldState.worldBoss.extra.worldDmg && worldState.worldBoss.extra.worldDmg.seasonalShop;
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState({
|
...mapState({
|
||||||
|
|||||||
@@ -276,6 +276,15 @@
|
|||||||
"weaponSpecialWinter2018HealerText": "Mistletoe Wand",
|
"weaponSpecialWinter2018HealerText": "Mistletoe Wand",
|
||||||
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||||
|
|
||||||
|
"weaponSpecialSpring2018RogueText": "Buoyant Bullrush",
|
||||||
|
"weaponSpecialSpring2018RogueNotes": "What might appear to be cute cattails are actually quite effective weapons in the right wings. Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"weaponSpecialSpring2018WarriorText": "Axe of Daybreak",
|
||||||
|
"weaponSpecialSpring2018WarriorNotes": "Made of bright gold, this axe is mighty enough to attack the reddest task! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"weaponSpecialSpring2018MageText": "Tulip Stave",
|
||||||
|
"weaponSpecialSpring2018MageNotes": "This magic flower never wilts! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"weaponSpecialSpring2018HealerText": "Garnet Rod",
|
||||||
|
"weaponSpecialSpring2018HealerNotes": "The stones in this staff will focus your power when you cast healing spells! Increases Intelligence by <%= int %>. Limited Edition 2018 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",
|
||||||
@@ -605,6 +614,15 @@
|
|||||||
"armorSpecialWinter2018HealerText": "Mistletoe Robes",
|
"armorSpecialWinter2018HealerText": "Mistletoe Robes",
|
||||||
"armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
"armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
||||||
|
|
||||||
|
"armorSpecialSpring2018RogueText": "Feather Suit",
|
||||||
|
"armorSpecialSpring2018RogueNotes": "This fluffy yellow costume will trick your enemies into thinking you're just a harmless ducky! Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"armorSpecialSpring2018WarriorText": "Armor of Dawn",
|
||||||
|
"armorSpecialSpring2018WarriorNotes": "This colorful plate is forged with the sunrise's fire. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"armorSpecialSpring2018MageText": "Tulip Robe",
|
||||||
|
"armorSpecialSpring2018MageNotes": "Your spell casting can only improve while clad in these soft, silky petals. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"armorSpecialSpring2018HealerText": "Garnet Armor",
|
||||||
|
"armorSpecialSpring2018HealerNotes": "Let this bright armor infuse your heart with power for healing. Increases Constitution by <%= con %>. Limited Edition 2018 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",
|
||||||
@@ -1005,6 +1023,15 @@
|
|||||||
"headSpecialWinter2018HealerText": "Mistletoe Hood",
|
"headSpecialWinter2018HealerText": "Mistletoe Hood",
|
||||||
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||||
|
|
||||||
|
"headSpecialSpring2018RogueText": "Duck-Billed Helm",
|
||||||
|
"headSpecialSpring2018RogueNotes": "Quack quack! Your cuteness belies your clever and sneaky nature. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"headSpecialSpring2018WarriorText": "Helm of Rays",
|
||||||
|
"headSpecialSpring2018WarriorNotes": "The brightness of this helm will dazzle any enemies nearby! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"headSpecialSpring2018MageText": "Tulip Helm",
|
||||||
|
"headSpecialSpring2018MageNotes": "The fancy petals of this helm will grant you special springtime magic. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"headSpecialSpring2018HealerText": "Garnet Circlet",
|
||||||
|
"headSpecialSpring2018HealerNotes": "The polished gems of this circlet will enhance your mental energy. Increases Intelligence by <%= int %>. Limited Edition 2018 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.",
|
||||||
|
|
||||||
@@ -1334,6 +1361,11 @@
|
|||||||
"shieldSpecialWinter2018HealerText": "Mistletoe Bell",
|
"shieldSpecialWinter2018HealerText": "Mistletoe Bell",
|
||||||
"shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
"shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
||||||
|
|
||||||
|
"shieldSpecialSpring2018WarriorText": "Shield of the Morning",
|
||||||
|
"shieldSpecialSpring2018WarriorNotes": "This sturdy shield glows with the glory of first light. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||||
|
"shieldSpecialSpring2018HealerText": "Garnet Shield",
|
||||||
|
"shieldSpecialSpring2018HealerNotes": "Despite its fancy appearance, this garnet shield is quite durable! Increases Constitution by <%= con %>. Limited Edition 2018 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",
|
||||||
|
|||||||
@@ -29,10 +29,10 @@
|
|||||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||||
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
|
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
|
||||||
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
||||||
"seasonalShopText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
|
||||||
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? They’ll only be available until July 31st!",
|
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? They’ll only be available until July 31st!",
|
||||||
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? They’ll only be available until October 31st!",
|
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? They’ll only be available until October 31st!",
|
||||||
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? They’ll only be available until January 31st!",
|
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? They’ll only be available until January 31st!",
|
||||||
|
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||||
"seasonalShopFallTextBroken": "Oh.... Welcome to the Seasonal Shop... We're stocking autumn Seasonal Edition goodies, or something... Everything here will be available to purchase during the Fall Festival event each year, but we're only open until October 31... I guess you should to stock up now, or you'll have to wait... and wait... and wait... <strong>*sigh*</strong>",
|
"seasonalShopFallTextBroken": "Oh.... Welcome to the Seasonal Shop... We're stocking autumn Seasonal Edition goodies, or something... Everything here will be available to purchase during the Fall Festival event each year, but we're only open until October 31... I guess you should to stock up now, or you'll have to wait... and wait... and wait... <strong>*sigh*</strong>",
|
||||||
"seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!",
|
"seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!",
|
||||||
"seasonalShopRebirth": "If you bought any of this equipment in the past but don't currently own it, you can repurchase it in the Rewards Column. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.",
|
"seasonalShopRebirth": "If you bought any of this equipment in the past but don't currently own it, you can repurchase it in the Rewards Column. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.",
|
||||||
@@ -117,6 +117,10 @@
|
|||||||
"winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
|
"winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
|
||||||
"winter2018MistletoeSet": "Mistletoe Healer (Healer)",
|
"winter2018MistletoeSet": "Mistletoe Healer (Healer)",
|
||||||
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
|
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
|
||||||
|
"spring2018SunriseWarriorSet": "Sunrise Warrior (Warrior)",
|
||||||
|
"spring2018TulipMageSet": "Tulip Mage (Mage)",
|
||||||
|
"spring2018GarnetHealerSet": "Garnet Healer (Healer)",
|
||||||
|
"spring2018DucklingRogueSet": "Duckling Rogue (Rogue)",
|
||||||
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
|
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
|
||||||
"dateEndMarch": "March 31",
|
"dateEndMarch": "March 31",
|
||||||
"dateEndApril": "April 19",
|
"dateEndApril": "April 19",
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ export const EVENTS = {
|
|||||||
summer2017: { start: '2017-06-20', end: '2017-08-02' },
|
summer2017: { start: '2017-06-20', end: '2017-08-02' },
|
||||||
fall2017: { start: '2017-09-21', end: '2017-11-02' },
|
fall2017: { start: '2017-09-21', end: '2017-11-02' },
|
||||||
winter2018: { start: '2017-12-19', end: '2018-02-02' },
|
winter2018: { start: '2017-12-19', end: '2018-02-02' },
|
||||||
|
spring2018: { start: '2018-03-20', end: '2018-05-02' },
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SEASONAL_SETS = {
|
export const SEASONAL_SETS = {
|
||||||
@@ -65,6 +66,37 @@ export const SEASONAL_SETS = {
|
|||||||
'winter2018MistletoeSet',
|
'winter2018MistletoeSet',
|
||||||
'winter2018ReindeerSet',
|
'winter2018ReindeerSet',
|
||||||
],
|
],
|
||||||
|
spring: [
|
||||||
|
// spring 2014
|
||||||
|
'mightyBunnySet',
|
||||||
|
'magicMouseSet',
|
||||||
|
'lovingPupSet',
|
||||||
|
'stealthyKittySet',
|
||||||
|
|
||||||
|
// spring 2015
|
||||||
|
'bewareDogSet',
|
||||||
|
'magicianBunnySet',
|
||||||
|
'comfortingKittySet',
|
||||||
|
'sneakySqueakerSet',
|
||||||
|
|
||||||
|
// spring 2016
|
||||||
|
'springingBunnySet',
|
||||||
|
'grandMalkinSet',
|
||||||
|
'cleverDogSet',
|
||||||
|
'braveMouseSet',
|
||||||
|
|
||||||
|
// spring 2017
|
||||||
|
'spring2017FelineWarriorSet',
|
||||||
|
'spring2017CanineConjurorSet',
|
||||||
|
'spring2017FloralMouseSet',
|
||||||
|
'spring2017SneakyBunnySet',
|
||||||
|
|
||||||
|
// spring 2018
|
||||||
|
'spring2018TulipMageSet',
|
||||||
|
'spring2018SunriseWarriorSet',
|
||||||
|
'spring2018DucklingRogueSet',
|
||||||
|
'spring2018GarnetHealerSet',
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GEAR_TYPES = [
|
export const GEAR_TYPES = [
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import takeThisGear from './special-takeThis';
|
|||||||
import wonderconGear from './special-wondercon';
|
import wonderconGear from './special-wondercon';
|
||||||
import t from '../../../translation';
|
import t from '../../../translation';
|
||||||
|
|
||||||
const CURRENT_SEASON = 'winter';
|
const CURRENT_SEASON = 'spring';
|
||||||
|
|
||||||
let armor = {
|
let armor = {
|
||||||
0: backerGear.armorSpecial0,
|
0: backerGear.armorSpecial0,
|
||||||
@@ -167,6 +167,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpringRogueNotes', { per: 15 }),
|
notes: t('armorSpecialSpringRogueNotes', { per: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
per: 15,
|
per: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springWarrior: {
|
springWarrior: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -176,6 +179,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpringWarriorNotes', { con: 9 }),
|
notes: t('armorSpecialSpringWarriorNotes', { con: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springMage: {
|
springMage: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -185,6 +191,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpringMageNotes', { int: 9 }),
|
notes: t('armorSpecialSpringMageNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springHealer: {
|
springHealer: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -194,6 +203,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpringHealerNotes', { con: 15 }),
|
notes: t('armorSpecialSpringHealerNotes', { con: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 15,
|
con: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summerRogue: {
|
summerRogue: {
|
||||||
event: EVENTS.summer,
|
event: EVENTS.summer,
|
||||||
@@ -353,6 +365,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2015RogueNotes', { per: 15 }),
|
notes: t('armorSpecialSpring2015RogueNotes', { per: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
per: 15,
|
per: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Warrior: {
|
spring2015Warrior: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -362,6 +377,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2015WarriorNotes', { con: 9 }),
|
notes: t('armorSpecialSpring2015WarriorNotes', { con: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Mage: {
|
spring2015Mage: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -371,6 +389,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2015MageNotes', { int: 9 }),
|
notes: t('armorSpecialSpring2015MageNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Healer: {
|
spring2015Healer: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -380,6 +401,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2015HealerNotes', { con: 15 }),
|
notes: t('armorSpecialSpring2015HealerNotes', { con: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 15,
|
con: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2015Rogue: {
|
summer2015Rogue: {
|
||||||
event: EVENTS.summer2015,
|
event: EVENTS.summer2015,
|
||||||
@@ -545,6 +569,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2016RogueNotes', { per: 15 }),
|
notes: t('armorSpecialSpring2016RogueNotes', { per: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
per: 15,
|
per: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Warrior: {
|
spring2016Warrior: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -554,6 +581,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2016WarriorNotes', { con: 9 }),
|
notes: t('armorSpecialSpring2016WarriorNotes', { con: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Mage: {
|
spring2016Mage: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -563,6 +593,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2016MageNotes', { int: 9 }),
|
notes: t('armorSpecialSpring2016MageNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Healer: {
|
spring2016Healer: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -572,6 +605,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2016HealerNotes', { con: 15 }),
|
notes: t('armorSpecialSpring2016HealerNotes', { con: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 15,
|
con: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2016Rogue: {
|
summer2016Rogue: {
|
||||||
event: EVENTS.summer2016,
|
event: EVENTS.summer2016,
|
||||||
@@ -731,6 +767,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2017RogueNotes', { per: 15 }),
|
notes: t('armorSpecialSpring2017RogueNotes', { per: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
per: 15,
|
per: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Warrior: {
|
spring2017Warrior: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -740,6 +779,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2017WarriorNotes', { con: 9 }),
|
notes: t('armorSpecialSpring2017WarriorNotes', { con: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Mage: {
|
spring2017Mage: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -749,6 +791,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2017MageNotes', { int: 9 }),
|
notes: t('armorSpecialSpring2017MageNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Healer: {
|
spring2017Healer: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -758,6 +803,9 @@ let armor = {
|
|||||||
notes: t('armorSpecialSpring2017HealerNotes', { con: 15 }),
|
notes: t('armorSpecialSpring2017HealerNotes', { con: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
con: 15,
|
con: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2017Rogue: {
|
summer2017Rogue: {
|
||||||
event: EVENTS.summer2017,
|
event: EVENTS.summer2017,
|
||||||
@@ -873,6 +921,42 @@ let armor = {
|
|||||||
value: 0,
|
value: 0,
|
||||||
canOwn: ownsItem('armor_special_birthday2018'),
|
canOwn: ownsItem('armor_special_birthday2018'),
|
||||||
},
|
},
|
||||||
|
spring2018Rogue: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'rogue',
|
||||||
|
set: 'spring2018DucklingRogueSet',
|
||||||
|
text: t('armorSpecialSpring2018RogueText'),
|
||||||
|
notes: t('armorSpecialSpring2018RogueNotes', { per: 15 }),
|
||||||
|
value: 90,
|
||||||
|
per: 15,
|
||||||
|
},
|
||||||
|
spring2018Warrior: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'warrior',
|
||||||
|
set: 'spring2018SunriseWarriorSet',
|
||||||
|
text: t('armorSpecialSpring2018WarriorText'),
|
||||||
|
notes: t('armorSpecialSpring2018WarriorNotes', { con: 9 }),
|
||||||
|
value: 90,
|
||||||
|
con: 9,
|
||||||
|
},
|
||||||
|
spring2018Mage: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'wizard',
|
||||||
|
set: 'spring2018TulipMageSet',
|
||||||
|
text: t('armorSpecialSpring2018MageText'),
|
||||||
|
notes: t('armorSpecialSpring2018MageNotes', { int: 9 }),
|
||||||
|
value: 90,
|
||||||
|
int: 9,
|
||||||
|
},
|
||||||
|
spring2018Healer: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'healer',
|
||||||
|
set: 'spring2018GarnetHealerSet',
|
||||||
|
text: t('armorSpecialSpring2018HealerText'),
|
||||||
|
notes: t('armorSpecialSpring2018HealerNotes', { con: 15 }),
|
||||||
|
value: 90,
|
||||||
|
con: 15,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let back = {
|
let back = {
|
||||||
@@ -1222,6 +1306,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpringRogueNotes', { per: 9 }),
|
notes: t('headSpecialSpringRogueNotes', { per: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 9,
|
per: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springWarrior: {
|
springWarrior: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -1231,6 +1318,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpringWarriorNotes', { str: 9 }),
|
notes: t('headSpecialSpringWarriorNotes', { str: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
str: 9,
|
str: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springMage: {
|
springMage: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -1240,6 +1330,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpringMageNotes', { per: 7 }),
|
notes: t('headSpecialSpringMageNotes', { per: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springHealer: {
|
springHealer: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -1249,6 +1342,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpringHealerNotes', { int: 7 }),
|
notes: t('headSpecialSpringHealerNotes', { int: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
int: 7,
|
int: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summerRogue: {
|
summerRogue: {
|
||||||
event: EVENTS.summer,
|
event: EVENTS.summer,
|
||||||
@@ -1408,6 +1504,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2015RogueNotes', { per: 9 }),
|
notes: t('headSpecialSpring2015RogueNotes', { per: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 9,
|
per: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Warrior: {
|
spring2015Warrior: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -1417,6 +1516,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2015WarriorNotes', { str: 9 }),
|
notes: t('headSpecialSpring2015WarriorNotes', { str: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
str: 9,
|
str: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Mage: {
|
spring2015Mage: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -1426,6 +1528,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2015MageNotes', { per: 7 }),
|
notes: t('headSpecialSpring2015MageNotes', { per: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Healer: {
|
spring2015Healer: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -1435,6 +1540,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2015HealerNotes', { int: 7 }),
|
notes: t('headSpecialSpring2015HealerNotes', { int: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
int: 7,
|
int: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2015Rogue: {
|
summer2015Rogue: {
|
||||||
event: EVENTS.summer2015,
|
event: EVENTS.summer2015,
|
||||||
@@ -1600,6 +1708,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2016RogueNotes', { per: 9 }),
|
notes: t('headSpecialSpring2016RogueNotes', { per: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 9,
|
per: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Warrior: {
|
spring2016Warrior: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -1609,6 +1720,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2016WarriorNotes', { str: 9 }),
|
notes: t('headSpecialSpring2016WarriorNotes', { str: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
str: 9,
|
str: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Mage: {
|
spring2016Mage: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -1618,6 +1732,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2016MageNotes', { per: 7 }),
|
notes: t('headSpecialSpring2016MageNotes', { per: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Healer: {
|
spring2016Healer: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -1627,6 +1744,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2016HealerNotes', { int: 7 }),
|
notes: t('headSpecialSpring2016HealerNotes', { int: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
int: 7,
|
int: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2016Rogue: {
|
summer2016Rogue: {
|
||||||
event: EVENTS.summer2016,
|
event: EVENTS.summer2016,
|
||||||
@@ -1786,6 +1906,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2017RogueNotes', { per: 9 }),
|
notes: t('headSpecialSpring2017RogueNotes', { per: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 9,
|
per: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Warrior: {
|
spring2017Warrior: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -1795,6 +1918,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2017WarriorNotes', { str: 9 }),
|
notes: t('headSpecialSpring2017WarriorNotes', { str: 9 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
str: 9,
|
str: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Mage: {
|
spring2017Mage: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -1804,6 +1930,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2017MageNotes', { per: 7 }),
|
notes: t('headSpecialSpring2017MageNotes', { per: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Healer: {
|
spring2017Healer: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -1813,6 +1942,9 @@ let head = {
|
|||||||
notes: t('headSpecialSpring2017HealerNotes', { int: 7 }),
|
notes: t('headSpecialSpring2017HealerNotes', { int: 7 }),
|
||||||
value: 60,
|
value: 60,
|
||||||
int: 7,
|
int: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2017Rogue: {
|
summer2017Rogue: {
|
||||||
event: EVENTS.summer2017,
|
event: EVENTS.summer2017,
|
||||||
@@ -1934,6 +2066,42 @@ let head = {
|
|||||||
value: 60,
|
value: 60,
|
||||||
int: 7,
|
int: 7,
|
||||||
},
|
},
|
||||||
|
spring2018Rogue: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'rogue',
|
||||||
|
set: 'spring2018DucklingRogueSet',
|
||||||
|
text: t('headSpecialSpring2018RogueText'),
|
||||||
|
notes: t('headSpecialSpring2018RogueNotes', { per: 9 }),
|
||||||
|
value: 60,
|
||||||
|
per: 9,
|
||||||
|
},
|
||||||
|
spring2018Warrior: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'warrior',
|
||||||
|
set: 'spring2018SunriseWarriorSet',
|
||||||
|
text: t('headSpecialSpring2018WarriorText'),
|
||||||
|
notes: t('headSpecialSpring2018WarriorNotes', { str: 9 }),
|
||||||
|
value: 60,
|
||||||
|
str: 9,
|
||||||
|
},
|
||||||
|
spring2018Mage: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'wizard',
|
||||||
|
set: 'spring2018TulipMageSet',
|
||||||
|
text: t('headSpecialSpring2018MageText'),
|
||||||
|
notes: t('headSpecialSpring2018MageNotes', { per: 7 }),
|
||||||
|
value: 60,
|
||||||
|
per: 7,
|
||||||
|
},
|
||||||
|
spring2018Healer: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'healer',
|
||||||
|
set: 'spring2018GarnetHealerSet',
|
||||||
|
text: t('headSpecialSpring2018HealerText'),
|
||||||
|
notes: t('headSpecialSpring2018HealerNotes', { int: 7 }),
|
||||||
|
value: 60,
|
||||||
|
int: 7,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let headAccessory = {
|
let headAccessory = {
|
||||||
@@ -1944,6 +2112,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpringRogueText'),
|
text: t('headAccessorySpecialSpringRogueText'),
|
||||||
notes: t('headAccessorySpecialSpringRogueNotes'),
|
notes: t('headAccessorySpecialSpringRogueNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springWarrior: {
|
springWarrior: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -1952,6 +2123,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpringWarriorText'),
|
text: t('headAccessorySpecialSpringWarriorText'),
|
||||||
notes: t('headAccessorySpecialSpringWarriorNotes'),
|
notes: t('headAccessorySpecialSpringWarriorNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springMage: {
|
springMage: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -1960,6 +2134,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpringMageText'),
|
text: t('headAccessorySpecialSpringMageText'),
|
||||||
notes: t('headAccessorySpecialSpringMageNotes'),
|
notes: t('headAccessorySpecialSpringMageNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springHealer: {
|
springHealer: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -1968,6 +2145,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpringHealerText'),
|
text: t('headAccessorySpecialSpringHealerText'),
|
||||||
notes: t('headAccessorySpecialSpringHealerNotes'),
|
notes: t('headAccessorySpecialSpringHealerNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Rogue: {
|
spring2015Rogue: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -1976,6 +2156,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2015RogueText'),
|
text: t('headAccessorySpecialSpring2015RogueText'),
|
||||||
notes: t('headAccessorySpecialSpring2015RogueNotes'),
|
notes: t('headAccessorySpecialSpring2015RogueNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Warrior: {
|
spring2015Warrior: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -1984,6 +2167,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2015WarriorText'),
|
text: t('headAccessorySpecialSpring2015WarriorText'),
|
||||||
notes: t('headAccessorySpecialSpring2015WarriorNotes'),
|
notes: t('headAccessorySpecialSpring2015WarriorNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Mage: {
|
spring2015Mage: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -1992,6 +2178,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2015MageText'),
|
text: t('headAccessorySpecialSpring2015MageText'),
|
||||||
notes: t('headAccessorySpecialSpring2015MageNotes'),
|
notes: t('headAccessorySpecialSpring2015MageNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Healer: {
|
spring2015Healer: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -2000,6 +2189,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2015HealerText'),
|
text: t('headAccessorySpecialSpring2015HealerText'),
|
||||||
notes: t('headAccessorySpecialSpring2015HealerNotes'),
|
notes: t('headAccessorySpecialSpring2015HealerNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
bearEars: {
|
bearEars: {
|
||||||
gearSet: 'animal',
|
gearSet: 'animal',
|
||||||
@@ -2088,6 +2280,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2016RogueText'),
|
text: t('headAccessorySpecialSpring2016RogueText'),
|
||||||
notes: t('headAccessorySpecialSpring2016RogueNotes'),
|
notes: t('headAccessorySpecialSpring2016RogueNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Warrior: {
|
spring2016Warrior: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -2096,6 +2291,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2016WarriorText'),
|
text: t('headAccessorySpecialSpring2016WarriorText'),
|
||||||
notes: t('headAccessorySpecialSpring2016WarriorNotes'),
|
notes: t('headAccessorySpecialSpring2016WarriorNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Mage: {
|
spring2016Mage: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -2104,6 +2302,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2016MageText'),
|
text: t('headAccessorySpecialSpring2016MageText'),
|
||||||
notes: t('headAccessorySpecialSpring2016MageNotes'),
|
notes: t('headAccessorySpecialSpring2016MageNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Healer: {
|
spring2016Healer: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -2112,6 +2313,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2016HealerText'),
|
text: t('headAccessorySpecialSpring2016HealerText'),
|
||||||
notes: t('headAccessorySpecialSpring2016HealerNotes'),
|
notes: t('headAccessorySpecialSpring2016HealerNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Rogue: {
|
spring2017Rogue: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -2120,6 +2324,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2017RogueText'),
|
text: t('headAccessorySpecialSpring2017RogueText'),
|
||||||
notes: t('headAccessorySpecialSpring2017RogueNotes'),
|
notes: t('headAccessorySpecialSpring2017RogueNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Warrior: {
|
spring2017Warrior: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -2128,6 +2335,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2017WarriorText'),
|
text: t('headAccessorySpecialSpring2017WarriorText'),
|
||||||
notes: t('headAccessorySpecialSpring2017WarriorNotes'),
|
notes: t('headAccessorySpecialSpring2017WarriorNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Mage: {
|
spring2017Mage: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -2136,6 +2346,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2017MageText'),
|
text: t('headAccessorySpecialSpring2017MageText'),
|
||||||
notes: t('headAccessorySpecialSpring2017MageNotes'),
|
notes: t('headAccessorySpecialSpring2017MageNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Healer: {
|
spring2017Healer: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -2144,6 +2357,9 @@ let headAccessory = {
|
|||||||
text: t('headAccessorySpecialSpring2017HealerText'),
|
text: t('headAccessorySpecialSpring2017HealerText'),
|
||||||
notes: t('headAccessorySpecialSpring2017HealerNotes'),
|
notes: t('headAccessorySpecialSpring2017HealerNotes'),
|
||||||
value: 20,
|
value: 20,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2252,6 +2468,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpringRogueNotes', { str: 8 }),
|
notes: t('shieldSpecialSpringRogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springWarrior: {
|
springWarrior: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -2261,6 +2480,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpringWarriorNotes', { con: 7 }),
|
notes: t('shieldSpecialSpringWarriorNotes', { con: 7 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 7,
|
con: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springHealer: {
|
springHealer: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -2270,6 +2492,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpringHealerNotes', { con: 9 }),
|
notes: t('shieldSpecialSpringHealerNotes', { con: 9 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summerRogue: {
|
summerRogue: {
|
||||||
event: EVENTS.summer,
|
event: EVENTS.summer,
|
||||||
@@ -2387,6 +2612,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2015RogueNotes', { str: 8 }),
|
notes: t('shieldSpecialSpring2015RogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Warrior: {
|
spring2015Warrior: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -2396,6 +2624,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2015WarriorNotes', { con: 7 }),
|
notes: t('shieldSpecialSpring2015WarriorNotes', { con: 7 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 7,
|
con: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Healer: {
|
spring2015Healer: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -2405,6 +2636,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2015HealerNotes', { con: 9 }),
|
notes: t('shieldSpecialSpring2015HealerNotes', { con: 9 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2015Rogue: {
|
summer2015Rogue: {
|
||||||
event: EVENTS.summer2015,
|
event: EVENTS.summer2015,
|
||||||
@@ -2522,6 +2756,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2016RogueNotes', { str: 8 }),
|
notes: t('shieldSpecialSpring2016RogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Warrior: {
|
spring2016Warrior: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -2531,6 +2768,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2016WarriorNotes', { con: 7 }),
|
notes: t('shieldSpecialSpring2016WarriorNotes', { con: 7 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 7,
|
con: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Healer: {
|
spring2016Healer: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -2540,6 +2780,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2016HealerNotes', { con: 9 }),
|
notes: t('shieldSpecialSpring2016HealerNotes', { con: 9 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2016Rogue: {
|
summer2016Rogue: {
|
||||||
event: EVENTS.summer2016,
|
event: EVENTS.summer2016,
|
||||||
@@ -2657,6 +2900,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2017RogueNotes', { str: 8 }),
|
notes: t('shieldSpecialSpring2017RogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Warrior: {
|
spring2017Warrior: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -2666,6 +2912,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2017WarriorNotes', { con: 7 }),
|
notes: t('shieldSpecialSpring2017WarriorNotes', { con: 7 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 7,
|
con: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Healer: {
|
spring2017Healer: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -2675,6 +2924,9 @@ let shield = {
|
|||||||
notes: t('shieldSpecialSpring2017HealerNotes', { con: 9 }),
|
notes: t('shieldSpecialSpring2017HealerNotes', { con: 9 }),
|
||||||
value: 70,
|
value: 70,
|
||||||
con: 9,
|
con: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2017Rogue: {
|
summer2017Rogue: {
|
||||||
event: EVENTS.summer2017,
|
event: EVENTS.summer2017,
|
||||||
@@ -2757,6 +3009,33 @@ let shield = {
|
|||||||
value: 70,
|
value: 70,
|
||||||
con: 9,
|
con: 9,
|
||||||
},
|
},
|
||||||
|
spring2018Rogue: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'rogue',
|
||||||
|
set: 'spring2018DucklingRogueSet',
|
||||||
|
text: t('weaponSpecialSpring2018RogueText'),
|
||||||
|
notes: t('weaponSpecialSpring2018RogueNotes', { str: 8 }),
|
||||||
|
value: 80,
|
||||||
|
str: 8,
|
||||||
|
},
|
||||||
|
spring2018Warrior: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'warrior',
|
||||||
|
set: 'spring2018SunriseWarriorSet',
|
||||||
|
text: t('shieldSpecialSpring2018WarriorText'),
|
||||||
|
notes: t('shieldSpecialSpring2018WarriorNotes', { con: 7 }),
|
||||||
|
value: 70,
|
||||||
|
con: 7,
|
||||||
|
},
|
||||||
|
spring2018Healer: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'healer',
|
||||||
|
set: 'spring2018GarnetHealerSet',
|
||||||
|
text: t('shieldSpecialSpring2018HealerText'),
|
||||||
|
notes: t('shieldSpecialSpring2018HealerNotes', { con: 9 }),
|
||||||
|
value: 70,
|
||||||
|
con: 9,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let weapon = {
|
let weapon = {
|
||||||
@@ -2918,6 +3197,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpringRogueNotes', { str: 8 }),
|
notes: t('weaponSpecialSpringRogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springWarrior: {
|
springWarrior: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -2927,6 +3209,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpringWarriorNotes', { str: 15 }),
|
notes: t('weaponSpecialSpringWarriorNotes', { str: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
str: 15,
|
str: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springMage: {
|
springMage: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -2938,6 +3223,9 @@ let weapon = {
|
|||||||
value: 160,
|
value: 160,
|
||||||
int: 15,
|
int: 15,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
springHealer: {
|
springHealer: {
|
||||||
event: EVENTS.spring,
|
event: EVENTS.spring,
|
||||||
@@ -2947,6 +3235,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpringHealerNotes', { int: 9 }),
|
notes: t('weaponSpecialSpringHealerNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summerRogue: {
|
summerRogue: {
|
||||||
event: EVENTS.summer,
|
event: EVENTS.summer,
|
||||||
@@ -3106,6 +3397,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2015RogueNotes', { str: 8 }),
|
notes: t('weaponSpecialSpring2015RogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Warrior: {
|
spring2015Warrior: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -3115,6 +3409,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2015WarriorNotes', { str: 15 }),
|
notes: t('weaponSpecialSpring2015WarriorNotes', { str: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
str: 15,
|
str: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Mage: {
|
spring2015Mage: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -3126,6 +3423,9 @@ let weapon = {
|
|||||||
value: 160,
|
value: 160,
|
||||||
int: 15,
|
int: 15,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2015Healer: {
|
spring2015Healer: {
|
||||||
event: EVENTS.spring2015,
|
event: EVENTS.spring2015,
|
||||||
@@ -3135,6 +3435,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2015HealerNotes', { int: 9 }),
|
notes: t('weaponSpecialSpring2015HealerNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2015Rogue: {
|
summer2015Rogue: {
|
||||||
event: EVENTS.summer2015,
|
event: EVENTS.summer2015,
|
||||||
@@ -3294,6 +3597,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2016RogueNotes', { str: 8 }),
|
notes: t('weaponSpecialSpring2016RogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Warrior: {
|
spring2016Warrior: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -3303,6 +3609,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2016WarriorNotes', { str: 15 }),
|
notes: t('weaponSpecialSpring2016WarriorNotes', { str: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
str: 15,
|
str: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Mage: {
|
spring2016Mage: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -3314,6 +3623,9 @@ let weapon = {
|
|||||||
value: 160,
|
value: 160,
|
||||||
int: 15,
|
int: 15,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2016Healer: {
|
spring2016Healer: {
|
||||||
event: EVENTS.spring2016,
|
event: EVENTS.spring2016,
|
||||||
@@ -3323,6 +3635,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2016HealerNotes', { int: 9 }),
|
notes: t('weaponSpecialSpring2016HealerNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2016Rogue: {
|
summer2016Rogue: {
|
||||||
event: EVENTS.summer2016,
|
event: EVENTS.summer2016,
|
||||||
@@ -3482,6 +3797,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2017RogueNotes', { str: 8 }),
|
notes: t('weaponSpecialSpring2017RogueNotes', { str: 8 }),
|
||||||
value: 80,
|
value: 80,
|
||||||
str: 8,
|
str: 8,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Warrior: {
|
spring2017Warrior: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -3491,6 +3809,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2017WarriorNotes', { str: 15 }),
|
notes: t('weaponSpecialSpring2017WarriorNotes', { str: 15 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
str: 15,
|
str: 15,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Mage: {
|
spring2017Mage: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -3502,6 +3823,9 @@ let weapon = {
|
|||||||
value: 160,
|
value: 160,
|
||||||
int: 15,
|
int: 15,
|
||||||
per: 7,
|
per: 7,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
spring2017Healer: {
|
spring2017Healer: {
|
||||||
event: EVENTS.spring2017,
|
event: EVENTS.spring2017,
|
||||||
@@ -3511,6 +3835,9 @@ let weapon = {
|
|||||||
notes: t('weaponSpecialSpring2017HealerNotes', { int: 9 }),
|
notes: t('weaponSpecialSpring2017HealerNotes', { int: 9 }),
|
||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
|
canBuy: () => {
|
||||||
|
return CURRENT_SEASON === 'spring';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
summer2017Rogue: {
|
summer2017Rogue: {
|
||||||
event: EVENTS.summer2017,
|
event: EVENTS.summer2017,
|
||||||
@@ -3626,6 +3953,44 @@ let weapon = {
|
|||||||
value: 90,
|
value: 90,
|
||||||
int: 9,
|
int: 9,
|
||||||
},
|
},
|
||||||
|
spring2018Rogue: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'rogue',
|
||||||
|
set: 'spring2018DucklingRogueSet',
|
||||||
|
text: t('weaponSpecialSpring2018RogueText'),
|
||||||
|
notes: t('weaponSpecialSpring2018RogueNotes', { str: 8 }),
|
||||||
|
value: 80,
|
||||||
|
str: 8,
|
||||||
|
},
|
||||||
|
spring2018Warrior: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'warrior',
|
||||||
|
set: 'spring2018SunriseWarriorSet',
|
||||||
|
text: t('weaponSpecialSpring2018WarriorText'),
|
||||||
|
notes: t('weaponSpecialSpring2018WarriorNotes', { str: 15 }),
|
||||||
|
value: 90,
|
||||||
|
str: 15,
|
||||||
|
},
|
||||||
|
spring2018Mage: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'wizard',
|
||||||
|
set: 'spring2018TulipMageSet',
|
||||||
|
twoHanded: true,
|
||||||
|
text: t('weaponSpecialSpring2018MageText'),
|
||||||
|
notes: t('weaponSpecialSpring2018MageNotes', { int: 15, per: 7 }),
|
||||||
|
value: 160,
|
||||||
|
int: 15,
|
||||||
|
per: 7,
|
||||||
|
},
|
||||||
|
spring2018Healer: {
|
||||||
|
event: EVENTS.spring2018,
|
||||||
|
specialClass: 'healer',
|
||||||
|
set: 'spring2018GarnetHealerSet',
|
||||||
|
text: t('weaponSpecialSpring2018HealerText'),
|
||||||
|
notes: t('weaponSpecialSpring2018HealerNotes', { int: 9 }),
|
||||||
|
value: 90,
|
||||||
|
int: 9,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let specialSet = {
|
let specialSet = {
|
||||||
|
|||||||
@@ -511,7 +511,7 @@ let quests = {
|
|||||||
value: 1,
|
value: 1,
|
||||||
category: 'pet',
|
category: 'pet',
|
||||||
canBuy () {
|
canBuy () {
|
||||||
return false;
|
return true;
|
||||||
},
|
},
|
||||||
collect: {
|
collect: {
|
||||||
plainEgg: {
|
plainEgg: {
|
||||||
|
|||||||
@@ -24,18 +24,18 @@ const featuredItems = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'quests',
|
type: 'quests',
|
||||||
path: 'quests.stoikalmCalamity1',
|
path: 'quests.taskwoodsTerror1',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'quests',
|
type: 'quests',
|
||||||
path: 'quests.badger',
|
path: 'quests.egg',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'bundles',
|
type: 'bundles',
|
||||||
path: 'bundles.hugabug',
|
path: 'bundles.hugabug',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
seasonal: 'summerMage',
|
seasonal: 'springHealer',
|
||||||
timeTravelers: [
|
timeTravelers: [
|
||||||
// TODO
|
// TODO
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
// import { SEASONAL_SETS } from '../content/constants';
|
import { SEASONAL_SETS } from '../content/constants';
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
opened: false,
|
opened: true,
|
||||||
|
|
||||||
currentSeason: 'Closed',
|
currentSeason: 'Spring',
|
||||||
|
|
||||||
dateRange: { start: '2017-12-19', end: '2018-01-31' },
|
dateRange: { start: '2018-03-20', end: '2018-04-30' },
|
||||||
|
|
||||||
availableSets: [
|
availableSets: [
|
||||||
|
...SEASONAL_SETS.spring,
|
||||||
],
|
],
|
||||||
|
|
||||||
pinnedSets: {
|
pinnedSets: {
|
||||||
|
wizard: 'spring2018TulipMageSet',
|
||||||
|
warrior: 'spring2018SunriseWarriorSet',
|
||||||
|
rogue: 'spring2018DucklingRogueSet',
|
||||||
|
healer: 'spring2018GarnetHealerSet',
|
||||||
},
|
},
|
||||||
|
|
||||||
availableSpells: [
|
availableSpells: [
|
||||||
@@ -19,5 +24,5 @@ module.exports = {
|
|||||||
availableQuests: [
|
availableQuests: [
|
||||||
],
|
],
|
||||||
|
|
||||||
featuredSet: 'yetiSet',
|
featuredSet: 'comfortingKittySet',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ import pick from 'lodash/pick';
|
|||||||
module.exports = function releaseBoth (user, req = {}, analytics) {
|
module.exports = function releaseBoth (user, req = {}, analytics) {
|
||||||
let animal;
|
let animal;
|
||||||
|
|
||||||
if (user.balance < 1.5 && !user.achievements.triadBingo) {
|
if (!user.achievements.triadBingo) {
|
||||||
throw new NotAuthorized(i18n.t('notEnoughGems', req.language));
|
throw new NotAuthorized(i18n.t('notEnoughPetsMounts', req.language));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (beastMasterProgress(user.items.pets) !== 90 || mountMasterProgress(user.items.mounts) !== 90) {
|
if (beastMasterProgress(user.items.pets) !== 90 || mountMasterProgress(user.items.mounts) !== 90) {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 839 B After Width: | Height: | Size: 838 B |
|
Before Width: | Height: | Size: 804 B After Width: | Height: | Size: 805 B |
|
After Width: | Height: | Size: 726 B |
|
After Width: | Height: | Size: 941 B |
|
After Width: | Height: | Size: 542 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 705 B |
|
After Width: | Height: | Size: 661 B |
|
After Width: | Height: | Size: 568 B |
|
After Width: | Height: | Size: 943 B |
|
After Width: | Height: | Size: 481 B |
|
After Width: | Height: | Size: 388 B |
|
After Width: | Height: | Size: 512 B |
|
After Width: | Height: | Size: 667 B |
|
After Width: | Height: | Size: 626 B |
|
After Width: | Height: | Size: 489 B |
|
After Width: | Height: | Size: 459 B |
|
After Width: | Height: | Size: 658 B |
|
After Width: | Height: | Size: 549 B |
|
After Width: | Height: | Size: 505 B |
|
After Width: | Height: | Size: 645 B |
|
After Width: | Height: | Size: 438 B |
|
After Width: | Height: | Size: 348 B |
|
After Width: | Height: | Size: 457 B |
|
After Width: | Height: | Size: 643 B |
|
After Width: | Height: | Size: 563 B |
|
After Width: | Height: | Size: 349 B |
|
After Width: | Height: | Size: 510 B |
|
After Width: | Height: | Size: 683 B |
|
After Width: | Height: | Size: 956 B |
|
After Width: | Height: | Size: 515 B |
|
After Width: | Height: | Size: 542 B |
|
After Width: | Height: | Size: 714 B |