Compare commits

..

31 Commits

Author SHA1 Message Date
Sabe Jones 309634f751 4.189.0 2021-04-06 17:10:54 -05:00
Sabe Jones 2e246dad28 chore(sprites): compile 2021-04-06 17:09:43 -05:00
Sabe Jones 8707c80dc1 feat(content): Armoire and Backgrounds April 2021 2021-04-06 17:09:13 -05:00
Sabe Jones f61beee9e9 fix(testing): don't blow up Seasonal Shop 2021-04-06 15:55:17 -05:00
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
Sabe Jones d7aa448676 4.184.1 2021-03-10 15:36:46 -06:00
Sabe Jones 96492e5a0e fix(api): correct world, cap level 2021-03-10 15:36:17 -06:00
204 changed files with 25434 additions and 24619 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.0",
"version": "4.189.0",
"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.0",
"version": "4.189.0",
"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>
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
@@ -1,132 +1,210 @@
.quest_bronze {
.banner_flair_dysheartener {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1757px -856px;
width: 69px;
height: 18px;
}
.phobia_dysheartener {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1519px;
width: 201px;
height: 195px;
}
.quest_alligator {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1102px -1112px;
width: 201px;
height: 213px;
}
.quest_amber {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px 0px;
width: 219px;
height: 219px;
}
.quest_bunny {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1546px;
width: 210px;
height: 186px;
}
.quest_butterfly {
.quest_armadillo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px 0px;
width: 219px;
height: 219px;
}
.quest_cheetah {
.quest_atom1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -877px -1332px;
width: 250px;
height: 150px;
}
.quest_atom2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1379px -1332px;
width: 207px;
height: 138px;
}
.quest_atom3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -413px -1519px;
width: 216px;
height: 180px;
}
.quest_axolotl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -232px;
width: 219px;
height: 219px;
}
.quest_cow {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px 0px;
width: 174px;
height: 213px;
}
.quest_dilatory {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_dilatoryDistress1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -222px -1332px;
width: 210px;
height: 210px;
}
.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_badger {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -232px;
width: 219px;
height: 219px;
}
.quest_dolphin {
.quest_basilist {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -630px -1519px;
width: 189px;
height: 141px;
}
.quest_beetle {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1304px -1112px;
width: 204px;
height: 201px;
}
.quest_blackPearl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px 0px;
width: 216px;
height: 216px;
}
.quest_bronze {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -232px;
width: 219px;
height: 219px;
}
.quest_bunny {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -202px -1519px;
width: 210px;
height: 186px;
}
.quest_butterfly {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px 0px;
width: 219px;
height: 219px;
}
.quest_cheetah {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -220px;
width: 219px;
height: 219px;
}
.quest_dustbunnies {
.quest_cow {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -452px;
width: 219px;
height: 219px;
background-position: -1757px 0px;
width: 174px;
height: 213px;
}
.quest_egg {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -214px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -724px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
.quest_dilatory {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -452px;
width: 219px;
height: 219px;
}
.quest_falcon {
.quest_dilatoryDistress1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -1085px;
width: 210px;
height: 210px;
}
.quest_dilatoryDistress2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1757px -422px;
width: 150px;
height: 150px;
}
.quest_dilatoryDistress3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -452px;
width: 219px;
height: 219px;
}
.quest_ferret {
.quest_dilatory_derby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -452px;
width: 219px;
height: 219px;
}
.quest_dolphin {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -452px;
width: 219px;
height: 219px;
}
.quest_fluorite {
.quest_dustbunnies {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px 0px;
width: 219px;
height: 219px;
}
.quest_frog {
.quest_egg {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1332px;
width: 221px;
height: 213px;
background-position: -1757px -214px;
width: 165px;
height: 207px;
}
.quest_ghost_stag {
.quest_evilsanta {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1757px -724px;
width: 118px;
height: 131px;
}
.quest_evilsanta2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -220px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
.quest_falcon {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -440px;
width: 219px;
height: 219px;
}
.quest_ferret {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -672px;
width: 219px;
height: 219px;
}
.quest_fluorite {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -672px;
width: 219px;
height: 219px;
}
.quest_frog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -1112px;
width: 221px;
height: 213px;
}
.quest_ghost_stag {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -672px;
width: 219px;
height: 219px;
}
.quest_goldenknight1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -672px;
width: 219px;
height: 219px;
}
.quest_goldenknight2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -211px -1546px;
background-position: -1128px -1332px;
width: 250px;
height: 150px;
}
@@ -138,253 +216,181 @@
}
.quest_gryphon {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -876px -1332px;
background-position: -443px -1332px;
width: 216px;
height: 177px;
}
.quest_guineapig {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -672px;
background-position: -880px -672px;
width: 219px;
height: 219px;
}
.quest_harpy {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -672px;
background-position: -1100px 0px;
width: 219px;
height: 219px;
}
.quest_hedgehog {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -433px -1332px;
background-position: 0px -1332px;
width: 219px;
height: 186px;
}
.quest_hippo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -672px;
background-position: -1100px -220px;
width: 219px;
height: 219px;
}
.quest_horse {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -672px;
background-position: -1100px -440px;
width: 219px;
height: 219px;
}
.quest_kangaroo {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -672px;
background-position: -1100px -660px;
width: 219px;
height: 219px;
}
.quest_kraken {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1093px -1332px;
background-position: -660px -1332px;
width: 216px;
height: 177px;
}
.quest_lostMasterclasser1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px 0px;
background-position: 0px -892px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -220px;
background-position: -220px -892px;
width: 219px;
height: 219px;
}
.quest_lostMasterclasser3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -440px;
background-position: -440px -892px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1760px -573px;
background-position: -1757px -573px;
width: 150px;
height: 150px;
}
.quest_mayhemMistiflying2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -660px;
background-position: -660px -892px;
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -892px;
background-position: -880px -892px;
width: 219px;
height: 219px;
}
.quest_monkey {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -892px;
background-position: -1100px -892px;
width: 219px;
height: 219px;
}
.quest_moon1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -220px;
background-position: -1540px -217px;
width: 216px;
height: 216px;
}
.quest_moon2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -440px -892px;
background-position: -1320px 0px;
width: 219px;
height: 219px;
}
.quest_moon3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -660px -892px;
background-position: -1320px -220px;
width: 219px;
height: 219px;
}
.quest_moonstone1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -880px -892px;
background-position: -1320px -440px;
width: 219px;
height: 219px;
}
.quest_moonstone2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1100px -892px;
background-position: -1320px -660px;
width: 219px;
height: 219px;
}
.quest_moonstone3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px 0px;
background-position: -1320px -880px;
width: 219px;
height: 219px;
}
.quest_nudibranch {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -437px;
background-position: -1540px -434px;
width: 216px;
height: 216px;
}
.quest_octopus {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -653px -1332px;
background-position: -220px -1332px;
width: 222px;
height: 177px;
}
.quest_owl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -220px;
background-position: 0px -1112px;
width: 219px;
height: 219px;
}
.quest_peacock {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -654px;
background-position: -1540px -651px;
width: 216px;
height: 216px;
}
.quest_penguin {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1733px;
background-position: 0px -1715px;
width: 190px;
height: 183px;
}
.quest_pterodactyl {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -440px;
background-position: -220px -1112px;
width: 219px;
height: 219px;
}
.quest_rat {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -660px;
background-position: -440px -1112px;
width: 219px;
height: 219px;
}
.quest_robot {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1320px -880px;
background-position: -660px -1112px;
width: 219px;
height: 219px;
}
.quest_rock {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1540px -871px;
background-position: -1540px -868px;
width: 216px;
height: 216px;
}
.quest_rooster {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -1527px -1332px;
width: 213px;
height: 174px;
}
.quest_ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: 0px -1112px;
width: 219px;
height: 219px;
}
.quest_sabretooth {
background-image: url('~@/assets/images/sprites/spritesmith-main-14.png');
background-position: -220px -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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,480 @@
.Pet-Wolf-RoseQuartz {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-RoyalPurple {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-SandSculpture {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shadow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Shimmer {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Spooky {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-StainedGlass {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-StarryNight {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Sunshine {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Thunderstorm {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px -100px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Turquoise {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px -200px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Vampire {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Veggie {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Veteran {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Watery {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-White {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px -300px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Windup {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -410px 0px;
width: 81px;
height: 99px;
}
.Pet-Wolf-Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -410px -100px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Base {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -410px -200px;
width: 81px;
height: 99px;
}
.Pet-Yarn-CottonCandyBlue {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -410px -300px;
width: 81px;
height: 99px;
}
.Pet-Yarn-CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -492px 0px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -492px -100px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -492px -200px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -492px -300px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -82px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-White {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -164px -400px;
width: 81px;
height: 99px;
}
.Pet-Yarn-Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -246px -400px;
width: 81px;
height: 99px;
}
.Pet_HatchingPotion_Amber {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -328px -400px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Aquatic {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -397px -400px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Aurora {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -466px -400px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_AutumnLeaf {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Base {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_BirchBark {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_BlackPearl {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Bronze {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Celestial {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -345px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_CottonCandyBlue {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -414px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_CottonCandyPink {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -483px -500px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Cupid {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Desert {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ember {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Fairy {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Floral {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -276px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Fluorite {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -345px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Frost {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -414px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ghost {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -574px -483px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Glass {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Glow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Golden {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Holly {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_IcySnow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Peppermint {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -345px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_PolkaDot {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -414px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Purple {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -483px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Rainbow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -552px -569px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Red {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px 0px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_RoseQuartz {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -69px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_RoyalPurple {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -138px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Ruby {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -207px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_SandSculpture {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -276px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shade {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -345px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shadow {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -414px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Shimmer {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -483px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Silver {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -643px -552px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Skeleton {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: 0px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Spooky {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -69px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_StainedGlass {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -138px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_StarryNight {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -207px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Sunshine {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -276px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Thunderstorm {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -345px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Turquoise {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -414px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Vampire {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -483px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Watery {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -552px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_White {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -621px -638px;
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Zombie {
background-image: url('~@/assets/images/sprites/spritesmith-main-30.png');
background-position: -712px 0px;
width: 68px;
height: 68px;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 464 KiB

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 KiB

After

Width:  |  Height:  |  Size: 509 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 KiB

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 KiB

After

Width:  |  Height:  |  Size: 324 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: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 438 KiB

After

Width:  |  Height:  |  Size: 462 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 156 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 156 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: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 129 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 144 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,6 +152,10 @@ export default {
return;
}
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;
if (userChangedLevel && userDidNotChangeExp) this.restoreValues.stats.exp = 0;
+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!"
}
@@ -675,6 +675,14 @@
"backgroundSpringThawText": "Spring Thaw",
"backgroundSpringThawNotes": "Watch winter yield to the Spring Thaw.",
"backgrounds042021": "SET 83: Released April 2021",
"backgroundAmongCattailsText": "Among Cattails",
"backgroundAmongCattailsNotes": "Admire wetland wildlife Among Cattails.",
"backgroundCottageConstructionText": "Cottage Under Construction",
"backgroundCottageConstructionNotes": "Help out with, or at least supervise, a Cottage Under Construction.",
"backgroundElegantGardenText": "Elegant Garden",
"backgroundElegantGardenNotes": "Walk the well-manicured paths of an Elegant Garden.",
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
+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) %>.",
+46
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",
@@ -1159,6 +1181,8 @@
"armorArmoireSoftPinkSuitNotes": "Pink is a soothing color. Slip into this loungewear set for a bit of peace during the daily grind! Increases Perception by <%= per %>. Enchanted Armoire: Pink Loungewear Set (item 2 of 3).",
"armorArmoireJadeArmorText": "Jade Armor",
"armorArmoireJadeArmorNotes": "This jade armor is both beautiful and functional. Protect yourself, and know that you look fabulous! Increases Perception by <%= per %>. Enchanted Armoire: Jade Warrior Set (Item 2 of 3).",
"armorArmoireClownsMotleyText": "Clown's Motley",
"armorArmoireClownsMotleyNotes": "The clothes fit beautifully, but filling these shoes is no small feat. Increases Strength by <%= str %>. Enchanted Armoire: Clown Set (Item 1 of 5).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -1528,6 +1552,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.",
@@ -1798,6 +1831,8 @@
"headArmoirePinkFloppyHatNotes": "Many spells have been sewn into this simple hat, giving it a perfect pink color. Increases Intelligence by <%= int %>. Enchanted Armoire: Pink Loungewear Set (item 1 of 3).",
"headArmoireJadeHelmText": "Jade Helm",
"headArmoireJadeHelmNotes": "Some say jade decreases fear and anxiety. With this beautiful helm, you definitely have no cause to worry! Increases Constitution by <%= con %>. Enchanted Armoire: Jade Warrior Set (Item 1 of 3).",
"headArmoireClownsWigText": "Clown's Wig",
"headArmoireClownsWigNotes": "No bad tasks can bite you now! You'll taste funny. Increases Constitution by <%= con %>. Enchanted Armoire: Clown Set (Item 3 of 5).",
"offhand": "off-hand item",
"offhandCapitalized": "Off-Hand Item",
@@ -2005,6 +2040,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",
@@ -2114,6 +2154,8 @@
"shieldArmoireBlueMoonSaiNotes": "This sai is a traditional weapon, imbued with the powers of the light side of the moon. Increases Perception by <%= per %>. Enchanted Armoire: Blue Moon Rogue Set (item 2 of 4).",
"shieldArmoireSoftPinkPillowText": "Soft Pink Pillow",
"shieldArmoireSoftPinkPillowNotes": "The sensible warrior packs a pillow for any expedition. Soften life's blows... even while you nap. Increases Strength and Constitution by <%= attrs %> each. Enchanted Armoire: Pink Loungewear Set (item 3 of 3).",
"shieldArmoireClownsBalloonsText": "Clown's Balloons",
"shieldArmoireClownsBalloonsNotes": "Be careful: replacing these balloons would be a bit expensive... because of the inflation! Increases Perception by <%= per %>. Enchanted Armoire: Clown Set (Item 4 of 5).",
"back": "Back Accessory",
"backCapitalized": "Back Accessory",
@@ -2257,6 +2299,8 @@
"bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Increases Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Lamplighter's Set (Item 4 of 4).",
"bodyArmoireLifeguardWhistleText": "Lifeguard Whistle",
"bodyArmoireLifeguardWhistleNotes": "Call that misbehaving habit to order! It should know the rules! Increases Intelligence by <%= int %>. Enchanted Armoire: Lifeguard Set (Item 3 of 3).",
"bodyArmoireClownsBowtieText": "Clown's Bow-Tie",
"bodyArmoireClownsBowtieNotes": "A nice bow-tie is no joking matter, even for a clown. Increases Strength, Intelligence, Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Clown Set (Item 5 of 5).",
"headAccessory": "head accessory",
"headAccessoryCapitalized": "Head Accessory",
@@ -2449,6 +2493,8 @@
"eyewearArmoirePlagueDoctorMaskNotes": "An authentic mask worn by the doctors who battle the Plague of Procrastination. Increases Constitution and Intelligence by <%= attrs %> each. Enchanted Armoire: Plague Doctor Set (Item 2 of 3).",
"eyewearArmoireGoofyGlassesText": "Goofy Glasses",
"eyewearArmoireGoofyGlassesNotes": "Perfect for going incognito or just making your partymates giggle. Increases Perception by <%= per %>. Enchanted Armoire: Independent Item.",
"eyewearArmoireClownsNoseText": "Clown's Nose",
"eyewearArmoireClownsNoseNotes": "This accessory will make sure everyone 'nose' you're a clown! Increases Intelligence by <%= int %>. Enchanted Armoire: Clown Set (Item 2 of 5).",
"twoHandedItem": "Two-handed item."
}
+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);
@@ -430,6 +430,11 @@ const backgrounds = {
splash_in_a_puddle: { },
spring_thaw: { },
},
backgrounds042021: {
among_cattails: { },
cottage_construction: { },
elegant_garden: { },
},
timeTravelBackgrounds: {
airship: {
price: 1,
@@ -11,7 +11,7 @@ export default prefill({
pastelHairColors: { setPrice: 5, availableUntil: '2016-01-01' },
rainbowHairColors: { setPrice: 5, text: t('rainbowColors') },
shimmerHairColors: {
setPrice: 5, availableFrom: '2020-04-14', availableUntil: '2020-05-02', text: t('shimmerColors'),
setPrice: 5, availableFrom: '2021-04-06', availableUntil: '2021-04-30T20:00-05:00', text: t('shimmerColors'),
},
hauntedHairColors: {
setPrice: 5, availableFrom: '2020-09-25', availableUntil: '2020-11-02', text: t('hauntedColors'),
@@ -22,7 +22,7 @@ export default prefill({
rainbowSkins: { setPrice: 5, text: t('rainbowSkins') },
animalSkins: { setPrice: 5, text: t('animalSkins') },
pastelSkins: {
setPrice: 5, availableFrom: '2020-04-14', availableUntil: '2020-05-02', text: t('pastelSkins'),
setPrice: 5, availableFrom: '2021-04-06', availableUntil: '2021-04-30T20:00-05:00', text: t('pastelSkins'),
},
spookySkins: { setPrice: 5, availableUntil: '2016-01-01', text: t('spookySkins') },
supernaturalSkins: {
+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
@@ -350,6 +350,10 @@ const armor = {
per: 8,
set: 'jadeWarrior',
},
clownsMotley: {
str: 7,
set: 'clown',
},
};
const body = {
@@ -362,6 +366,13 @@ const body = {
int: 12,
set: 'lifeguard',
},
clownsBowtie: {
str: 2,
int: 2,
con: 2,
per: 2,
set: 'clown',
},
};
const eyewear = {
@@ -373,6 +384,9 @@ const eyewear = {
goofyGlasses: {
per: 10,
},
clownsNose: {
int: 5,
},
};
const head = {
@@ -700,6 +714,10 @@ const head = {
con: 8,
set: 'jadeWarrior',
},
clownsWig: {
con: 5,
set: 'clown',
},
};
const shield = {
@@ -898,6 +916,10 @@ const shield = {
con: 6,
set: 'pinkLoungewear',
},
clownsBalloons: {
per: 5,
set: 'clown',
},
};
const headAccessory = {
@@ -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 });

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