Compare commits

...

25 Commits

Author SHA1 Message Date
Sabe Jones 13fae3028c 4.188.4 2021-04-05 15:39:53 -05:00
Sabe Jones 48892a0af3 chore(packages): update Bootstrap 2021-04-05 15:39:33 -05:00
Sabe Jones 9472264bb2 4.188.3 2021-04-02 15:50:36 -05:00
Sabe Jones b3e3d0cb63 fix(fix): hide future mystery sets in Time Travel shop
...not in the gear tree
2021-04-02 15:50:20 -05:00
Sabe Jones cdb058b696 4.188.2 2021-03-30 15:46:59 -05:00
Sabe Jones 9b719dc144 fix(subscriptions): handle future/prebuilt mystery items 2021-03-30 15:46:52 -05:00
Sabe Jones fda581e60a 4.188.1 2021-03-30 15:24:51 -05:00
Sabe Jones ed15c633c5 fix(quests): function derp 2021-03-30 15:24:31 -05:00
Sabe Jones 43018580b7 4.188.0 2021-03-30 15:20:14 -05:00
Sabe Jones e8c6908e6a feat(content): new achievement
also fixes Time Traveler and Egg Quest issues
2021-03-30 15:19:53 -05:00
Sabe Jones 6a49ae8397 Merge branch 'sabrecat/seasonal-cheevo' into release 2021-03-30 14:56:50 -05:00
Sabe Jones 4637e5ffdc 4.187.0 2021-03-29 18:00:56 -05:00
Sabe Jones 68e6d52c64 feat(content): Mystery Items April 2021 2021-03-29 18:00:32 -05:00
Sabe Jones e9c69f93a6 feat(content): seasonal quest achievement 2021-03-29 17:51:33 -05:00
Sabe Jones ef58360305 4.186.0 2021-03-25 15:47:56 -05:00
Sabe Jones b9ed916003 chore(sprites): compile 2021-03-25 15:21:32 -05:00
Sabe Jones ba18f6211d feat(content): new hatching potion + rereleases 2021-03-25 15:21:24 -05:00
Sabe Jones 24bf1c31d8 fix(onboarding): remove start date restriction 2021-03-25 15:20:55 -05:00
Sabe Jones e9fcd6c894 4.185.0 2021-03-23 13:03:37 -05:00
Sabe Jones 676a9348d0 feat(event): March-April goodness 2021-03-23 11:58:21 -05:00
Sabe Jones cd87d7d605 4.184.3 2021-03-15 15:44:06 -05:00
Sabe Jones d6714c43c0 feat(content): set up for bundle release 2021-03-15 15:43:55 -05:00
Sabe Jones 39d82843df 4.184.2 2021-03-12 17:58:55 -06:00
Sabe Jones 665ae4ea03 feat(event): Pi Day 2021 2021-03-12 17:58:49 -06:00
Sabe Jones d2795f3ac9 fix(stats): bump level cap to 9999 and related corrections 2021-03-11 16:44:34 -06:00
165 changed files with 12656 additions and 11997 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ import { v4 as uuid } from 'uuid';
import { model as User } from '../../website/server/models/user';
const MIGRATION_NAME = '20200314_pi_day';
const MIGRATION_NAME = '20210314_pi_day';
const progressCount = 1000;
let count = 0;
@@ -54,7 +54,7 @@ async function updateUser (user) {
export default async function processUsers () {
const query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2020-02-15') },
'auth.timestamps.loggedin': { $gt: new Date('2021-02-15') },
};
const fields = {
+6 -1
View File
@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.184.1",
"version": "4.188.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -2925,6 +2925,11 @@
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"optional": true
},
"bootstrap": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
"integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
},
"boxen": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
+2 -1
View File
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.184.1",
"version": "4.188.4",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.12.10",
@@ -17,6 +17,7 @@
"apple-auth": "^1.0.7",
"bcrypt": "^5.0.0",
"body-parser": "^1.18.3",
"bootstrap": "^4.6.0",
"compression": "^1.7.4",
"cookie-session": "^1.4.0",
"coupon-code": "^0.4.5",
@@ -535,24 +535,12 @@ describe('PUT /tasks/:id', () => {
});
expect(savedMonthly.nextDue.length).to.eql(6);
expect(moment(savedMonthly.nextDue[0]).toDate()).to.eql(
moment(date2).add(1, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[1]).toDate()).to.eql(
moment(date2).add(2, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[2]).toDate()).to.eql(
moment(date2).add(3, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[3]).toDate()).to.eql(
moment(date2).add(4, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[4]).toDate()).to.eql(
moment(date2).add(5, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[5]).toDate()).to.eql(
moment(date2).add(6, 'months').startOf('day').toDate(),
);
expect(moment(savedMonthly.nextDue[0]).isSame(moment(date2).add(1, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[1]).isSame(moment(date2).add(2, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[2]).isSame(moment(date2).add(3, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[3]).isSame(moment(date2).add(4, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[4]).isSame(moment(date2).add(5, 'months').startOf('day')));
expect(moment(savedMonthly.nextDue[5]).isSame(moment(date2).add(6, 'months').startOf('day')));
});
});
-14
View File
@@ -1,6 +1,5 @@
import moment from 'moment';
import {
hasActiveOnboarding,
hasCompletedOnboarding,
onOnboardingComplete,
checkOnboardingStatus,
@@ -17,19 +16,6 @@ describe('onboarding', () => {
user.auth.timestamps.created = moment('2019-12-20').toDate();
});
describe('hasActiveOnboarding', () => {
// The value of BEGIN DATE is available in common/script/libs/onboarding
it('returns true if the account is created after BEGIN_DATE', () => {
expect(hasActiveOnboarding(user)).to.eql(true);
});
it('returns false if the account is created before BEGIN_DATE', () => {
user.auth.timestamps.created = moment('2019-12-01').toDate();
expect(hasActiveOnboarding(user)).to.eql(false);
});
});
describe('hasCompletedOnboarding', () => {
it('returns false if no achievement has been awarded', () => {
const result = hasCompletedOnboarding(user);
+55 -70
View File
@@ -10094,6 +10094,12 @@
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"optional": true
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -10196,6 +10202,55 @@
"has-flag": "^3.0.0"
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.2.0",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz",
"integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==",
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"optional": true
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -25542,76 +25597,6 @@
}
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.1.2",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.1.2.tgz",
"integrity": "sha512-8QTxh+Fd+HB6fiL52iEVLKqE9N1JSlMXLR92Ijm6g8PZrwIxckgpqjPDWRP5TWxdiPaHR+alUWsnu1ShQOwt+Q==",
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-mugen-scroll": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
+1 -1
View File
@@ -28,7 +28,7 @@
"axios": "^0.21.1",
"axios-progress-bar": "^1.2.0",
"babel-eslint": "^10.1.0",
"bootstrap": "^4.5.3",
"bootstrap": "^4.6.0",
"bootstrap-vue": "^2.21.2",
"chai": "^4.1.2",
"core-js": "^3.8.3",
+1 -1
View File
@@ -544,6 +544,6 @@ export default {
<style src="@/assets/css/sprites/spritesmith-main-27.css"></style>
<style src="@/assets/css/sprites/spritesmith-main-28.css"></style>
<style src="@/assets/css/sprites/spritesmith-main-29.css"></style>
<!-- <style src="@/assets/css/sprites/spritesmith-main-30.css"></style> -->
<style src="@/assets/css/sprites/spritesmith-main-30.css"></style>
<style src="@/assets/css/sprites.css"></style>
<style src="smartbanner.js/dist/smartbanner.min.css"></style>
@@ -1,48 +1,48 @@
.achievement-alien {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1671px -1480px;
background-position: -1656px -1549px;
width: 24px;
height: 26px;
}
.achievement-alien2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -529px -1549px;
background-position: -578px -1549px;
width: 48px;
height: 52px;
}
.achievement-allThatGlitters2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -873px -1480px;
background-position: -934px -1480px;
width: 64px;
height: 56px;
}
.achievement-allYourBase2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -938px -1480px;
background-position: -999px -1480px;
width: 64px;
height: 56px;
}
.achievement-alpha2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -578px -1549px;
background-position: -627px -1549px;
width: 48px;
height: 52px;
}
.achievement-aridAuthority2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1003px -1480px;
background-position: -1064px -1480px;
width: 64px;
height: 56px;
}
.achievement-armor2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -627px -1549px;
background-position: -676px -1549px;
width: 48px;
height: 52px;
}
.achievement-backToBasics2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1328px -1480px;
background-position: -1389px -1480px;
width: 48px;
height: 56px;
}
@@ -54,31 +54,31 @@
}
.achievement-bewilder2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -676px -1549px;
background-position: -725px -1549px;
width: 48px;
height: 52px;
}
.achievement-birthday2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -725px -1549px;
background-position: -774px -1549px;
width: 48px;
height: 52px;
}
.achievement-boneCollector2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1377px -1480px;
background-position: -1438px -1480px;
width: 48px;
height: 56px;
}
.achievement-boot2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -774px -1549px;
background-position: -823px -1549px;
width: 48px;
height: 52px;
}
.achievement-bow2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -823px -1549px;
background-position: -872px -1549px;
width: 48px;
height: 52px;
}
@@ -90,85 +90,85 @@
}
.achievement-burnout2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -872px -1549px;
background-position: -921px -1549px;
width: 48px;
height: 52px;
}
.achievement-cactus2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -921px -1549px;
background-position: -970px -1549px;
width: 48px;
height: 52px;
}
.achievement-cake2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -970px -1549px;
background-position: -1019px -1549px;
width: 48px;
height: 52px;
}
.achievement-cave2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1019px -1549px;
background-position: -1068px -1549px;
width: 48px;
height: 52px;
}
.achievement-challenge2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1068px -1549px;
background-position: -1117px -1549px;
width: 48px;
height: 52px;
}
.achievement-comment2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1117px -1549px;
background-position: -1166px -1549px;
width: 48px;
height: 52px;
}
.achievement-completedTask2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1426px -1480px;
background-position: -1487px -1480px;
width: 48px;
height: 56px;
}
.achievement-congrats2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1166px -1549px;
background-position: -1215px -1549px;
width: 48px;
height: 52px;
}
.achievement-costumeContest2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1215px -1549px;
background-position: -1264px -1549px;
width: 48px;
height: 52px;
}
.achievement-createdTask2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1475px -1480px;
background-position: -1536px -1480px;
width: 48px;
height: 56px;
}
.achievement-dilatory2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1264px -1549px;
background-position: -1313px -1549px;
width: 48px;
height: 52px;
}
.achievement-dustDevil2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1524px -1480px;
background-position: -1585px -1480px;
width: 48px;
height: 56px;
}
.achievement-dysheartener2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1313px -1549px;
background-position: -1362px -1549px;
width: 48px;
height: 52px;
}
.achievement-fedPet2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1573px -1480px;
background-position: -1634px -1480px;
width: 48px;
height: 56px;
}
@@ -180,61 +180,61 @@
}
.achievement-friends2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1362px -1549px;
background-position: -1411px -1549px;
width: 48px;
height: 52px;
}
.achievement-getwell2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1411px -1549px;
background-position: -1460px -1549px;
width: 48px;
height: 52px;
}
.achievement-goodAsGold2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1622px -1480px;
background-position: -284px -1549px;
width: 48px;
height: 56px;
}
.achievement-goodluck2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1460px -1549px;
background-position: -1509px -1549px;
width: 48px;
height: 52px;
}
.achievement-greeting2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1509px -1549px;
background-position: -1558px -1549px;
width: 48px;
height: 52px;
}
.achievement-guild2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1558px -1549px;
background-position: -1607px -1549px;
width: 48px;
height: 52px;
}
.achievement-habitBirthday2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1607px -1549px;
background-position: 0px -1628px;
width: 48px;
height: 52px;
}
.achievement-habiticaDay2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1628px;
background-position: -49px -1628px;
width: 48px;
height: 52px;
}
.achievement-hatchedPet2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1549px;
background-position: -333px -1549px;
width: 48px;
height: 56px;
}
.achievement-heart2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -49px -1628px;
background-position: -98px -1628px;
width: 48px;
height: 52px;
}
@@ -246,13 +246,13 @@
}
.achievement-karaoke-2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -98px -1628px;
background-position: -147px -1628px;
width: 48px;
height: 52px;
}
.achievement-karaoke {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1671px -1507px;
background-position: -1568px -1628px;
width: 24px;
height: 26px;
}
@@ -270,7 +270,7 @@
}
.achievement-lostMasterclasser2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -147px -1628px;
background-position: -196px -1628px;
width: 48px;
height: 52px;
}
@@ -282,73 +282,73 @@
}
.achievement-monsterMagus2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -333px -1549px;
background-position: -382px -1549px;
width: 48px;
height: 56px;
}
.achievement-ninja2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -196px -1628px;
background-position: -245px -1628px;
width: 48px;
height: 52px;
}
.achievement-npc2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -245px -1628px;
background-position: -294px -1628px;
width: 48px;
height: 52px;
}
.achievement-nye2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -294px -1628px;
background-position: -343px -1628px;
width: 48px;
height: 52px;
}
.achievement-partyOn2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -343px -1628px;
background-position: -392px -1628px;
width: 48px;
height: 52px;
}
.achievement-partyUp2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -392px -1628px;
background-position: -441px -1628px;
width: 48px;
height: 52px;
}
.achievement-pearlyPro2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1068px -1480px;
background-position: -1129px -1480px;
width: 64px;
height: 56px;
}
.achievement-perfect2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -441px -1628px;
background-position: -490px -1628px;
width: 48px;
height: 52px;
}
.achievement-primedForPainting2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -382px -1549px;
background-position: -431px -1549px;
width: 48px;
height: 56px;
}
.achievement-purchasedEquipment2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -431px -1549px;
background-position: -480px -1549px;
width: 48px;
height: 56px;
}
.achievement-rat2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -490px -1628px;
background-position: -539px -1628px;
width: 48px;
height: 52px;
}
.achievement-redLetterDay2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1133px -1480px;
background-position: -1194px -1480px;
width: 64px;
height: 56px;
}
@@ -360,79 +360,85 @@
}
.achievement-royally-loyal2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -539px -1628px;
background-position: -588px -1628px;
width: 48px;
height: 52px;
}
.achievement-seafoam2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -588px -1628px;
background-position: -637px -1628px;
width: 48px;
height: 52px;
}
.achievement-seasonalSpecialist2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -873px -1480px;
width: 60px;
height: 64px;
}
.achievement-seeingRed2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -480px -1549px;
background-position: -529px -1549px;
width: 48px;
height: 56px;
}
.achievement-shield2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -637px -1628px;
background-position: -686px -1628px;
width: 48px;
height: 52px;
}
.achievement-shinySeed2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -686px -1628px;
background-position: -735px -1628px;
width: 48px;
height: 52px;
}
.achievement-skeletonCrew2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1198px -1480px;
background-position: -1259px -1480px;
width: 64px;
height: 56px;
}
.achievement-snowball2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -735px -1628px;
background-position: -784px -1628px;
width: 48px;
height: 52px;
}
.achievement-spookySparkles2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -784px -1628px;
background-position: -833px -1628px;
width: 48px;
height: 52px;
}
.achievement-stoikalm2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -833px -1628px;
background-position: -882px -1628px;
width: 48px;
height: 52px;
}
.achievement-sun2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -882px -1628px;
background-position: -931px -1628px;
width: 48px;
height: 52px;
}
.achievement-sword2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -931px -1628px;
background-position: -980px -1628px;
width: 48px;
height: 52px;
}
.achievement-thankyou2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -980px -1628px;
background-position: -1029px -1628px;
width: 48px;
height: 52px;
}
.achievement-thermometer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1029px -1628px;
background-position: -1078px -1628px;
width: 48px;
height: 52px;
}
@@ -444,61 +450,61 @@
}
.achievement-tree2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1078px -1628px;
background-position: -1127px -1628px;
width: 48px;
height: 52px;
}
.achievement-triadbingo2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1127px -1628px;
background-position: -1176px -1628px;
width: 48px;
height: 52px;
}
.achievement-ultimate-healer2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1176px -1628px;
background-position: -1225px -1628px;
width: 48px;
height: 52px;
}
.achievement-ultimate-mage2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1225px -1628px;
background-position: -1274px -1628px;
width: 48px;
height: 52px;
}
.achievement-ultimate-rogue2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1274px -1628px;
background-position: -1323px -1628px;
width: 48px;
height: 52px;
}
.achievement-ultimate-warrior2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1323px -1628px;
background-position: -1372px -1628px;
width: 48px;
height: 52px;
}
.achievement-undeadUndertaker2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1263px -1480px;
background-position: -1324px -1480px;
width: 64px;
height: 56px;
}
.achievement-unearned2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1372px -1628px;
background-position: -1421px -1628px;
width: 48px;
height: 52px;
}
.achievement-valentine2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1421px -1628px;
background-position: -1470px -1628px;
width: 48px;
height: 52px;
}
.achievement-wolf2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1470px -1628px;
background-position: -1519px -1628px;
width: 48px;
height: 52px;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,132 +1,186 @@
.quest_bronze {
.quest_armadillo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px 0px;
width: 219px;
height: 219px;
}
.quest_bunny {
.quest_atom1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1546px;
width: 210px;
height: 186px;
background-position: -1082px -1332px;
width: 250px;
height: 150px;
}
.quest_butterfly {
.quest_atom2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -642px -1534px;
width: 207px;
height: 138px;
}
.quest_atom3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -211px -1534px;
width: 216px;
height: 180px;
}
.quest_axolotl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px 0px;
width: 219px;
height: 219px;
}
.quest_cheetah {
.quest_badger {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -232px;
width: 219px;
height: 219px;
}
.quest_cow {
.quest_basilist {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px 0px;
width: 174px;
height: 213px;
background-position: -191px -1721px;
width: 189px;
height: 141px;
}
.quest_dilatory {
.quest_beetle {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
background-position: 0px -1332px;
width: 204px;
height: 201px;
}
.quest_dilatoryDistress1 {
.quest_blackPearl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -222px -1332px;
width: 210px;
height: 210px;
background-position: -1540px -214px;
width: 216px;
height: 216px;
}
.quest_dilatoryDistress2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -422px;
width: 150px;
height: 150px;
}
.quest_dilatoryDistress3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px 0px;
width: 219px;
height: 219px;
}
.quest_dilatory_derby {
.quest_bronze {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -232px;
width: 219px;
height: 219px;
}
.quest_dolphin {
.quest_bunny {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -220px;
background-position: 0px -1534px;
width: 210px;
height: 186px;
}
.quest_butterfly {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_dustbunnies {
.quest_cheetah {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px 0px;
width: 219px;
height: 219px;
}
.quest_cow {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px 0px;
width: 174px;
height: 213px;
}
.quest_dilatory {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -452px;
width: 219px;
height: 219px;
}
.quest_egg {
.quest_dilatoryDistress1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -214px;
width: 165px;
height: 207px;
background-position: -1320px -1112px;
width: 210px;
height: 210px;
}
.quest_evilsanta {
.quest_dilatoryDistress2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -724px;
width: 118px;
height: 131px;
background-position: -1762px -422px;
width: 150px;
height: 150px;
}
.quest_evilsanta2 {
.quest_dilatoryDistress3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -452px;
width: 219px;
height: 219px;
}
.quest_falcon {
.quest_dilatory_derby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -220px;
width: 219px;
height: 219px;
}
.quest_dolphin {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -452px;
width: 219px;
height: 219px;
}
.quest_ferret {
.quest_dustbunnies {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -452px;
width: 219px;
height: 219px;
}
.quest_fluorite {
.quest_egg {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px -214px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1762px -724px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px 0px;
width: 219px;
height: 219px;
}
.quest_frog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1332px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
.quest_falcon {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -220px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
.quest_ferret {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -440px;
width: 219px;
height: 219px;
}
.quest_fluorite {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -672px;
width: 219px;
height: 219px;
}
.quest_frog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px 0px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -672px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -672px;
width: 219px;
height: 219px;
}
.quest_goldenknight2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -211px -1546px;
background-position: -1333px -1332px;
width: 250px;
height: 150px;
}
@@ -138,253 +192,205 @@
}
.quest_gryphon {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -876px -1332px;
background-position: -648px -1332px;
width: 216px;
height: 177px;
}
.quest_guineapig {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -672px;
background-position: -660px -672px;
width: 219px;
height: 219px;
}
.quest_harpy {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -672px;
background-position: -880px -672px;
width: 219px;
height: 219px;
}
.quest_hedgehog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -433px -1332px;
background-position: -205px -1332px;
width: 219px;
height: 186px;
}
.quest_hippo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -672px;
background-position: -1100px 0px;
width: 219px;
height: 219px;
}
.quest_horse {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -672px;
background-position: -1100px -220px;
width: 219px;
height: 219px;
}
.quest_kangaroo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -672px;
background-position: -1100px -440px;
width: 219px;
height: 219px;
}
.quest_kraken {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1093px -1332px;
background-position: -865px -1332px;
width: 216px;
height: 177px;
}
.quest_lostMasterclasser1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px 0px;
background-position: -1100px -660px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -220px;
background-position: 0px -892px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -440px;
background-position: -220px -892px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -573px;
background-position: -1762px -573px;
width: 150px;
height: 150px;
}
.quest_mayhemMistiflying2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -660px;
background-position: -440px -892px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -892px;
background-position: -660px -892px;
width: 219px;
height: 219px;
}
.quest_monkey {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -892px;
background-position: -880px -892px;
width: 219px;
height: 219px;
}
.quest_moon1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -220px;
background-position: -1540px -431px;
width: 216px;
height: 216px;
}
.quest_moon2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -892px;
background-position: -1100px -892px;
width: 219px;
height: 219px;
}
.quest_moon3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -892px;
background-position: -1320px 0px;
width: 219px;
height: 219px;
}
.quest_moonstone1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -892px;
background-position: -1320px -220px;
width: 219px;
height: 219px;
}
.quest_moonstone2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -892px;
background-position: -1320px -440px;
width: 219px;
height: 219px;
}
.quest_moonstone3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px 0px;
background-position: -1320px -660px;
width: 219px;
height: 219px;
}
.quest_nudibranch {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -437px;
background-position: -1540px -648px;
width: 216px;
height: 216px;
}
.quest_octopus {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -653px -1332px;
background-position: -425px -1332px;
width: 222px;
height: 177px;
}
.quest_owl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -220px;
background-position: -1320px -880px;
width: 219px;
height: 219px;
}
.quest_peacock {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -654px;
background-position: -1540px -865px;
width: 216px;
height: 216px;
}
.quest_penguin {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1733px;
background-position: 0px -1721px;
width: 190px;
height: 183px;
}
.quest_pterodactyl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -440px;
background-position: 0px -1112px;
width: 219px;
height: 219px;
}
.quest_rat {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -660px;
background-position: -220px -1112px;
width: 219px;
height: 219px;
}
.quest_robot {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -880px;
background-position: -440px -1112px;
width: 219px;
height: 219px;
}
.quest_rock {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -871px;
background-position: -1540px -1082px;
width: 216px;
height: 216px;
}
.quest_rooster {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1527px -1332px;
background-position: -428px -1534px;
width: 213px;
height: 174px;
}
.quest_ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1112px;
background-position: -660px -1112px;
width: 219px;
height: 219px;
}
.quest_sabretooth {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -1112px;
background-position: -880px -1112px;
width: 219px;
height: 219px;
}
.quest_seaserpent {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -1112px;
width: 219px;
height: 219px;
}
.quest_sheep {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -1112px;
width: 219px;
height: 219px;
}
.quest_silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -1112px;
width: 219px;
height: 219px;
}
.quest_slime {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -1112px;
width: 219px;
height: 219px;
}
.quest_sloth {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -1112px;
width: 219px;
height: 219px;
}
.quest_snail {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -1088px;
width: 219px;
height: 213px;
}
.quest_snake {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1310px -1332px;
width: 216px;
height: 177px;
}
.quest_spider {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -462px -1546px;
width: 250px;
height: 150px;
}
.quest_squirrel {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px 0px;
width: 219px;
height: 219px;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,336 @@
.Pet-Yarn-CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px 0px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px 0px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px 0px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -100px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px -100px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px -100px;
width: 81px;
height: 99px;
}
.Pet-Yarn-White {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px 0px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px -100px;
width: 81px;
height: 99px;
}
.Pet_HatchingPotion_Amber {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -200px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Aquatic {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -200px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Aurora {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -200px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_AutumnLeaf {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -200px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Base {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_BirchBark {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_BlackPearl {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Bronze {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -269px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Celestial {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -269px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_CottonCandyBlue {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -269px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -269px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Cupid {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -269px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -397px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ember {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -397px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Fairy {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -397px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Floral {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -397px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Fluorite {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -338px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Frost {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -338px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ghost {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -338px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Glass {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -338px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Glow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -338px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -345px -338px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Holly {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -466px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_IcySnow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -466px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Peppermint {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -466px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_PolkaDot {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -466px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Purple {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -466px -276px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Rainbow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_RoseQuartz {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_RoyalPurple {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_SandSculpture {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -345px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -414px -407px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shadow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -535px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shimmer {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -535px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -535px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -535px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Spooky {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -535px -276px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_StainedGlass {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -535px -345px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_StarryNight {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Sunshine {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Thunderstorm {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Turquoise {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Vampire {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Watery {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -345px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_White {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -414px -476px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -483px -476px;
width: 68px;
height: 68px;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

After

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 KiB

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -213,10 +213,9 @@ export default {
}),
eventName () {
if (
!this.currentEvent || !this.currentEvent.event
|| this.currentEvent.season === 'normal' || this.currentEvent.season === 'valentines'
!this.currentEvent || !this.currentEvent.event || !this.currentEvent.gear
) return null;
return this.currentEvent.event.replace('NoPromo', '');
return this.currentEvent.event;
},
},
methods: {
+17 -1
View File
@@ -81,7 +81,7 @@
<span
v-if="member.items.currentPet"
class="current-pet"
:class="'Pet-' + member.items.currentPet"
:class="petClass"
></span>
</template>
</div>
@@ -121,9 +121,15 @@
.offset-kangaroo {
margin-top: 24px;
}
.invert {
filter: invert(100%);
}
</style>
<script>
import some from 'lodash/some';
import moment from 'moment';
import { mapState } from '@/libs/store';
import ClassBadge from '@/components/members/classBadge';
@@ -174,6 +180,7 @@ export default {
computed: {
...mapState({
flatGear: 'content.gear.flat',
currentEventList: 'worldState.data.currentEventList',
}),
hasClass () {
return this.$store.getters['members:hasClass'](this.member);
@@ -233,6 +240,15 @@ export default {
return null;
},
petClass () {
if (some(
this.currentEventList,
event => moment().isBetween(event.start, event.end) && event.aprilFools && event.aprilFools === 'invert',
)) {
return `Pet-${this.member.items.currentPet} invert`;
}
return `Pet-${this.member.items.currentPet}`;
},
},
methods: {
getGearClass (gearType) {
@@ -114,10 +114,7 @@
<script>
import { mapState, mapActions } from '@/libs/store';
import * as quests from '@/../../common/script/content/quests';
import {
hasCompletedOnboarding,
hasActiveOnboarding,
} from '@/../../common/script/libs/onboarding';
import { hasCompletedOnboarding } from '@/../../common/script/libs/onboarding';
import notificationsIcon from '@/assets/svg/notifications.svg';
import MenuDropdown from '../ui/customMenuDropdown';
import MessageCount from './messageCount';
@@ -300,7 +297,7 @@ export default {
return this.$store.getters['members:hasClass'](this.user);
},
showOnboardingGuide () {
return hasActiveOnboarding(this.user) && !hasCompletedOnboarding(this.user);
return !hasCompletedOnboarding(this.user);
},
},
mounted () {
@@ -103,9 +103,15 @@
transform: scale(1.2);
}
}
.invert {
filter: invert(100%);
}
</style>
<script>
import some from 'lodash/some';
import moment from 'moment';
import { v4 as uuid } from 'uuid';
import { mapState } from '@/libs/store';
import {
@@ -141,6 +147,7 @@ export default {
computed: {
...mapState({
userItems: 'user.data.items',
currentEventList: 'worldState.data.currentEventList',
}),
potionClass () {
return `Pet_HatchingPotion_${this.item.potionKey}`;
@@ -160,6 +167,13 @@ export default {
return isAllowedToFeed(this.item, this.userItems);
},
getPetItemClass () {
if (this.isOwned() && some(
this.currentEventList,
event => moment().isBetween(event.start, event.end) && event.aprilFools && event.aprilFools === 'invert',
)) {
return `Pet Pet-${this.item.key} ${this.item.eggKey} invert`;
}
if (this.isOwned() || (this.mountOwned() && this.isHatchable())) {
return `Pet Pet-${this.item.key} ${this.item.eggKey}`;
}
@@ -115,6 +115,7 @@ import { toNextLevel } from '@/../../common/script/statHelpers';
import { shouldDo } from '@/../../common/script/cron';
import { onOnboardingComplete } from '@/../../common/script/libs/onboarding';
import { mapState } from '@/libs/store';
import { MAX_LEVEL_HARD_CAP } from '@/../../common/script/constants';
import notifications from '@/mixins/notifications';
import guide from '@/mixins/guide';
@@ -394,6 +395,14 @@ const NOTIFICATIONS = {
achievement: 'legendaryBestiary',
},
},
ACHIEVEMENT_SEASONAL_SPECIALIST: {
achievement: true,
label: $t => `${$t('achievement')}: ${$t('achievementSeasonalSpecialist')}`,
modalId: 'generic-achievement',
data: {
achievement: 'seasonalSpecialist',
},
},
};
export default {
@@ -456,7 +465,7 @@ export default {
'ONBOARDING_COMPLETE', 'FIRST_DROPS', 'ACHIEVEMENT_BUG_BONANZA', 'ACHIEVEMENT_BARE_NECESSITIES',
'ACHIEVEMENT_FRESHWATER_FRIENDS', 'ACHIEVEMENT_GOOD_AS_GOLD', 'ACHIEVEMENT_ALL_THAT_GLITTERS',
'ACHIEVEMENT_BONE_COLLECTOR', 'ACHIEVEMENT_SKELETON_CREW', 'ACHIEVEMENT_SEEING_RED',
'ACHIEVEMENT_RED_LETTER_DAY', 'ACHIEVEMENT_LEGENDARY_BESTIARY',
'ACHIEVEMENT_RED_LETTER_DAY', 'ACHIEVEMENT_LEGENDARY_BESTIARY', 'ACHIEVEMENT_SEASONAL_SPECIALIST',
].forEach(type => {
handledNotifications[type] = true;
});
@@ -651,7 +660,7 @@ export default {
const lvlUps = afterLvl - beforeLvl;
let exp = afterExp - beforeExp;
if (lvlUps > 0) {
if (lvlUps > 0 || afterLvl >= MAX_LEVEL_HARD_CAP) {
let level = Math.trunc(beforeLvl);
exp += toNextLevel(level);
@@ -878,6 +887,7 @@ export default {
case 'ACHIEVEMENT_SEEING_RED':
case 'ACHIEVEMENT_RED_LETTER_DAY':
case 'ACHIEVEMENT_LEGENDARY_BESTIARY':
case 'ACHIEVEMENT_SEASONAL_SPECIALIST':
case 'GENERIC_ACHIEVEMENT':
this.showNotificationWithModal(notification);
break;
@@ -114,6 +114,7 @@
<script>
import clone from 'lodash/clone';
import { MAX_LEVEL_HARD_CAP } from '@/../../common/script/constants';
import { mapState } from '@/libs/store';
export default {
@@ -151,7 +152,9 @@ export default {
return;
}
if (this.restoreValues.stats.lvl > 999) this.restoreValues.stats.lvl = 999;
if (this.restoreValues.stats.lvl > MAX_LEVEL_HARD_CAP) {
this.restoreValues.stats.lvl = MAX_LEVEL_HARD_CAP;
}
const userChangedLevel = this.restoreValues.stats.lvl !== this.user.stats.lvl;
const userDidNotChangeExp = this.restoreValues.stats.exp === this.user.stats.exp;
+4 -1
View File
@@ -105,5 +105,8 @@
"achievementRedLetterDayModalText": "You tamed all the Red Mounts!",
"achievementLegendaryBestiary": "Legendary Bestiary",
"achievementLegendaryBestiaryText": "Has hatched all the mythical pets: Dragon, Flying Pig, Gryphon, Sea Serpent, and Unicorn!",
"achievementLegendaryBestiaryModalText": "You collected all the mythical pets!"
"achievementLegendaryBestiaryModalText": "You collected all the mythical pets!",
"achievementSeasonalSpecialist": "Seasonal Specialist",
"achievementSeasonalSpecialistText": "Has completed all the Spring and Winter seasonal quests: Egg Hunt, Trapper Santa, and Find the Cub!",
"achievementSeasonalSpecialistModalText": "You completed all the seasonal quests!"
}
+1
View File
@@ -302,6 +302,7 @@
"hatchingPotionAutumnLeaf": "Autumn Leaf",
"hatchingPotionBlackPearl": "Black Pearl",
"hatchingPotionStainedGlass": "Stained Glass",
"hatchingPotionPolkaDot": "Polka Dot",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs. Available for purchase until <%= date(locale) %>.",
+36
View File
@@ -389,6 +389,15 @@
"headSpecialNye2020Text": "Extravagant Party Hat",
"headSpecialNye2020Notes": "You've received an Extravagant Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.",
"weaponSpecialSpring2021RogueText": "Twin Flower Bloom",
"weaponSpecialSpring2021RogueNotes": "You know what's better than dual-wielding flowers? QUADRUPLE wielding flowers! Increases Strength by <%= str %>. Limited Edition 2021 Spring Gear.",
"weaponSpecialSpring2021WarriorText": "Hammer of the Sun",
"weaponSpecialSpring2021WarriorNotes": "Harness the power of the sun against your enemies, and let the sunstone bring you luck! Increases Strength by <%= str %>. Limited Edition 2021 Spring Gear.",
"weaponSpecialSpring2021MageText": "Swan Plume",
"weaponSpecialSpring2021MageNotes": "Throw, beat, treadle, rest! Swish this magnificent feather in time to conduct the music of your magic. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"weaponSpecialSpring2021HealerText": "Willow Branch",
"weaponSpecialSpring2021HealerNotes": "The bark and leaves of this fresh cutting are known for their ability to relieve pain. Or you can plant it and watch it grow! Increases Intelligence by <%= int %>. Limited Edition 2021 Spring Gear.",
"weaponMystery201411Text": "Pitchfork of Feasting",
"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",
@@ -407,6 +416,8 @@
"weaponMystery202002Notes": "An accessory that lends you an air of mystery and romance. Sun protection is a bonus! Confers no benefit. February 2020 Subscriber Item.",
"weaponMystery202102Text": "Charming Wand",
"weaponMystery202102Notes": "The glowing pink gem in this wand holds the power to spread joy and friendship far and wide! Confers no benefit. February 2021 Subscriber Item.",
"weaponMystery202104Text": "Thorny Thistle Staff",
"weaponMystery202104Notes": "Your enemies had better look out- you've got powerful and prickly defenses! Confers no benefit. April 2021 Subscriber Item.",
"weaponMystery301404Text": "Steampunk Cane",
"weaponMystery301404Notes": "Excellent for taking a turn about town. March 3015 Subscriber Item. Confers no benefit.",
@@ -908,6 +919,15 @@
"armorSpecialWinter2021HealerText": "Arctic Parka",
"armorSpecialWinter2021HealerNotes": "Defy the chill winds with the best protection available north of the Circle! Increases Constitution by <%= con %>. Limited Edition 2020-2021 Winter Gear.",
"armorSpecialSpring2021RogueText": "Twin Flower Stem",
"armorSpecialSpring2021RogueNotes": "No one will see you waiting in amBUSH with this cunning armor; you look like a plant from every angle. Increases Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"armorSpecialSpring2021WarriorText": "Armor of the Sun",
"armorSpecialSpring2021WarriorNotes": "Be careful you don't dazzle yourself as this sunstone armor catches the light! Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"armorSpecialSpring2021MageText": "White Swan's Splendor",
"armorSpecialSpring2021MageNotes": "Your transformation is complete! Take to the sky, or to the lake, and sing for joy! Increases Intelligence by <%= int %>. Limited Edition 2021 Spring Gear.",
"armorSpecialSpring2021HealerText": "Willow Bark Coat",
"armorSpecialSpring2021HealerNotes": "This armor helps you bend instead of break when buffeted by wind or weapon. Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor",
@@ -1006,6 +1026,8 @@
"armorMystery202102Notes": "Sail across the universe in fine style in this buoyantly bright dress. Confers no benefit. February 2021 Subscriber Item.",
"armorMystery202103Text": "Blossom Viewing Robes",
"armorMystery202103Notes": "These soft and breezy robes are perfect for a tea party beneath the showy spring trees. Confers no benefit. March 2021 Subscriber Item.",
"armorMystery202104Text": "Downy Thistle Armor",
"armorMystery202104Notes": "Soft on the inside, spiky on the outside, stylish everywhere! Confers no benefit. April 2021 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
"armorMystery301703Text": "Steampunk Peacock Gown",
@@ -1528,6 +1550,15 @@
"headSpecialWinter2021HealerText": "Arctic Exploration Headgear",
"headSpecialWinter2021HealerNotes": "A surprising amount of heat escapes through the head! Not if you're wearing this thick hood and goggles, though. There'll be no icicles on YOUR eyelashes! Increases Intelligence by <%= int %>. Limited Edition 2020-2021 Winter Gear.",
"headSpecialSpring2021RogueText": "Twin Flower Hat",
"headSpecialSpring2021RogueNotes": "Let's keep the flowery language to a minimum: this hat will help you blend in with the spring flowers! Increases Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"headSpecialSpring2021WarriorText": "Helm of the Sun",
"headSpecialSpring2021WarriorNotes": "Don't fear! The sunstone in this helm will help you bring to light those deepest, darkest red to-dos. Increases Strength by <%= str %>. Limited Edition 2021 Spring Gear.",
"headSpecialSpring2021MageText": "Cygnet Circlet",
"headSpecialSpring2021MageNotes": "Set this airy crown upon your brow, and the birds of the water will come attend to you. To what quest will you call them? Increases Perception by <%= per %>. Limited Edition 2021 Spring Gear.",
"headSpecialSpring2021HealerText": "Salix Wreath",
"headSpecialSpring2021HealerNotes": "Weep not, friends! A Healer is here to soothe your suffering! Increases Intelligence by <%= int %>. Limited Edition 2021 Spring Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -2005,6 +2036,11 @@
"shieldSpecialWinter2021HealerText": "Arctic Armguards",
"shieldSpecialWinter2021HealerNotes": "These mighty mitts stop weapons cold. Increases Constitution by <%= con %>. Limited Edition 2020-2021 Winter Gear.",
"shieldSpecialSpring2021WarriorText": "Shield of the Sun",
"shieldSpecialSpring2021WarriorNotes": "The beauty in this roughly-shaped sunstone will shine even in the deepest caves and darkest dungeons. Hold it high! Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"shieldSpecialSpring2021HealerText": "Salicylic Shield",
"shieldSpecialSpring2021HealerNotes": "A leafy green bundle that heralds shelter and compassion. Increases Constitution by <%= con %>. Limited Edition 2021 Spring Gear.",
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",
+4
View File
@@ -163,6 +163,10 @@
"winter2021WinterMoonMageSet": "Winter Moon (Mage)",
"winter2021ArcticExplorerHealerSet": "Arctic Explorer (Healer)",
"winter2021HollyIvyRogueSet": "Holly and Ivy (Rogue)",
"spring2021SunstoneWarriorSet": "Sunstone (Warrior)",
"spring2021SwanMageSet": "Swan (Mage)",
"spring2021WillowHealerSet": "Willow (Healer)",
"spring2021TwinFlowerRogueSet": "Twin Flower (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.",
"dateEndMarch": "April 30",
+1 -1
View File
@@ -729,7 +729,7 @@
"questAlligatorUnlockText": "Unlocks Alligator Eggs for purchase in the Market",
"oddballsText": "Oddballs Quest Bundle",
"oddballsNotes": "Contains 'The Jelly Regent,' 'Escape the Cave Creature,' and 'A Tangled Yarn.' Available until June 30.",
"oddballsNotes": "Contains 'The Jelly Regent,' 'Escape the Cave Creature,' and 'A Tangled Yarn.' Available until April 30.",
"birdBuddiesText": "Bird Buddies Quest Bundle",
"birdBuddiesNotes": "Contains 'The Fowl Frost,' 'Rooster Rampage,' and 'The Push-and-Pull Peacock.' Available until December 31.",
@@ -120,6 +120,7 @@
"mysterySet202101": "Snazzy Snow Leopard Set",
"mysterySet202102": "Charming Champion Set",
"mysterySet202103": "Blossom Viewing Set",
"mysterySet202104": "Thistle Guardian Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
+1
View File
@@ -1,6 +1,7 @@
export const MAX_HEALTH = 50;
export const MAX_LEVEL = 100;
export const MAX_STAT_POINTS = MAX_LEVEL;
export const MAX_LEVEL_HARD_CAP = 9999;
export const ATTRIBUTES = ['str', 'int', 'con', 'per'];
export const MAX_INCENTIVES = 500;
@@ -237,6 +237,11 @@ const basicAchievs = {
titleKey: 'achievementLegendaryBestiary',
textKey: 'achievementLegendaryBestiaryText',
},
seasonalSpecialist: {
icon: 'achievement-seasonalSpecialist',
titleKey: 'achievementSeasonalSpecialist',
textKey: 'achievementSeasonalSpecialistText',
},
};
Object.assign(achievementsData, basicAchievs);
+1 -1
View File
@@ -160,7 +160,7 @@ const bundles = {
'yarn',
],
canBuy () {
return moment().isBetween('2019-06-10', '2019-07-03');
return moment().isBetween('2021-03-16T08:00-05:00', '2021-03-31T20:00-05:00');
},
type: 'quests',
value: 7,
@@ -8,25 +8,37 @@ const gemsPromo = {
'84gems': 125,
};
// IMPORTANT: The end date should be one to two days AFTER the actual end of
// the event, to allow people in different timezones to still buy the
// event gear up until at least the actual end of the event.
// Unless we want a precise ending, for example during a Gems sale / promotion.
export const EVENTS = {
noCurrentEvent2021: {
start: '2021-02-16T08:00-05:00',
end: '2021-03-07T08:00-05:00',
start: '2021-04-30T08:00-05:00',
end: '2021-08-23T08:00-05:00',
season: 'normal',
npcImageSuffix: '',
},
spring2021: {
start: '2021-03-23T08:00-05:00',
end: '2021-04-30T20:00-05:00',
npcImageSuffix: 'spring',
season: 'spring',
gear: true,
},
aprilFools2021: {
start: '2021-04-01T08:00-05:00',
end: '2021-04-02T08:00-05:00',
aprilFools: 'invert',
},
valentines2021: {
start: '2021-02-07T08:00-05:00',
end: '2021-02-16T08:00-05:00',
season: 'valentines',
npcImageSuffix: 'valentines',
},
winter2021: {
start: '2020-12-17T08:00-05:00',
end: '2021-01-31T20:00-05:00',
season: 'winter',
npcImageSuffix: 'winter',
gear: true,
},
winter2021Promo: { // used in tests, not an actual past event
start: '2020-12-01T08:00-05:00',
@@ -34,45 +46,41 @@ export const EVENTS = {
season: 'winter',
promo: 'g1g1',
},
noCurrentEvent2020: {
start: '2020-10-31T20:00-05:00',
end: '2020-12-17T08:00-05:00',
season: 'normal',
},
fall2020: {
start: '2020-09-22T08:00-04:00',
end: '2020-10-31T20:00-04:00',
gear: true,
gemsPromo,
},
// Dates from this point on (^) are in the RFC 2822 format, see https://momentjs.com/docs/#/parsing/string/
summer2020: { start: '2020-06-18', end: '2020-08-02' },
spring2020: { start: '2020-03-17', end: '2020-05-02' },
winter2020: { start: '2019-12-19', end: '2020-02-02' },
fall2019: { start: '2019-09-24', end: '2019-11-02' },
summer2019: { start: '2019-06-18', end: '2019-08-02' },
spring2019: { start: '2019-03-19', end: '2019-05-02' },
winter2019: { start: '2018-12-19', end: '2019-02-02' },
fall2018: { start: '2018-09-20', end: '2018-11-02' },
summer2018: { start: '2018-06-19', end: '2018-08-02' },
spring2018: { start: '2018-03-20', end: '2018-05-02' },
winter2018: { start: '2017-12-19', end: '2018-02-02' },
fall2017: { start: '2017-09-21', end: '2017-11-02' },
summer2017: { start: '2017-06-20', end: '2017-08-02' },
spring2017: { start: '2017-03-21', end: '2017-05-02' },
winter2017: { start: '2016-12-16', end: '2017-02-02' },
fall2016: { start: '2016-09-20', end: '2016-11-02' },
summer2016: { start: '2016-06-21', end: '2016-08-02' },
spring2016: { start: '2016-03-18', end: '2016-05-02' },
winter2016: { start: '2015-12-18', end: '2016-02-02' },
summer2020: { start: '2020-06-18', end: '2020-08-02', gear: true },
spring2020: { start: '2020-03-17', end: '2020-05-02', gear: true },
winter2020: { start: '2019-12-19', end: '2020-02-02', gear: true },
fall2019: { start: '2019-09-24', end: '2019-11-02', gear: true },
summer2019: { start: '2019-06-18', end: '2019-08-02', gear: true },
spring2019: { start: '2019-03-19', end: '2019-05-02', gear: true },
winter2019: { start: '2018-12-19', end: '2019-02-02', gear: true },
fall2018: { start: '2018-09-20', end: '2018-11-02', gear: true },
summer2018: { start: '2018-06-19', end: '2018-08-02', gear: true },
spring2018: { start: '2018-03-20', end: '2018-05-02', gear: true },
winter2018: { start: '2017-12-19', end: '2018-02-02', gear: true },
fall2017: { start: '2017-09-21', end: '2017-11-02', gear: true },
summer2017: { start: '2017-06-20', end: '2017-08-02', gear: true },
spring2017: { start: '2017-03-21', end: '2017-05-02', gear: true },
winter2017: { start: '2016-12-16', end: '2017-02-02', gear: true },
fall2016: { start: '2016-09-20', end: '2016-11-02', gear: true },
summer2016: { start: '2016-06-21', end: '2016-08-02', gear: true },
spring2016: { start: '2016-03-18', end: '2016-05-02', gear: true },
winter2016: { start: '2015-12-18', end: '2016-02-02', gear: true },
gaymerx: { start: '2016-09-29', end: '2016-10-03' },
fall2015: { start: '2015-09-21', end: '2015-11-01' },
summer2015: { start: '2015-06-20', end: '2015-08-02' },
spring2015: { start: '2015-03-20', end: '2015-05-02' },
winter2015: { start: '2014-12-21', end: '2015-02-02' },
fall: { start: '2014-09-21', end: '2014-11-01' },
summer: { start: '2014-06-20', end: '2014-08-01' },
spring: { start: '2014-03-21', end: '2014-05-01' },
fall2015: { start: '2015-09-21', end: '2015-11-01', gear: true },
summer2015: { start: '2015-06-20', end: '2015-08-02', gear: true },
spring2015: { start: '2015-03-20', end: '2015-05-02', gear: true },
winter2015: { start: '2014-12-21', end: '2015-02-02', gear: true },
fall: { start: '2014-09-21', end: '2014-11-01', gear: true },
summer: { start: '2014-06-20', end: '2014-08-01', gear: true },
spring: { start: '2014-03-21', end: '2014-05-01', gear: true },
birthday: { start: '2017-01-31', end: '2017-02-02' },
winter: { start: '2013-12-31', end: '2014-02-01' },
};
@@ -48,6 +48,11 @@ const QUEST_SERIES_ACHIEVEMENTS = {
'frog',
'hippo',
],
seasonalSpecialist: [
'egg',
'evilsanta',
'evilsanta2',
],
};
export default QUEST_SERIES_ACHIEVEMENTS;
@@ -86,11 +86,16 @@ const SEASONAL_SETS = {
'spring2019RobinHealerSet',
// spring 2020
'spring2020BeetleWarriorSet',
'spring2020IrisHealerSet',
'spring2020LapisLazuliRogueSet',
'spring2020PuddleMageSet',
// spring 2021
'spring2021SwanMageSet',
'spring2021WillowHealerSet',
'spring2021SunstoneWarriorSet',
'spring2021TwinFlowerRogueSet',
],
summer: [
// summer 2014
@@ -52,6 +52,7 @@ const armor = {
202101: { },
202102: { },
202103: { },
202104: { },
301404: { },
301703: { },
301704: { },
@@ -213,6 +214,9 @@ const weapon = {
201911: { },
202002: { },
202102: { },
202104: {
twoHanded: true,
},
301404: { },
};
@@ -1,5 +1,5 @@
import moment from 'moment';
import cloneDeep from 'lodash/cloneDeep';
import pickBy from 'lodash/pickBy';
import defaults from 'lodash/defaults';
import find from 'lodash/find';
import upperFirst from 'lodash/upperFirst';
@@ -14,12 +14,11 @@ import * as takeThisGear from './special-takeThis';
import * as wonderconGear from './special-wondercon';
import t from '../../../translation';
const CURRENT_EVENT = find(EVENTS, event => moment().isBetween(event.start, event.end));
const CURRENT_EVENT = find(
EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);
const gearEvents = cloneDeep(EVENTS);
['winter', 'birthday', 'gaymerx', 'noCurrentEvent2020', 'winter2021NoPromo', 'noCurrentEvent2021'].forEach(nonGearEvent => {
delete gearEvents[nonGearEvent];
}); // TODO maybe we can match with regex instead of manually specifying here?
const gearEvents = pickBy(EVENTS, event => event.gear);
const armor = {
0: backerGear.armorSpecial0,
@@ -664,6 +663,18 @@ const armor = {
value: 0,
canOwn: ownsItem('armor_special_birthday2021'),
},
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Mage: {
set: 'spring2021SwanMageSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
};
const armorStats = {
@@ -1671,6 +1682,18 @@ const head = {
value: 0,
canOwn: ownsItem('head_special_nye2020'),
},
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Mage: {
set: 'spring2021SwanMageSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
};
const headStats = {
@@ -2403,6 +2426,15 @@ const shield = {
winter2021Healer: {
set: 'winter2021ArcticExplorerHealerSet',
},
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
};
const shieldStats = {
@@ -3025,6 +3057,18 @@ const weapon = {
winter2021Healer: {
set: 'winter2021ArcticExplorerHealerSet',
},
spring2021Rogue: {
set: 'spring2021TwinFlowerRogueSet',
},
spring2021Warrior: {
set: 'spring2021SunstoneWarriorSet',
},
spring2021Mage: {
set: 'spring2021SwanMageSet',
},
spring2021Healer: {
set: 'spring2021WillowHealerSet',
},
};
const weaponStats = {
@@ -191,6 +191,14 @@ const premium = {
value: 2,
text: t('hatchingPotionRainbow'),
limited: true,
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndMarch'),
previousDate: t('marchYYYY', { year: 2019 }),
}),
event: EVENTS.spring2021,
canBuy () {
return moment().isBefore('2021-04-30T20:00-04:00');
},
},
Glass: {
value: 2,
@@ -340,12 +348,13 @@ const premium = {
text: t('hatchingPotionBirchBark'),
limited: true,
event: EVENTS.spring2020,
canBuy () {
return moment().isBefore('2020-05-02');
},
_addlNotes: t('premiumPotionAddlNotes', {
date: t('dateEndMarch'),
_addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndMarch'),
previousDate: t('marchYYYY', { year: 2020 }),
}),
canBuy () {
return moment().isBefore('2021-04-30T20:00-04:00');
},
},
Fluorite: {
value: 2,
@@ -422,6 +431,18 @@ const premium = {
return moment().isBetween('2020-12-22T08:00-04:00', '2021-01-31T20:00-04:00');
},
},
PolkaDot: {
value: 2,
text: t('hatchingPotionPolkaDot'),
limited: true,
event: EVENTS.spring2021,
_addlNotes: t('premiumPotionAddlNotes', {
date: t('dateEndMarch'),
}),
canBuy () {
return moment().isBefore('2021-04-30T20:00-04:00');
},
},
};
const wacky = {
@@ -434,7 +455,7 @@ const wacky = {
previousDate: t('marchYYYY', { year: 2019 }),
}),
canBuy () {
return moment().isBefore('2020-05-02');
return moment().isBetween('2021-04-01T08:00-05:00', '2021-04-30T20:00-05:00');
},
},
Dessert: {
+5 -2
View File
@@ -519,7 +519,7 @@ const quests = {
value: 1,
category: 'pet',
canBuy () {
return false;
return moment().isBefore('2021-04-30T20:00-05:00');
},
collect: {
plainEgg: {
@@ -3585,7 +3585,10 @@ const quests = {
completion: t('questWaffleCompletion'),
value: 4,
category: 'hatchingPotion',
event: EVENTS.spring2020,
event: EVENTS.spring2021,
canBuy () {
return moment().isBetween('2021-04-01T08:00-05:00', '2021-04-30T20:00-05:00');
},
boss: {
name: t('questWaffleBoss'),
hp: 500,
@@ -3,6 +3,7 @@ import filter from 'lodash/filter';
import keys from 'lodash/keys';
import union from 'lodash/union';
import reduce from 'lodash/reduce';
import moment from 'moment';
import mysterySets from './mystery-sets';
import gear from './gear';
@@ -24,7 +25,11 @@ const timeTravelerStore = user => {
ownedKeys = keys(typeof owned.toObject === 'function' ? owned.toObject() : owned);
ownedKeys = union(ownedKeys, unopenedGifts);
return reduce(mystery, (m, v, k) => {
if (k === 'wondercon' || ownedKeys.indexOf(v.items[0].key) !== -1) {
if (
k === 'wondercon'
|| ownedKeys.indexOf(v.items[0].key) !== -1
|| (moment(k).isAfter() && moment(k).isBefore('3000-01-01'))
) {
return m;
}
m[k] = v;
+6 -1
View File
@@ -1,6 +1,7 @@
import each from 'lodash/each';
import {
MAX_HEALTH,
MAX_LEVEL_HARD_CAP,
MAX_STAT_POINTS,
} from '../constants';
import { toNextLevel } from '../statHelpers';
@@ -24,7 +25,11 @@ export default function updateStats (user, stats, req = {}, analytics) {
while (stats.exp >= experienceToNextLevel) {
stats.exp -= experienceToNextLevel;
user.stats.lvl += 1;
if (user.stats.lvl >= MAX_LEVEL_HARD_CAP) {
user.stats.lvl = MAX_LEVEL_HARD_CAP;
} else {
user.stats.lvl += 1;
}
experienceToNextLevel = toNextLevel(user.stats.lvl);
user.stats.hp = MAX_HEALTH;
+2
View File
@@ -10,6 +10,7 @@ import {
MAX_HEALTH,
MAX_INCENTIVES,
MAX_LEVEL,
MAX_LEVEL_HARD_CAP,
MAX_STAT_POINTS,
MAX_SUMMARY_SIZE_FOR_CHALLENGES,
MAX_SUMMARY_SIZE_FOR_GUILDS,
@@ -114,6 +115,7 @@ api.constants = {
MINIMUM_PASSWORD_LENGTH,
MAX_MESSAGE_LENGTH,
MAX_GIFT_MESSAGE_LENGTH,
MAX_LEVEL_HARD_CAP,
};
// TODO Move these under api.constants
api.maxLevel = MAX_LEVEL;
@@ -209,6 +209,7 @@ function _getBasicAchievements (user, language) {
_addSimple(result, user, { path: 'seeingRed', language });
_addSimple(result, user, { path: 'redLetterDay', language });
_addSimple(result, user, { path: 'legendaryBestiary', language });
_addSimple(result, user, { path: 'seasonalSpecialist', language });
_addSimpleWithMasterCount(result, user, { path: 'beastMaster', language });
_addSimpleWithMasterCount(result, user, { path: 'mountMaster', language });
+1 -10
View File
@@ -1,12 +1,3 @@
import moment from 'moment';
const BEGIN_DATE = moment('2019-12-18');
// Only users that signed up after the BEGIN DATE should see the onboarding
export function hasActiveOnboarding (user) {
return BEGIN_DATE.isBefore(user.auth.timestamps.created);
}
export function hasCompletedOnboarding (user) {
return (
user.achievements.createdTask === true
@@ -24,7 +15,7 @@ export function onOnboardingComplete (user) {
// Add notification and awards (server)
export function checkOnboardingStatus (user, req, analytics) {
if (hasActiveOnboarding(user) && hasCompletedOnboarding(user) && user.addNotification) {
if (hasCompletedOnboarding(user) && user.addNotification) {
user.addNotification('ONBOARDING_COMPLETE');
if (analytics) {
analytics.track('onboarding complete', {
@@ -6,7 +6,9 @@ import {
SEASONAL_SETS,
} from '../content/constants';
const CURRENT_EVENT = find(EVENTS, event => moment().isBetween(event.start, event.end));
const CURRENT_EVENT = find(
EVENTS, event => moment().isBetween(event.start, event.end) && Boolean(event.season),
);
const SHOP_OPEN = CURRENT_EVENT && ['winter', 'spring', 'summer', 'fall'].includes(CURRENT_EVENT.season);
@@ -15,35 +17,37 @@ export default {
currentSeason: SHOP_OPEN ? upperFirst(CURRENT_EVENT.season) : 'Closed',
dateRange: { start: '2020-12-17', end: '2021-01-31' },
dateRange: {
start: moment(CURRENT_EVENT.start).format('YYYY-MM-DD'),
end: moment(CURRENT_EVENT.end).format('YYYY-MM-DD'),
},
availableSets: SHOP_OPEN
? [
...SEASONAL_SETS.winter,
...SEASONAL_SETS[CURRENT_EVENT.season],
]
: [],
pinnedSets: SHOP_OPEN
? {
healer: 'winter2021ArcticExplorerHealerSet',
rogue: 'winter2021HollyIvyRogueSet',
warrior: 'winter2021IceFishingWarriorSet',
wizard: 'winter2021WinterMoonMageSet',
healer: 'spring2021WillowHealerSet',
rogue: 'spring2021TwinFlowerRogueSet',
warrior: 'spring2021SunstoneWarriorSet',
wizard: 'spring2021SwanMageSet',
}
: {},
availableSpells: moment().isBetween('2020-12-29T08:00-04:00', '2021-01-31T20:00-04:00')
availableSpells: moment().isBetween('2021-04-06T08:00-05:00', '2021-04-30T20:00-05:00')
? [
'snowball',
'shinySeed',
]
: [],
availableQuests: SHOP_OPEN
availableQuests: SHOP_OPEN && moment().isAfter('2021-03-30T08:00-05:00')
? [
'evilsanta',
'evilsanta2',
'egg',
]
: [],
featuredSet: 'winter2020CarolOfTheMageSet',
featuredSet: 'spring2020PuddleMageSet',
};
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 720 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 B

Some files were not shown because too many files have changed in this diff Show More