Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e1521f9456 | |||
| affa33868a | |||
| 8641817d78 | |||
| 2b8a9ba6b7 | |||
| 344280d124 | |||
| 06f6355006 | |||
| b5497b149b | |||
| d231eb3023 | |||
| 46b8e7f725 | |||
| c349719303 | |||
| 9c402152e8 | |||
| 23f6e9b911 | |||
| 8703a22b3a | |||
| 2c5accd5b2 | |||
| 5ffdf09be4 | |||
| cdaa504db4 | |||
| 309634f751 | |||
| 2e246dad28 | |||
| 8707c80dc1 | |||
| f61beee9e9 | |||
| 13fae3028c | |||
| 48892a0af3 | |||
| 9472264bb2 | |||
| b3e3d0cb63 | |||
| cdb058b696 | |||
| 9b719dc144 | |||
| 1b0b31cd80 | |||
| fda581e60a | |||
| ed15c633c5 | |||
| 43018580b7 | |||
| e8c6908e6a | |||
| 6a49ae8397 | |||
| 4637e5ffdc | |||
| 68e6d52c64 | |||
| e9c69f93a6 | |||
| ef58360305 | |||
| b9ed916003 | |||
| ba18f6211d | |||
| 24bf1c31d8 | |||
| e9fcd6c894 | |||
| 676a9348d0 | |||
| cd87d7d605 | |||
| d6714c43c0 | |||
| 39d82843df | |||
| 665ae4ea03 | |||
| d2795f3ac9 | |||
| d7aa448676 | |||
| 96492e5a0e |
@@ -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 = {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"version": "4.184.0",
|
||||
"version": "4.189.2",
|
||||
"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",
|
||||
|
||||
@@ -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.2",
|
||||
"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')));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ describe('POST /user/buy/:key', () => {
|
||||
it('buys a special spell', async () => {
|
||||
const key = 'spookySparkles';
|
||||
const item = content.special[key];
|
||||
const stub = sinon.stub(item, 'canOwn').returns(true);
|
||||
|
||||
await user.update({ 'stats.gp': 250 });
|
||||
const res = await user.post(`/user/buy/${key}`);
|
||||
@@ -82,6 +83,8 @@ describe('POST /user/buy/:key', () => {
|
||||
expect(res.message).to.equal(t('messageBought', {
|
||||
itemText: item.text(),
|
||||
}));
|
||||
|
||||
stub.restore();
|
||||
});
|
||||
|
||||
it('allows for bulk purchases', async () => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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,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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 464 KiB After Width: | Height: | Size: 462 KiB |
|
Before Width: | Height: | Size: 508 KiB After Width: | Height: | Size: 509 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 133 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 413 KiB After Width: | Height: | Size: 384 KiB |
|
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 324 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 438 KiB After Width: | Height: | Size: 462 KiB |
|
Before Width: | Height: | Size: 189 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 186 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 173 KiB After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
|
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: {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -161,16 +161,10 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
<countdown-banner
|
||||
v-if="item.event && item.owned == null"
|
||||
class="limitedTime"
|
||||
>
|
||||
<span
|
||||
class="svg-icon inline icon-16 clock-icon"
|
||||
v-html="icons.clock"
|
||||
></span>
|
||||
<span class="limitedString">{{ limitedString }}</span>
|
||||
</div>
|
||||
:endDate = "endDate"
|
||||
/>
|
||||
<div
|
||||
v-if="item.key === 'rebirth_orb' && item.value > 0 && user.stats.lvl >= 100"
|
||||
class="free-rebirth d-flex align-items-center"
|
||||
@@ -324,27 +318,6 @@
|
||||
opacity: 0.55;
|
||||
}
|
||||
|
||||
.limitedTime {
|
||||
height: 32px;
|
||||
background-color: $purple-300;
|
||||
width: calc(100% + 30px);
|
||||
margin: 0 -15px; // the modal content has its own padding
|
||||
|
||||
font-size: 12px;
|
||||
line-height: 1.33;
|
||||
text-align: center;
|
||||
color: $white;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.limitedString {
|
||||
height: 16px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.attributesGrid {
|
||||
margin-top: 8px;
|
||||
border-radius: 2px;
|
||||
@@ -399,6 +372,7 @@ import svgWhiteClock from '@/assets/svg/clock-white.svg';
|
||||
|
||||
import BalanceInfo from './balanceInfo.vue';
|
||||
import PinBadge from '@/components/ui/pinBadge';
|
||||
import CountdownBanner from './countdownBanner';
|
||||
import currencyMixin from './_currencyMixin';
|
||||
import notifications from '@/mixins/notifications';
|
||||
import buyMixin from '@/mixins/buy';
|
||||
@@ -432,6 +406,7 @@ export default {
|
||||
Item,
|
||||
Avatar,
|
||||
PinBadge,
|
||||
CountdownBanner,
|
||||
},
|
||||
mixins: [buyMixin, currencyMixin, notifications, numberInvalid, spellsMixin],
|
||||
props: {
|
||||
@@ -462,6 +437,7 @@ export default {
|
||||
|
||||
selectedAmountToBuy: 1,
|
||||
isPinned: false,
|
||||
endDate: seasonalShopConfig.dateRange.end,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -494,9 +470,6 @@ export default {
|
||||
}
|
||||
return this.item.notes;
|
||||
},
|
||||
limitedString () {
|
||||
return this.$t('limitedOffer', { date: moment(seasonalShopConfig.dateRange.end).format('LL') });
|
||||
},
|
||||
gemsLeft () {
|
||||
if (!this.user.purchased.plan) return 0;
|
||||
return planGemLimits.convCap
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
<template>
|
||||
<div
|
||||
class="limitedTime"
|
||||
:class="availabilityClass"
|
||||
>
|
||||
<span
|
||||
class="svg-icon inline icon-16"
|
||||
v-html="availabilityClass === 'expired' ? icons.clockWhite : icons.clock"
|
||||
></span>
|
||||
<span class="limitedString"> {{ limitedString }} </span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
|
||||
.limitedTime {
|
||||
height: 32px;
|
||||
width: calc(100% + 30px);
|
||||
margin: 0 -15px; // the modal content has its own padding
|
||||
|
||||
font-size: 12px;
|
||||
line-height: 1.33;
|
||||
text-align: center;
|
||||
color: $white;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.limitedString {
|
||||
height: 16px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.available {
|
||||
background-color: $purple-300;
|
||||
}
|
||||
.expired {
|
||||
background-color: $gray-200;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import moment from 'moment';
|
||||
import svgClock from '@/assets/svg/clock.svg';
|
||||
import clockWhite from '@/assets/svg/clock-white.svg';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
endDate: {
|
||||
type: Object, // moment
|
||||
},
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
icons: Object.freeze({
|
||||
clock: svgClock,
|
||||
clockWhite,
|
||||
}),
|
||||
timer: '',
|
||||
limitedString: '',
|
||||
availabilityClass: 'available',
|
||||
};
|
||||
},
|
||||
mounted () {
|
||||
this.countdownString();
|
||||
this.timer = setInterval(this.countdownString, 1000);
|
||||
},
|
||||
methods: {
|
||||
countdownString () {
|
||||
const diffDuration = moment.duration(moment(this.endDate).diff(moment()));
|
||||
|
||||
if (moment(this.endDate).isBefore()) {
|
||||
this.limitedString = this.$t('noLongerAvailable');
|
||||
this.availabilityClass = 'expired';
|
||||
this.cancelAutoUpdate();
|
||||
} else if (diffDuration.days() > 0) {
|
||||
this.limitedString = this.$t('limitedAvailabilityDays', {
|
||||
days: diffDuration.days(),
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else if (diffDuration.asMinutes() > 2) {
|
||||
this.limitedString = this.$t('limitedAvailabilityHours', {
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else {
|
||||
this.limitedString = this.$t('limitedAvailabilityMinutes', {
|
||||
minutes: diffDuration.minutes(),
|
||||
seconds: diffDuration.seconds(),
|
||||
});
|
||||
}
|
||||
},
|
||||
cancelAutoUpdate () {
|
||||
clearInterval(this.timer);
|
||||
},
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.cancelAutoUpdate();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -48,6 +48,12 @@ export default {
|
||||
},
|
||||
mixins: [pinUtils],
|
||||
props: ['hideLocked', 'hidePinned', 'searchBy', 'sortBy', 'category'],
|
||||
data () {
|
||||
return {
|
||||
timer: '',
|
||||
limitedString: '',
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
content: 'content',
|
||||
@@ -60,9 +66,6 @@ export default {
|
||||
return planGemLimits.convCap
|
||||
+ this.user.purchased.plan.consecutive.gemCapExtra - this.user.purchased.plan.gemsBought;
|
||||
},
|
||||
limitedString () {
|
||||
return this.$t('limitedOffer', { date: moment(seasonalShopConfig.dateRange.end).format('LL') });
|
||||
},
|
||||
sortedMarketItems () {
|
||||
let result = _map(this.category.items, e => ({
|
||||
...e,
|
||||
@@ -103,10 +106,43 @@ export default {
|
||||
return result;
|
||||
},
|
||||
},
|
||||
mounted () {
|
||||
this.countdownString();
|
||||
this.timer = setInterval(this.countdownString, 1000);
|
||||
},
|
||||
methods: {
|
||||
itemSelected (item) {
|
||||
this.$root.$emit('buyModal::showItem', item);
|
||||
},
|
||||
countdownString () {
|
||||
const diffDuration = moment.duration(moment(seasonalShopConfig.dateRange.end).diff(moment()));
|
||||
|
||||
if (diffDuration.asSeconds() <= 0) {
|
||||
this.limitedString = this.$t('noLongerAvailable');
|
||||
} else if (diffDuration.days() > 0) {
|
||||
this.limitedString = this.$t('limitedAvailabilityDays', {
|
||||
days: diffDuration.days(),
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else if (diffDuration.asMinutes() > 2) {
|
||||
this.limitedString = this.$t('limitedAvailabilityHours', {
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else {
|
||||
this.limitedString = this.$t('limitedAvailabilityMinutes', {
|
||||
minutes: diffDuration.minutes(),
|
||||
seconds: diffDuration.seconds(),
|
||||
});
|
||||
}
|
||||
},
|
||||
cancelAutoUpdate () {
|
||||
clearInterval(this.timer);
|
||||
},
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.cancelAutoUpdate();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -84,16 +84,10 @@
|
||||
>
|
||||
<questDialogDrops :item="item" />
|
||||
</div>
|
||||
<div
|
||||
<countdown-banner
|
||||
v-if="item.event"
|
||||
class="limitedTime"
|
||||
>
|
||||
<span
|
||||
class="svg-icon inline icon-16 clock-icon"
|
||||
v-html="icons.clock"
|
||||
></span>
|
||||
<span class="limitedString">{{ limitedString }}</span>
|
||||
</div>
|
||||
:endDate="endDate"
|
||||
/>
|
||||
<div
|
||||
slot="modal-footer"
|
||||
class="clearfix"
|
||||
@@ -208,27 +202,6 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
.limitedTime {
|
||||
height: 32px;
|
||||
background-color: $purple-300;
|
||||
width: calc(100% + 30px);
|
||||
margin: 0 -15px; // the modal content has its own padding
|
||||
|
||||
font-size: 12px;
|
||||
line-height: 1.33;
|
||||
text-align: center;
|
||||
color: $white;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.limitedString {
|
||||
height: 16px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.notEnough {
|
||||
pointer-events: none;
|
||||
opacity: 0.55;
|
||||
@@ -268,7 +241,6 @@
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import moment from 'moment';
|
||||
import { mapState } from '@/libs/store';
|
||||
import seasonalShopConfig from '@/../../common/script/libs/shops-seasonal.config';
|
||||
|
||||
@@ -285,6 +257,7 @@ import notifications from '@/mixins/notifications';
|
||||
import buyMixin from '@/mixins/buy';
|
||||
import numberInvalid from '@/mixins/numberInvalid';
|
||||
import PinBadge from '@/components/ui/pinBadge';
|
||||
import CountdownBanner from '../countdownBanner';
|
||||
|
||||
import questDialogDrops from './questDialogDrops';
|
||||
import questDialogContent from './questDialogContent';
|
||||
@@ -295,6 +268,7 @@ export default {
|
||||
PinBadge,
|
||||
questDialogDrops,
|
||||
questDialogContent,
|
||||
CountdownBanner,
|
||||
},
|
||||
mixins: [buyMixin, currencyMixin, notifications, numberInvalid],
|
||||
props: {
|
||||
@@ -321,6 +295,7 @@ export default {
|
||||
|
||||
isPinned: false,
|
||||
selectedAmountToBuy: 1,
|
||||
endDate: seasonalShopConfig.dateRange.end,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -344,9 +319,6 @@ export default {
|
||||
if (this.priceType === 'hourglasses') return this.icons.hourglass;
|
||||
return this.icons.gem;
|
||||
},
|
||||
limitedString () {
|
||||
return this.$t('limitedOffer', { date: moment(seasonalShopConfig.dateRange.end).format('LL') });
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
item: function itemChanged () {
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</dd>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="quest.event && popoverVersion">
|
||||
<div v-if="quest.event">
|
||||
{{ limitedString }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -131,10 +131,6 @@ export default {
|
||||
quest: {
|
||||
type: Object,
|
||||
},
|
||||
popoverVersion: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
@@ -143,6 +139,8 @@ export default {
|
||||
starHalf: svgStarHalf,
|
||||
starEmpty: svgStarEmpty,
|
||||
}),
|
||||
timer: '',
|
||||
limitedString: '',
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@@ -153,9 +151,10 @@ export default {
|
||||
|
||||
return 1;
|
||||
},
|
||||
limitedString () {
|
||||
return this.$t('limitedOffer', { date: moment(seasonalShopConfig.dateRange.end).format('LL') });
|
||||
},
|
||||
},
|
||||
mounted () {
|
||||
this.countdownString();
|
||||
this.timer = setInterval(this.countdownString, 1000);
|
||||
},
|
||||
methods: {
|
||||
stars () {
|
||||
@@ -182,6 +181,35 @@ export default {
|
||||
}
|
||||
return collect.text;
|
||||
},
|
||||
countdownString () {
|
||||
const diffDuration = moment.duration(moment(seasonalShopConfig.dateRange.end).diff(moment()));
|
||||
|
||||
if (diffDuration.asSeconds() <= 0) {
|
||||
this.limitedString = this.$t('noLongerAvailable');
|
||||
} else if (diffDuration.days() > 0) {
|
||||
this.limitedString = this.$t('limitedAvailabilityDays', {
|
||||
days: diffDuration.days(),
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else if (diffDuration.asMinutes() > 2) {
|
||||
this.limitedString = this.$t('limitedAvailabilityHours', {
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else {
|
||||
this.limitedString = this.$t('limitedAvailabilityMinutes', {
|
||||
minutes: diffDuration.minutes(),
|
||||
seconds: diffDuration.seconds(),
|
||||
});
|
||||
}
|
||||
},
|
||||
cancelAutoUpdate () {
|
||||
clearInterval(this.timer);
|
||||
},
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.cancelAutoUpdate();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="item.event"
|
||||
v-if="item.event && item.purchaseType !== 'quests'"
|
||||
:class="item.purchaseType === 'gear' ? 'mt-4' : 'mt-2'"
|
||||
>
|
||||
{{ limitedString }}
|
||||
@@ -291,16 +291,18 @@ export default {
|
||||
},
|
||||
},
|
||||
data () {
|
||||
return Object.freeze({
|
||||
return {
|
||||
itemId: uuid(),
|
||||
icons: {
|
||||
icons: Object.freeze({
|
||||
gems: svgGem,
|
||||
gold: svgGold,
|
||||
lock: svgLock,
|
||||
hourglasses: svgHourglasses,
|
||||
clock: svgClock,
|
||||
},
|
||||
});
|
||||
}),
|
||||
timer: '',
|
||||
limitedString: '',
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
showNotes () {
|
||||
@@ -314,10 +316,10 @@ export default {
|
||||
}
|
||||
return 'gold';
|
||||
},
|
||||
limitedString () {
|
||||
return this.item.owned === false ? ''
|
||||
: this.$t('limitedOffer', { date: moment(seasonalShopConfig.dateRange.end).format('LL') });
|
||||
},
|
||||
},
|
||||
mounted () {
|
||||
this.countdownString();
|
||||
this.timer = setInterval(this.countdownString, 1000);
|
||||
},
|
||||
methods: {
|
||||
click () {
|
||||
@@ -338,6 +340,35 @@ export default {
|
||||
locked: this.item.locked,
|
||||
};
|
||||
},
|
||||
countdownString () {
|
||||
const diffDuration = moment.duration(moment(seasonalShopConfig.dateRange.end).diff(moment()));
|
||||
|
||||
if (diffDuration.asSeconds() <= 0) {
|
||||
this.limitedString = this.$t('noLongerAvailable');
|
||||
} else if (diffDuration.days() > 0) {
|
||||
this.limitedString = this.$t('limitedAvailabilityDays', {
|
||||
days: diffDuration.days(),
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else if (diffDuration.asMinutes() > 2) {
|
||||
this.limitedString = this.$t('limitedAvailabilityHours', {
|
||||
hours: diffDuration.hours(),
|
||||
minutes: diffDuration.minutes(),
|
||||
});
|
||||
} else {
|
||||
this.limitedString = this.$t('limitedAvailabilityMinutes', {
|
||||
minutes: diffDuration.minutes(),
|
||||
seconds: diffDuration.seconds(),
|
||||
});
|
||||
}
|
||||
},
|
||||
cancelAutoUpdate () {
|
||||
clearInterval(this.timer);
|
||||
},
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.cancelAutoUpdate();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -104,6 +104,9 @@
|
||||
"achievementRedLetterDayText": "Has tamed all Red Mounts.",
|
||||
"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!"
|
||||
"achievementLegendaryBestiaryText": "Has hatched all standard colors of mythical pets: Dragon, Flying Pig, Gryphon, Sea Serpent, and Unicorn!",
|
||||
"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.",
|
||||
|
||||
@@ -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) %>.",
|
||||
|
||||
@@ -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."
|
||||
}
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Seasonal Sorceress<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
||||
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? They’ll only be available until July 31st!",
|
||||
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? They’ll only be available until October 31st!",
|
||||
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? They’ll only be available until January 31st!",
|
||||
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
|
||||
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
|
||||
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
|
||||
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? Be sure to get them before the Gala ends!",
|
||||
"seasonalShopFallTextBroken": "Oh.... Welcome to the Seasonal Shop... We're stocking autumn Seasonal Edition goodies, or something... Everything here will be available to purchase during the Fall Festival event each year, but we're only open until October 31... I guess you should to stock up now, or you'll have to wait... and wait... and wait... <strong>*sigh*</strong>",
|
||||
"seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!",
|
||||
"seasonalShopRebirth": "If you bought any of this equipment in the past but don't currently own it, you can repurchase it in the Rewards Column. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.",
|
||||
@@ -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",
|
||||
@@ -195,5 +199,6 @@
|
||||
"howItWorks": "How it Works",
|
||||
"g1g1HowItWorks": "Type in the username of the account you’d like to gift to. From there, pick the sub length you’d like to gift and check out. Your account will automatically be rewarded with the same level of subscription you just gifted.",
|
||||
"limitations": "Limitations",
|
||||
"g1g1Limitations": "This is a limited time event that starts on December 17th at 8:00 AM ET (13:00 UTC) and will end January 7th at 8:00 PM ET (1:00 UTC). This promotion only applies when you gift to another Habitican. If you or your gift recipient already have a subscription, the gifted subscription will add months of credit that will only be used after the current subscription is canceled or expires."
|
||||
"g1g1Limitations": "This is a limited time event that starts on December 17th at 8:00 AM ET (13:00 UTC) and will end January 7th at 8:00 PM ET (1:00 UTC). This promotion only applies when you gift to another Habitican. If you or your gift recipient already have a subscription, the gifted subscription will add months of credit that will only be used after the current subscription is canceled or expires.",
|
||||
"noLongerAvailable": "This item is no longer available."
|
||||
}
|
||||
|
||||
@@ -125,5 +125,8 @@
|
||||
"welcome3": "Progress in life and the game!",
|
||||
"welcome3notes": "As you improve your life, your avatar will level up and unlock pets, quests, equipment, and more!",
|
||||
"imReady": "Enter Habitica",
|
||||
"limitedOffer": "Available until <%= date %>"
|
||||
"limitedOffer": "Available until <%= date %>",
|
||||
"limitedAvailabilityDays": "Available for <%= days %>d <%= hours %>h <%= minutes %>m",
|
||||
"limitedAvailabilityHours": "Available for <%= hours %>h <%= minutes %>m",
|
||||
"limitedAvailabilityMinutes": "Available for <%= minutes %>m <%= seconds %>s"
|
||||
}
|
||||
|
||||
@@ -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,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: {
|
||||
|
||||
@@ -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 = {
|
||||
|
||||