Compare commits
120 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4696237b21 | |||
| b7956a82ee | |||
| a5babc493f | |||
| 708bd4a292 | |||
| 7cac574c31 | |||
| 86619a2ac9 | |||
| 058c1464d3 | |||
| 362dea6c5c | |||
| 2c34972629 | |||
| 9bd07034a5 | |||
| 5c7227fc02 | |||
| 4a99fc5a74 | |||
| 21d008aaee | |||
| 0d4ed102a0 | |||
| 83bcfcde06 | |||
| 32ac00b417 | |||
| 2a00aefdd6 | |||
| 679d615224 | |||
| 73c5764d63 | |||
| 205d2758de | |||
| efe7ea52bc | |||
| 938152edea | |||
| 3e1e9b6d56 | |||
| 8b01d1a88c | |||
| 9910fb7b99 | |||
| a91d639606 | |||
| eaeb942ad8 | |||
| c509d0edbd | |||
| 59566d9d65 | |||
| e457b8ddc0 | |||
| a43f7734dc | |||
| 2618825ce2 | |||
| af35cbb743 | |||
| 989361bb46 | |||
| b18225561e | |||
| a500119879 | |||
| 4d2a738748 | |||
| 38047b9d5c | |||
| 035a6be8b7 | |||
| e3bc4a5fc7 | |||
| d8d825c6b0 | |||
| f47c243cb0 | |||
| 8c31f944fa | |||
| 931403ef0b | |||
| 17ff5f4640 | |||
| ea590307c9 | |||
| e12597b330 | |||
| dd92b20ef5 | |||
| fd0365eec9 | |||
| cdeefcf4e9 | |||
| 5d799546ff | |||
| 931bd33a9f | |||
| 0b07aae1bb | |||
| 4ff769db0c | |||
| 5456cc2348 | |||
| 97baa69a8d | |||
| 66644b7369 | |||
| 4dcac53d6d | |||
| ead1c1b851 | |||
| f3a1ac425f | |||
| e450e7d975 | |||
| 4984f99de0 | |||
| 3ae6bfcb57 | |||
| 5c6f727c4b | |||
| 4bbb75a6a3 | |||
| a2dee15289 | |||
| db59a4b925 | |||
| 96aaa6f0e3 | |||
| 9eb7654a3c | |||
| d2902910bd | |||
| 3a7c9b1c1f | |||
| 6c214df289 | |||
| c2fe33650c | |||
| 53748d62f6 | |||
| c0364c0e00 | |||
| 2ccaa02e7e | |||
| 943bf1442d | |||
| 76f13abee1 | |||
| 06a0147a97 | |||
| 03984df562 | |||
| f95ad1201d | |||
| 91e311284a | |||
| ab554320f3 | |||
| e5afb89706 | |||
| 0c1d78acdb | |||
| 3361ed1f2d | |||
| 4d7d8e84c5 | |||
| 28d3611c4a | |||
| fbb758fa89 | |||
| 40f9651378 | |||
| e90041976b | |||
| 6d737330f2 | |||
| 910c49df4f | |||
| 1a46fac7bf | |||
| 6bbdd74927 | |||
| dd4c9c2536 | |||
| 0a6b22fdd9 | |||
| d940066ea2 | |||
| 7be3143e55 | |||
| b42875e2e1 | |||
| 6c6e8f0001 | |||
| 8219dfd9e6 | |||
| 025b994224 | |||
| b056763f09 | |||
| 6e91326648 | |||
| 8b9c76a2b7 | |||
| c4fc2d825d | |||
| 411ac94986 | |||
| 8b952a6caf | |||
| b21bf0d428 | |||
| 1b5134c0bc | |||
| 22eaefb3b2 | |||
| b9710c4180 | |||
| 919b30c237 | |||
| 9a51d200f7 | |||
| 170df77c3d | |||
| 043f34d619 | |||
| 0b20f8a980 | |||
| 7f208eb141 | |||
| 75a196dd3b |
@@ -3,9 +3,7 @@ import { exec } from 'child_process';
|
||||
import gulp from 'gulp';
|
||||
import os from 'os';
|
||||
import nconf from 'nconf';
|
||||
import {
|
||||
pipe,
|
||||
} from './taskHelper';
|
||||
import { pipe } from './taskHelper';
|
||||
import {
|
||||
getDevelopmentConnectionUrl,
|
||||
getDefaultConnectionOptions,
|
||||
@@ -21,15 +19,16 @@ const TEST_DB_URI = nconf.get('TEST_DB_URI');
|
||||
const SANITY_TEST_COMMAND = 'npm run test:sanity';
|
||||
const COMMON_TEST_COMMAND = 'npm run test:common';
|
||||
const CONTENT_TEST_COMMAND = 'npm run test:content';
|
||||
const CONTENT_OPTIONS = { maxBuffer: 1024 * 500 };
|
||||
const LIMIT_MAX_BUFFER_OPTIONS = { maxBuffer: 1024 * 500 };
|
||||
|
||||
/* Helper methods for reporting test summary */
|
||||
/* Helper method for reporting test summary */
|
||||
const testResults = [];
|
||||
const testCount = (stdout, regexp) => {
|
||||
const match = stdout.match(regexp);
|
||||
return parseInt(match && (match[1] || 0), 10);
|
||||
};
|
||||
|
||||
/* Helper methods to correctly run child test processes */
|
||||
const testBin = (string, additionalEnvVariables = '') => {
|
||||
if (os.platform() === 'win32') {
|
||||
if (additionalEnvVariables !== '') {
|
||||
@@ -41,6 +40,15 @@ const testBin = (string, additionalEnvVariables = '') => {
|
||||
return `NODE_ENV=test ${additionalEnvVariables} ${string}`;
|
||||
};
|
||||
|
||||
function runInChildProcess (command, options = {}, envVariables = '') {
|
||||
return done => pipe(exec(testBin(command, envVariables), options, done));
|
||||
}
|
||||
|
||||
function integrationTestCommand (testDir, coverageDir) {
|
||||
return `istanbul cover --dir coverage/${coverageDir} --report lcovonly node_modules/mocha/bin/_mocha -- ${testDir} --recursive --require ./test/helpers/start-server`;
|
||||
}
|
||||
|
||||
/* Test task definitions */
|
||||
gulp.task('test:nodemon', gulp.series(done => {
|
||||
process.env.PORT = TEST_SERVER_PORT; // eslint-disable-line no-process-env
|
||||
process.env.NODE_DB_URI = TEST_DB_URI; // eslint-disable-line no-process-env
|
||||
@@ -82,31 +90,9 @@ gulp.task('test:prepare', gulp.series(
|
||||
done => done(),
|
||||
));
|
||||
|
||||
gulp.task('test:sanity', cb => {
|
||||
const runner = exec(
|
||||
testBin(SANITY_TEST_COMMAND),
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
cb();
|
||||
},
|
||||
);
|
||||
pipe(runner);
|
||||
});
|
||||
gulp.task('test:sanity', runInChildProcess(SANITY_TEST_COMMAND));
|
||||
|
||||
gulp.task('test:common', gulp.series('test:prepare:build', cb => {
|
||||
const runner = exec(
|
||||
testBin(COMMON_TEST_COMMAND),
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
cb();
|
||||
},
|
||||
);
|
||||
pipe(runner);
|
||||
}));
|
||||
gulp.task('test:common', gulp.series('test:prepare:build', runInChildProcess(COMMON_TEST_COMMAND)));
|
||||
|
||||
gulp.task('test:common:clean', cb => {
|
||||
pipe(exec(testBin(COMMON_TEST_COMMAND), () => cb()));
|
||||
@@ -130,22 +116,11 @@ gulp.task('test:common:safe', gulp.series('test:prepare:build', cb => {
|
||||
pipe(runner);
|
||||
}));
|
||||
|
||||
gulp.task('test:content', gulp.series('test:prepare:build', cb => {
|
||||
const runner = exec(
|
||||
testBin(CONTENT_TEST_COMMAND),
|
||||
CONTENT_OPTIONS,
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
cb();
|
||||
},
|
||||
);
|
||||
pipe(runner);
|
||||
}));
|
||||
gulp.task('test:content', gulp.series('test:prepare:build',
|
||||
runInChildProcess(CONTENT_TEST_COMMAND, LIMIT_MAX_BUFFER_OPTIONS)));
|
||||
|
||||
gulp.task('test:content:clean', cb => {
|
||||
pipe(exec(testBin(CONTENT_TEST_COMMAND), CONTENT_OPTIONS, () => cb()));
|
||||
pipe(exec(testBin(CONTENT_TEST_COMMAND), LIMIT_MAX_BUFFER_OPTIONS, () => cb()));
|
||||
});
|
||||
|
||||
gulp.task('test:content:watch', gulp.series('test:content:clean', () => gulp.watch(['common/script/content/**', 'test/**'], gulp.series('test:content:clean', done => done()))));
|
||||
@@ -153,7 +128,7 @@ gulp.task('test:content:watch', gulp.series('test:content:clean', () => gulp.wat
|
||||
gulp.task('test:content:safe', gulp.series('test:prepare:build', cb => {
|
||||
const runner = exec(
|
||||
testBin(CONTENT_TEST_COMMAND),
|
||||
CONTENT_OPTIONS,
|
||||
LIMIT_MAX_BUFFER_OPTIONS,
|
||||
(err, stdout) => { // eslint-disable-line handle-callback-err
|
||||
testResults.push({
|
||||
suite: 'Content Specs\t',
|
||||
@@ -167,76 +142,39 @@ gulp.task('test:content:safe', gulp.series('test:prepare:build', cb => {
|
||||
pipe(runner);
|
||||
}));
|
||||
|
||||
gulp.task('test:api:unit:run', done => {
|
||||
const runner = exec(
|
||||
testBin('istanbul cover --dir coverage/api-unit node_modules/mocha/bin/_mocha -- test/api/unit --recursive --require ./test/helpers/start-server'),
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
done();
|
||||
},
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
});
|
||||
gulp.task('test:api:unit:run',
|
||||
runInChildProcess(integrationTestCommand('test/api/unit', 'coverage/api-unit')));
|
||||
|
||||
gulp.task('test:api:unit:watch', () => gulp.watch(['website/server/libs/*', 'test/api/unit/**/*', 'website/server/controllers/**/*'], gulp.series('test:api:unit:run', done => done())));
|
||||
|
||||
gulp.task('test:api-v3:integration', gulp.series('test:prepare:mongo', done => {
|
||||
const runner = exec(
|
||||
testBin('istanbul cover --dir coverage/api-v3-integration --report lcovonly node_modules/mocha/bin/_mocha -- test/api/v3/integration --recursive --require ./test/helpers/start-server'),
|
||||
{ maxBuffer: 500 * 1024 },
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
done();
|
||||
},
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
}));
|
||||
gulp.task('test:api-v3:integration', gulp.series('test:prepare:mongo',
|
||||
runInChildProcess(
|
||||
integrationTestCommand('test/api/v3/integration', 'coverage/api-v3-integration'),
|
||||
LIMIT_MAX_BUFFER_OPTIONS,
|
||||
)));
|
||||
|
||||
gulp.task('test:api-v3:integration:watch', () => gulp.watch([
|
||||
'website/server/controllers/api-v3/**/*', 'common/script/ops/*', 'website/server/libs/*.js',
|
||||
'test/api/v3/integration/**/*',
|
||||
], gulp.series('test:api-v3:integration', done => done())));
|
||||
|
||||
gulp.task('test:api-v3:integration:separate-server', done => {
|
||||
const runner = exec(
|
||||
testBin('mocha test/api/v3/integration --recursive --require ./test/helpers/start-server', 'LOAD_SERVER=0'),
|
||||
{ maxBuffer: 500 * 1024 },
|
||||
err => done(err),
|
||||
);
|
||||
gulp.task('test:api-v3:integration:separate-server', runInChildProcess(
|
||||
'mocha test/api/v3/integration --recursive --require ./test/helpers/start-server',
|
||||
LIMIT_MAX_BUFFER_OPTIONS,
|
||||
'LOAD_SERVER=0',
|
||||
));
|
||||
|
||||
pipe(runner);
|
||||
});
|
||||
gulp.task('test:api-v4:integration', gulp.series('test:prepare:mongo',
|
||||
runInChildProcess(
|
||||
integrationTestCommand('test/api/v4', 'api-v4-integration'),
|
||||
LIMIT_MAX_BUFFER_OPTIONS,
|
||||
)));
|
||||
|
||||
gulp.task('test:api-v4:integration', gulp.series('test:prepare:mongo', done => {
|
||||
const runner = exec(
|
||||
testBin('istanbul cover --dir coverage/api-v4-integration --report lcovonly node_modules/mocha/bin/_mocha -- test/api/v4 --recursive --require ./test/helpers/start-server'),
|
||||
{ maxBuffer: 500 * 1024 },
|
||||
err => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
done();
|
||||
},
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
}));
|
||||
|
||||
gulp.task('test:api-v4:integration:separate-server', done => {
|
||||
const runner = exec(
|
||||
testBin('mocha test/api/v4 --recursive --require ./test/helpers/start-server', 'LOAD_SERVER=0'),
|
||||
{ maxBuffer: 500 * 1024 },
|
||||
err => done(err),
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
});
|
||||
gulp.task('test:api-v4:integration:separate-server', runInChildProcess(
|
||||
'mocha test/api/v4 --recursive --require ./test/helpers/start-server',
|
||||
LIMIT_MAX_BUFFER_OPTIONS,
|
||||
'LOAD_SERVER=0',
|
||||
));
|
||||
|
||||
gulp.task('test:api:unit', gulp.series(
|
||||
'test:prepare:mongo',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"version": "4.160.0",
|
||||
"version": "4.163.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -1312,9 +1312,9 @@
|
||||
"integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz",
|
||||
"integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==",
|
||||
"version": "4.17.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.8.tgz",
|
||||
"integrity": "sha512-wLhcKh3PMlyA2cNAB9sjM1BntnhPMiM0JOBwPBqttjHev2428MLEB4AYVN+d8s2iyCVZac+o41Pflm/ZH5vLXQ==",
|
||||
"requires": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "*",
|
||||
@@ -1332,9 +1332,9 @@
|
||||
}
|
||||
},
|
||||
"@types/express-serve-static-core": {
|
||||
"version": "4.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz",
|
||||
"integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==",
|
||||
"version": "4.17.13",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz",
|
||||
"integrity": "sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==",
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@types/qs": "*",
|
||||
@@ -1445,9 +1445,9 @@
|
||||
"optional": true
|
||||
},
|
||||
"@types/qs": {
|
||||
"version": "6.9.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz",
|
||||
"integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ=="
|
||||
"version": "6.9.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz",
|
||||
"integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ=="
|
||||
},
|
||||
"@types/range-parser": {
|
||||
"version": "1.2.3",
|
||||
@@ -2141,7 +2141,6 @@
|
||||
"version": "0.19.2",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
|
||||
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"follow-redirects": "1.5.10"
|
||||
}
|
||||
@@ -8379,27 +8378,19 @@
|
||||
}
|
||||
},
|
||||
"jwks-rsa": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.9.0.tgz",
|
||||
"integrity": "sha512-UPCfQQg0s2kF2Ju6UFJrQH73f7MaVN/hKBnYBYOp+X9KN4y6TLChhLtaXS5nRKbZqshwVdrZ9OY63m/Q9CLqcg==",
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.10.1.tgz",
|
||||
"integrity": "sha512-UmjOsATVu7eQr17wbBCS+BSoz5LFtl57PtNXHbHFeT1WKomHykCHtn7c8inWVI7tpnsy6CZ1KOMJTgipFwXPig==",
|
||||
"requires": {
|
||||
"@types/express-jwt": "0.0.42",
|
||||
"axios": "^0.19.2",
|
||||
"debug": "^4.1.0",
|
||||
"http-proxy-agent": "^4.0.1",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"limiter": "^1.1.5",
|
||||
"lru-memoizer": "^2.1.2",
|
||||
"ms": "^2.1.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": {
|
||||
"version": "0.19.2",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
|
||||
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
|
||||
"requires": {
|
||||
"follow-redirects": "1.5.10"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"jws": {
|
||||
@@ -9355,9 +9346,9 @@
|
||||
"integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is="
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.28.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz",
|
||||
"integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw=="
|
||||
"version": "2.29.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.0.tgz",
|
||||
"integrity": "sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA=="
|
||||
},
|
||||
"moment-recur": {
|
||||
"version": "1.0.7",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.160.0",
|
||||
"version": "4.163.0",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.11.6",
|
||||
@@ -42,11 +42,11 @@
|
||||
"in-app-purchase": "^1.11.3",
|
||||
"js2xmlparser": "^4.0.1",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"jwks-rsa": "^1.9.0",
|
||||
"jwks-rsa": "^1.10.1",
|
||||
"lodash": "^4.17.20",
|
||||
"merge-stream": "^2.0.0",
|
||||
"method-override": "^3.0.0",
|
||||
"moment": "^2.28.0",
|
||||
"moment": "^2.29.0",
|
||||
"moment-recur": "^1.0.7",
|
||||
"mongoose": "^5.10.3",
|
||||
"morgan": "^1.10.0",
|
||||
|
||||
@@ -248,6 +248,7 @@ describe('payments/index', () => {
|
||||
quantity: 1,
|
||||
gift: true,
|
||||
purchaseValue: 15,
|
||||
firstPurchase: true,
|
||||
headers: {
|
||||
'x-client': 'habitica-web',
|
||||
'user-agent': '',
|
||||
@@ -345,6 +346,7 @@ describe('payments/index', () => {
|
||||
quantity: 1,
|
||||
gift: false,
|
||||
purchaseValue: 15,
|
||||
firstPurchase: true,
|
||||
headers: {
|
||||
'x-client': 'habitica-web',
|
||||
'user-agent': '',
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import * as xmlMarshaller from '../../../../website/server/libs/xmlMarshaller';
|
||||
|
||||
describe('xml marshaller marshalls user data', () => {
|
||||
const minimumUser = {
|
||||
pinnedItems: [],
|
||||
unpinnedItems: [],
|
||||
inbox: {},
|
||||
};
|
||||
|
||||
function userDataWith (fields) {
|
||||
return { ...minimumUser, ...fields };
|
||||
}
|
||||
|
||||
it('maps the newMessages field to have id as a value in a list.', () => {
|
||||
const userData = userDataWith({
|
||||
newMessages: {
|
||||
'283171a5-422c-4991-bc78-95b1b5b51629': {
|
||||
name: 'The Language Hackers',
|
||||
value: true,
|
||||
},
|
||||
'283171a6-422c-4991-bc78-95b1b5b51629': {
|
||||
name: 'The Bug Hackers',
|
||||
value: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const xml = xmlMarshaller.marshallUserData(userData);
|
||||
|
||||
expect(xml).to.equal(`<user>
|
||||
<inbox/>
|
||||
<newMessages>
|
||||
<id>283171a5-422c-4991-bc78-95b1b5b51629</id>
|
||||
<name>The Language Hackers</name>
|
||||
<value>true</value>
|
||||
</newMessages>
|
||||
<newMessages>
|
||||
<id>283171a6-422c-4991-bc78-95b1b5b51629</id>
|
||||
<name>The Bug Hackers</name>
|
||||
<value>false</value>
|
||||
</newMessages>
|
||||
</user>`);
|
||||
});
|
||||
});
|
||||
@@ -4891,14 +4891,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
|
||||
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
|
||||
},
|
||||
"@types/mini-css-extract-plugin": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.1.tgz",
|
||||
"integrity": "sha512-+mN04Oszdz9tGjUP/c1ReVwJXxSniLd7lF++sv+8dkABxVNthg6uccei+4ssKxRHGoMmPxdn7uBdJWONSJGTGQ==",
|
||||
"requires": {
|
||||
"@types/webpack": "*"
|
||||
}
|
||||
},
|
||||
"@types/minimatch": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
||||
@@ -6444,6 +6436,11 @@
|
||||
"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=="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
@@ -6547,22 +6544,19 @@
|
||||
}
|
||||
},
|
||||
"vue-loader-v16": {
|
||||
"version": "npm:vue-loader@16.0.0-beta.7",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.7.tgz",
|
||||
"integrity": "sha512-xQ8/GZmRPdQ3EinnE0IXwdVoDzh7Dowo0MowoyBuScEBXrRabw6At5/IdtD3waKklKW5PGokPsm8KRN6rvQ1cw==",
|
||||
"version": "npm:vue-loader@16.0.0-beta.8",
|
||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.8.tgz",
|
||||
"integrity": "sha512-oouKUQWWHbSihqSD7mhymGPX1OQ4hedzAHyvm8RdyHh6m3oIvoRF+NM45i/bhNOlo8jCnuJhaSUf/6oDjv978g==",
|
||||
"requires": {
|
||||
"@types/mini-css-extract-plugin": "^0.9.1",
|
||||
"chalk": "^3.0.0",
|
||||
"chalk": "^4.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
"loader-utils": "^1.2.3",
|
||||
"merge-source-map": "^1.1.0",
|
||||
"source-map": "^0.6.1"
|
||||
"loader-utils": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
||||
"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"
|
||||
@@ -6573,6 +6567,16 @@
|
||||
"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",
|
||||
@@ -6965,9 +6969,9 @@
|
||||
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
|
||||
},
|
||||
"amplitude-js": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-7.1.1.tgz",
|
||||
"integrity": "sha512-grEQf0p4V/q4aIcGYdGEJ6EquBXu91R/RorsYTQvh9O6sxjpwHf5vSDICQJq7twEElBrSHoSF77GUvC9ZTBj4A==",
|
||||
"version": "7.2.2",
|
||||
"resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-7.2.2.tgz",
|
||||
"integrity": "sha512-Y1/kw/NaxMdqwBnkbjPywpjPbSmuVuszFLQ9tw56P6YraljvbMC93afHQvLC/3zG5SImDnykbg/8HxrWFDhsLg==",
|
||||
"requires": {
|
||||
"@amplitude/ua-parser-js": "0.7.24",
|
||||
"blueimp-md5": "^2.10.0",
|
||||
@@ -8193,9 +8197,9 @@
|
||||
"integrity": "sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg=="
|
||||
},
|
||||
"blueimp-md5": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.17.0.tgz",
|
||||
"integrity": "sha512-x5PKJHY5rHQYaADj6NwPUR2QRCUVSggPzrUKkeENpj871o9l9IefJbO2jkT5UvYykeOK9dx0VmkIo6dZ+vThYw=="
|
||||
"version": "2.18.0",
|
||||
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz",
|
||||
"integrity": "sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q=="
|
||||
},
|
||||
"bn.js": {
|
||||
"version": "5.1.3",
|
||||
@@ -15242,9 +15246,9 @@
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.28.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz",
|
||||
"integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw=="
|
||||
"version": "2.29.0",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.0.tgz",
|
||||
"integrity": "sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA=="
|
||||
},
|
||||
"move-concurrently": {
|
||||
"version": "1.0.1",
|
||||
@@ -20977,9 +20981,9 @@
|
||||
}
|
||||
},
|
||||
"vue-router": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.3.tgz",
|
||||
"integrity": "sha512-BADg1mjGWX18Dpmy6bOGzGNnk7B/ZA0RxuA6qedY/YJwirMfKXIDzcccmHbQI0A6k5PzMdMloc0ElHfyOoX35A=="
|
||||
"version": "3.4.5",
|
||||
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.5.tgz",
|
||||
"integrity": "sha512-ioRY5QyDpXM9TDjOX6hX79gtaMXSVDDzSlbIlyAmbHNteIL81WIVB2e+jbzV23vzxtoV0krdS2XHm+GxFg+Nxg=="
|
||||
},
|
||||
"vue-style-loader": {
|
||||
"version": "4.1.2",
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"@vue/cli-plugin-unit-mocha": "^4.5.6",
|
||||
"@vue/cli-service": "^4.5.6",
|
||||
"@vue/test-utils": "1.0.0-beta.29",
|
||||
"amplitude-js": "^7.1.1",
|
||||
"amplitude-js": "^7.2.2",
|
||||
"axios": "^0.19.2",
|
||||
"axios-progress-bar": "^1.2.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
@@ -42,7 +42,7 @@
|
||||
"intro.js": "^2.9.3",
|
||||
"jquery": "^3.5.1",
|
||||
"lodash": "^4.17.20",
|
||||
"moment": "^2.28.0",
|
||||
"moment": "^2.29.0",
|
||||
"nconf": "^0.10.0",
|
||||
"sass": "^1.26.11",
|
||||
"sass-loader": "^8.0.2",
|
||||
@@ -56,7 +56,7 @@
|
||||
"vue": "^2.6.12",
|
||||
"vue-cli-plugin-storybook": "^0.6.1",
|
||||
"vue-mugen-scroll": "^0.2.6",
|
||||
"vue-router": "^3.4.3",
|
||||
"vue-router": "^3.4.5",
|
||||
"vue-template-compiler": "^2.6.12",
|
||||
"vuedraggable": "^2.24.1",
|
||||
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0",
|
||||
|
||||
@@ -1,36 +1,60 @@
|
||||
.promo_armoire_backgrounds_202009 {
|
||||
.promo_armoire_backgrounds_202010 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -434px;
|
||||
background-position: 0px -452px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_fall_festival_2019 {
|
||||
.promo_fall_customizations {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -244px;
|
||||
width: 336px;
|
||||
height: 207px;
|
||||
}
|
||||
.promo_fall_festival_2019 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -532px 0px;
|
||||
width: 360px;
|
||||
height: 189px;
|
||||
}
|
||||
.promo_fall_festival_2020 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -532px 0px;
|
||||
background-position: -532px -190px;
|
||||
width: 360px;
|
||||
height: 174px;
|
||||
}
|
||||
.promo_mystery_202009 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -532px -175px;
|
||||
background-position: -893px 0px;
|
||||
width: 282px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_mystery_202010 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -893px -148px;
|
||||
width: 282px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_sandy_sidekicks_bundle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -424px -600px;
|
||||
width: 420px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_spooky_sparkles {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -424px -452px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_take_this {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -532px -323px;
|
||||
background-position: -1035px -426px;
|
||||
width: 96px;
|
||||
height: 69px;
|
||||
}
|
||||
.promo_vampire_potions {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -424px -434px;
|
||||
background-position: 0px -600px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
@@ -42,7 +66,13 @@
|
||||
}
|
||||
.scene_squall {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -361px -244px;
|
||||
background-position: -893px -426px;
|
||||
width: 141px;
|
||||
height: 169px;
|
||||
}
|
||||
.scene_strength {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -893px -296px;
|
||||
width: 192px;
|
||||
height: 129px;
|
||||
}
|
||||
|
||||
@@ -748,487 +748,487 @@
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_crosscountry_ski_trail {
|
||||
.background_crescent_moon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_crystal_cave {
|
||||
.background_crosscountry_ski_trail {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dark_deep {
|
||||
.background_crystal_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_deep_mine {
|
||||
.background_dark_deep {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_deep_sea {
|
||||
.background_deep_mine {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_desert_dunes {
|
||||
.background_deep_sea {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_desert_with_snow {
|
||||
.background_desert_dunes {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dilatory_castle {
|
||||
.background_desert_with_snow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dilatory_city {
|
||||
.background_dilatory_castle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dilatory_ruins {
|
||||
.background_dilatory_city {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_distant_castle {
|
||||
.background_dilatory_ruins {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dojo {
|
||||
.background_distant_castle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_drifting_raft {
|
||||
.background_dojo {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_driving_a_coach {
|
||||
.background_drifting_raft {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_driving_a_sleigh {
|
||||
.background_driving_a_coach {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_duck_pond {
|
||||
.background_driving_a_sleigh {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dungeon {
|
||||
.background_duck_pond {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_dusty_canyons {
|
||||
.background_dungeon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_elegant_balcony {
|
||||
.background_dusty_canyons {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_elegant_ballroom {
|
||||
.background_elegant_balcony {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_fairy_ring {
|
||||
.background_elegant_ballroom {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_fantastical_shoe_store {
|
||||
.background_fairy_ring {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_farmers_market {
|
||||
.background_fantastical_shoe_store {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_farmhouse {
|
||||
.background_farmers_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_fiber_arts_room {
|
||||
.background_farmhouse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_field_with_colored_eggs {
|
||||
.background_fiber_arts_room {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_floating_islands {
|
||||
.background_field_with_colored_eggs {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_floral_meadow {
|
||||
.background_floating_islands {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flower_market {
|
||||
.background_floral_meadow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.customize-option.background_flower_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1303px -15px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_in_a_thunderstorm {
|
||||
.background_flower_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_a_field_of_wildflowers {
|
||||
.customize-option.background_flower_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1303px -163px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_in_a_thunderstorm {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.customize-option.background_flying_over_a_field_of_wildflowers {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1303px -311px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_over_an_ancient_forest {
|
||||
.background_flying_over_a_field_of_wildflowers {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_an_autumn_forest {
|
||||
.customize-option.background_flying_over_a_field_of_wildflowers {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1303px -459px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.background_flying_over_an_ancient_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_icy_steppes {
|
||||
.background_flying_over_an_autumn_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_rocky_canyon {
|
||||
.background_flying_over_icy_steppes {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_snowy_mountains {
|
||||
.background_flying_over_rocky_canyon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_flying_over_tropical_islands {
|
||||
.background_flying_over_snowy_mountains {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_foggy_moor {
|
||||
.background_flying_over_tropical_islands {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_forest {
|
||||
.background_foggy_moor {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_frigid_peak {
|
||||
.background_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_frosty_forest {
|
||||
.background_frigid_peak {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_frozen_lake {
|
||||
.background_frosty_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_garden_shed {
|
||||
.background_frozen_lake {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_gazebo {
|
||||
.background_garden_shed {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_autumn_leaf {
|
||||
.background_gazebo {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_birdhouse {
|
||||
.background_giant_autumn_leaf {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_book {
|
||||
.background_giant_birdhouse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_dandelions {
|
||||
.background_giant_book {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_florals {
|
||||
.background_giant_dandelions {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_seashell {
|
||||
.background_giant_florals {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_giant_wave {
|
||||
.background_giant_seashell {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_glowing_mushroom_cave {
|
||||
.background_giant_wave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_gorgeous_greenhouse {
|
||||
.background_glowing_mushroom_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_grand_staircase {
|
||||
.background_gorgeous_greenhouse {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_graveyard {
|
||||
.background_grand_staircase {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_green {
|
||||
.background_graveyard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_guardian_statues {
|
||||
.background_green {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_gumdrop_land {
|
||||
.background_guardian_statues {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_habit_city_rooftops {
|
||||
.background_gumdrop_land {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -426px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_habit_city_streets {
|
||||
.background_habit_city_rooftops {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -568px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_halflings_house {
|
||||
.background_habit_city_streets {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -710px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_hall_of_heroes {
|
||||
.background_halflings_house {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -852px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_harvest_feast {
|
||||
.background_hall_of_heroes {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -994px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_harvest_fields {
|
||||
.background_harvest_feast {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1136px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_harvest_moon {
|
||||
.background_harvest_fields {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1278px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_haunted_house {
|
||||
.background_harvest_moon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1420px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_heather_field {
|
||||
.background_haunted_forest {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px 0px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_herding_sheep_in_autumn {
|
||||
.background_haunted_house {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -148px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_holiday_market {
|
||||
.background_heather_field {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -296px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_holiday_wreath {
|
||||
.background_herding_sheep_in_autumn {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -444px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_hot_air_balloon {
|
||||
.background_holiday_market {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -592px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_ice_cave {
|
||||
.background_holiday_wreath {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -740px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_iceberg {
|
||||
.background_hot_air_balloon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -888px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_idyllic_cabin {
|
||||
.background_ice_cave {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -1036px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_in_a_classroom {
|
||||
.background_iceberg {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -1184px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_in_an_ancient_tomb {
|
||||
.background_idyllic_cabin {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -1562px -1332px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_island_waterfalls {
|
||||
.background_in_a_classroom {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: 0px -1480px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_jungle_canopy {
|
||||
.background_in_an_ancient_tomb {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -142px -1480px;
|
||||
width: 141px;
|
||||
height: 147px;
|
||||
}
|
||||
.background_kelp_forest {
|
||||
.background_island_waterfalls {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
|
||||
background-position: -284px -1480px;
|
||||
width: 141px;
|
||||
|
||||
@@ -1,576 +1,714 @@
|
||||
.shop_weapon_wizard_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px -1547px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.shop_weapon_wizard_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -324px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.weapon_healer_0 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1313px -1095px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_healer_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1313px -1186px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_healer_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1513px -1315px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_healer_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -702px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_healer_4 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -793px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_healer_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -884px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_healer_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -975px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_0 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1066px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1157px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1248px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1339px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_4 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1430px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1521px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_rogue_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px 0px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1410px -1315px;
|
||||
width: 102px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px -91px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px -182px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_aetherCrystals {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1295px -1315px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_bardInstrument {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px -273px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_fencingFoil {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px -364px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_lunarScythe {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1624px -455px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_mammothRiderSpear {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1428px -1315px;
|
||||
background-position: -1624px -546px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_nomadsScimitar {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1519px -1315px;
|
||||
background-position: -1624px -637px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_pageBanner {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -190px -1529px;
|
||||
background-position: -1624px -728px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_roguishRainbowMessage {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -281px -1529px;
|
||||
background-position: -1624px -819px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_skeletonKey {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -372px -1529px;
|
||||
background-position: -1624px -910px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_tachi {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -463px -1529px;
|
||||
background-position: -1624px -1001px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_taskwoodsLantern {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -554px -1529px;
|
||||
background-position: -1624px -1092px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_tridentOfCrashingTides {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -645px -1529px;
|
||||
background-position: -1624px -1183px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_0 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -736px -1529px;
|
||||
background-position: -1624px -1274px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -827px -1529px;
|
||||
background-position: -1624px -1365px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -918px -1529px;
|
||||
background-position: -1624px -1456px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1009px -1529px;
|
||||
background-position: 0px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_4 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -1529px;
|
||||
background-position: -91px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1191px -1529px;
|
||||
background-position: -182px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1282px -1529px;
|
||||
background-position: -273px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_0 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1373px -1529px;
|
||||
background-position: -364px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1464px -1529px;
|
||||
background-position: -455px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1555px -1529px;
|
||||
background-position: -546px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1646px -1529px;
|
||||
background-position: -637px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_4 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: 0px -1671px;
|
||||
background-position: -728px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -91px -1671px;
|
||||
background-position: -819px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -182px -1671px;
|
||||
background-position: -910px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.Pet_Currency_Gem {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1214px -1671px;
|
||||
background-position: -1715px -828px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.Pet_Currency_Gem1x {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -596px;
|
||||
background-position: -1767px -1232px;
|
||||
width: 15px;
|
||||
height: 13px;
|
||||
}
|
||||
.Pet_Currency_Gem2x {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1746px -828px;
|
||||
background-position: -1715px -1644px;
|
||||
width: 30px;
|
||||
height: 26px;
|
||||
}
|
||||
.PixelPaw-Gold {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1746px -724px;
|
||||
background-position: -1715px -1232px;
|
||||
width: 51px;
|
||||
height: 51px;
|
||||
}
|
||||
.PixelPaw {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1746px -776px;
|
||||
background-position: -1715px -1284px;
|
||||
width: 51px;
|
||||
height: 51px;
|
||||
}
|
||||
.PixelPaw002 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -856px;
|
||||
background-position: -1715px -1336px;
|
||||
width: 51px;
|
||||
height: 51px;
|
||||
}
|
||||
.avatar_floral_healer {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1401px;
|
||||
background-position: -302px -1466px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_floral_rogue {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1128px -1315px;
|
||||
background-position: -402px -1466px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_floral_warrior {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1228px -1315px;
|
||||
background-position: -502px -1466px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_floral_wizard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1328px -1315px;
|
||||
background-position: -602px -1466px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_snowball_healer {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -856px;
|
||||
background-position: -811px -1315px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.avatar_snowball_rogue {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -962px;
|
||||
background-position: -932px -1315px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.avatar_snowball_warrior {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1068px;
|
||||
background-position: -1053px -1315px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.avatar_snowball_wizard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1174px;
|
||||
background-position: -1174px -1315px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.empty_bottles {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -222px -1466px;
|
||||
background-position: -1715px -1177px;
|
||||
width: 64px;
|
||||
height: 54px;
|
||||
}
|
||||
.ghost {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -273px -1671px;
|
||||
background-position: -1001px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.inventory_present {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -944px;
|
||||
background-position: -1390px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_01 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1712px -1280px;
|
||||
background-position: -660px -435px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_02 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1727px -1401px;
|
||||
background-position: -660px -504px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_03 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -203px;
|
||||
background-position: -660px -573px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_04 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -272px;
|
||||
background-position: -880px -655px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_05 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -341px;
|
||||
background-position: -880px -724px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_06 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -660px -435px;
|
||||
background-position: -880px -793px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_07 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -660px -504px;
|
||||
background-position: -1100px -875px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_08 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -660px -573px;
|
||||
background-position: -1100px -944px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_09 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -655px;
|
||||
background-position: -1100px -1013px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_10 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -724px;
|
||||
background-position: -1183px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_11 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -793px;
|
||||
background-position: -1252px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_12 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -875px;
|
||||
background-position: -1321px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_birthday {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -1013px;
|
||||
background-position: -1459px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_congrats {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1320px -1095px;
|
||||
background-position: -1528px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_fortify {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1320px -1164px;
|
||||
background-position: -1597px -1617px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_getwell {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1320px -1233px;
|
||||
background-position: -1715px 0px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_goodluck {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -455px -1671px;
|
||||
background-position: -1715px -69px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_greeting {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -524px -1671px;
|
||||
background-position: -1715px -138px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_nye {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -593px -1671px;
|
||||
background-position: -1715px -207px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_opaquePotion {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -662px -1671px;
|
||||
background-position: -1715px -276px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_seafoam {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -731px -1671px;
|
||||
background-position: -1715px -345px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_shinySeed {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -800px -1671px;
|
||||
background-position: -1715px -414px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_snowball {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -869px -1671px;
|
||||
background-position: -1715px -483px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_spookySparkles {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -938px -1671px;
|
||||
background-position: -1715px -552px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_thankyou {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1007px -1671px;
|
||||
background-position: -1715px -621px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_trinket {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1076px -1671px;
|
||||
background-position: -1715px -690px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_valentine {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1145px -1671px;
|
||||
background-position: -1715px -759px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.knockout {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -1251px;
|
||||
background-position: -1407px -1237px;
|
||||
width: 120px;
|
||||
height: 47px;
|
||||
}
|
||||
.pet_key {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1283px -1671px;
|
||||
background-position: -1715px -897px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.rebirth_orb {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1352px -1671px;
|
||||
background-position: -1715px -966px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.seafoam_star {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -364px -1671px;
|
||||
background-position: -1092px -1617px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.shop_armoire {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1421px -1671px;
|
||||
background-position: -1715px -1035px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.zzz {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -962px;
|
||||
background-position: -1715px -1429px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.zzz_light {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -908px;
|
||||
background-position: -1715px -1388px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.notif_inventory_present_01 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1003px;
|
||||
background-position: -1715px -1470px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_02 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1032px;
|
||||
background-position: -1744px -1470px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_03 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1068px;
|
||||
background-position: -1715px -1499px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_04 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1097px;
|
||||
background-position: -1744px -1499px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_05 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1126px;
|
||||
background-position: -1715px -1528px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_06 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1174px;
|
||||
background-position: -1744px -1528px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_07 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1203px;
|
||||
background-position: -1715px -1557px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_08 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1232px;
|
||||
background-position: -1744px -1557px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_09 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1712px -1368px;
|
||||
background-position: -1715px -1586px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_10 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1741px -1368px;
|
||||
background-position: -1744px -1586px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_11 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1770px -1368px;
|
||||
background-position: -1715px -1615px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_12 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1727px -1470px;
|
||||
background-position: -1744px -1615px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_special_birthday {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -449px;
|
||||
background-position: -1746px -1644px;
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
.notif_inventory_special_congrats {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -524px;
|
||||
background-position: -1757px -1671px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
.notif_inventory_special_getwell {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -547px;
|
||||
background-position: -1693px -1547px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
.notif_inventory_special_goodluck {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -422px;
|
||||
background-position: -1756px -1429px;
|
||||
width: 20px;
|
||||
height: 26px;
|
||||
}
|
||||
.notif_inventory_special_greeting {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -573px;
|
||||
background-position: -1693px -1570px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
.notif_inventory_special_nye {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1777px -828px;
|
||||
background-position: -1756px -1388px;
|
||||
width: 24px;
|
||||
height: 26px;
|
||||
}
|
||||
.notif_inventory_special_thankyou {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -474px;
|
||||
background-position: -1715px -1671px;
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
.notif_inventory_special_valentine {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -499px;
|
||||
background-position: -1736px -1671px;
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
.npc_bailey {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1737px -1529px;
|
||||
background-position: -1715px -1104px;
|
||||
width: 60px;
|
||||
height: 72px;
|
||||
}
|
||||
.npc_justin {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1280px;
|
||||
background-position: -220px -203px;
|
||||
width: 84px;
|
||||
height: 120px;
|
||||
}
|
||||
.npc_matt {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -932px -1315px;
|
||||
background-position: -1407px -1098px;
|
||||
width: 195px;
|
||||
height: 138px;
|
||||
}
|
||||
@@ -582,19 +720,19 @@
|
||||
}
|
||||
.banner_flair_dysheartener {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1712px -1349px;
|
||||
background-position: -1528px -1237px;
|
||||
width: 69px;
|
||||
height: 18px;
|
||||
}
|
||||
.phobia_dysheartener {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1187px -880px;
|
||||
background-position: -307px -220px;
|
||||
width: 201px;
|
||||
height: 195px;
|
||||
}
|
||||
.quest_alligator {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -648px;
|
||||
background-position: -967px -660px;
|
||||
width: 201px;
|
||||
height: 213px;
|
||||
}
|
||||
@@ -612,19 +750,19 @@
|
||||
}
|
||||
.quest_atom1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -222px -1315px;
|
||||
background-position: 0px -1315px;
|
||||
width: 250px;
|
||||
height: 150px;
|
||||
}
|
||||
.quest_atom2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -724px -1315px;
|
||||
background-position: -1407px -959px;
|
||||
width: 207px;
|
||||
height: 138px;
|
||||
}
|
||||
.quest_atom3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -747px -440px;
|
||||
background-position: -1407px 0px;
|
||||
width: 216px;
|
||||
height: 180px;
|
||||
}
|
||||
@@ -642,13 +780,13 @@
|
||||
}
|
||||
.quest_basilist {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: 0px -1529px;
|
||||
background-position: -502px -1315px;
|
||||
width: 189px;
|
||||
height: 141px;
|
||||
}
|
||||
.quest_beetle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -862px;
|
||||
background-position: -747px -440px;
|
||||
width: 204px;
|
||||
height: 201px;
|
||||
}
|
||||
@@ -660,7 +798,7 @@
|
||||
}
|
||||
.quest_bunny {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -967px -660px;
|
||||
background-position: -1102px -1095px;
|
||||
width: 210px;
|
||||
height: 186px;
|
||||
}
|
||||
@@ -678,7 +816,7 @@
|
||||
}
|
||||
.quest_cow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px 0px;
|
||||
background-position: -1407px -537px;
|
||||
width: 174px;
|
||||
height: 213px;
|
||||
}
|
||||
@@ -690,13 +828,13 @@
|
||||
}
|
||||
.quest_dilatoryDistress1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -437px;
|
||||
background-position: -1187px -880px;
|
||||
width: 210px;
|
||||
height: 210px;
|
||||
}
|
||||
.quest_dilatoryDistress2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -422px;
|
||||
background-position: 0px -1466px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
@@ -726,13 +864,13 @@
|
||||
}
|
||||
.quest_egg {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -214px;
|
||||
background-position: -1407px -751px;
|
||||
width: 165px;
|
||||
height: 207px;
|
||||
}
|
||||
.quest_evilsanta {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -724px;
|
||||
background-position: -692px -1315px;
|
||||
width: 118px;
|
||||
height: 131px;
|
||||
}
|
||||
@@ -762,7 +900,7 @@
|
||||
}
|
||||
.quest_frog {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: 0px -1315px;
|
||||
background-position: -880px -1095px;
|
||||
width: 221px;
|
||||
height: 213px;
|
||||
}
|
||||
@@ -780,7 +918,7 @@
|
||||
}
|
||||
.quest_goldenknight2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -473px -1315px;
|
||||
background-position: -251px -1315px;
|
||||
width: 250px;
|
||||
height: 150px;
|
||||
}
|
||||
@@ -792,7 +930,7 @@
|
||||
}
|
||||
.quest_gryphon {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -527px -220px;
|
||||
background-position: -1407px -181px;
|
||||
width: 216px;
|
||||
height: 177px;
|
||||
}
|
||||
@@ -810,7 +948,7 @@
|
||||
}
|
||||
.quest_hedgehog {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -1064px;
|
||||
background-position: -527px -220px;
|
||||
width: 219px;
|
||||
height: 186px;
|
||||
}
|
||||
@@ -834,7 +972,7 @@
|
||||
}
|
||||
.quest_kraken {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -307px -220px;
|
||||
background-position: -1407px -359px;
|
||||
width: 216px;
|
||||
height: 177px;
|
||||
}
|
||||
@@ -858,7 +996,7 @@
|
||||
}
|
||||
.quest_mayhemMistiflying1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -573px;
|
||||
background-position: -151px -1466px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
@@ -868,27 +1006,3 @@
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_mayhemMistiflying3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -1095px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_monkey {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -1095px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_moon1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -220px;
|
||||
width: 216px;
|
||||
height: 216px;
|
||||
}
|
||||
.quest_moon2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 116 KiB |
|
Before Width: | Height: | Size: 472 KiB After Width: | Height: | Size: 466 KiB |
|
Before Width: | Height: | Size: 565 KiB After Width: | Height: | Size: 555 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 127 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 345 KiB |
|
Before Width: | Height: | Size: 350 KiB After Width: | Height: | Size: 344 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 167 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 311 KiB After Width: | Height: | Size: 330 KiB |
|
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 157 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 161 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 119 KiB |
|
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 152 KiB |
@@ -295,7 +295,10 @@
|
||||
&-control {
|
||||
&-bg { background: $gray-600; }
|
||||
&-inner {
|
||||
border: 1px solid $gray-300;
|
||||
&:not(:focus) {
|
||||
border: 1px solid $gray-300 !important;
|
||||
}
|
||||
|
||||
opacity: 0.75;
|
||||
|
||||
.negative, .positive {
|
||||
|
||||
@@ -227,7 +227,7 @@ export default {
|
||||
return this.member.preferences.costume ? 'costume' : 'equipped';
|
||||
},
|
||||
specialMountClass () {
|
||||
if (!this.avatarOnly && this.member.items.currentMount && this.member.items.currentMount.indexOf('Kangaroo') !== -1) {
|
||||
if (!this.avatarOnly && this.member.items.currentMount && this.member.items.currentMount.includes('Kangaroo')) {
|
||||
return 'offset-kangaroo';
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
v-if="withPin"
|
||||
class="badge-dialog"
|
||||
@click.prevent.stop="togglePinned()"
|
||||
@keypress.enter.prevent.stop="togglePinned()"
|
||||
tabindex="0"
|
||||
>
|
||||
<pin-badge
|
||||
:pinned="isPinned"
|
||||
@@ -18,6 +20,8 @@
|
||||
class="svg-icon icon-12 close-icon"
|
||||
aria-hidden="true"
|
||||
@click="hideDialog()"
|
||||
@keypress.enter="hideDialog()"
|
||||
tabindex="0"
|
||||
v-html="icons.close"
|
||||
></span>
|
||||
</div>
|
||||
@@ -145,10 +149,13 @@
|
||||
v-else
|
||||
class="btn btn-primary"
|
||||
:disabled="item.key === 'gem' && gemsLeft === 0 ||
|
||||
attemptingToPurchaseMoreGemsThanAreLeft || numberInvalid || item.locked"
|
||||
attemptingToPurchaseMoreGemsThanAreLeft || numberInvalid || item.locked ||
|
||||
!preventHealthPotion ||
|
||||
!enoughCurrency(getPriceClass(), item.value * selectedAmountToBuy)"
|
||||
:class="{'notEnough': !preventHealthPotion ||
|
||||
!enoughCurrency(getPriceClass(), item.value * selectedAmountToBuy)}"
|
||||
@click="buyItem()"
|
||||
tabindex="0"
|
||||
>
|
||||
{{ $t('buyNow') }}
|
||||
</button>
|
||||
@@ -289,6 +296,10 @@
|
||||
margin-top: 24px;
|
||||
margin-bottom: 24px;
|
||||
min-width: 6rem;
|
||||
|
||||
&:focus {
|
||||
border: 2px solid black;
|
||||
}
|
||||
}
|
||||
|
||||
.balance {
|
||||
@@ -554,12 +565,16 @@ export default {
|
||||
}
|
||||
|
||||
const ownedPets = reduce(this.user.items.pets, (sum, petValue, petKey) => {
|
||||
if (petKey.includes(this.item.key) && petValue > 0) return sum + 1;
|
||||
if (petKey.includes(this.item.key) && petValue > 0
|
||||
&& !petKey.includes('JackOLantern') // Jack-O-Lantern has "Ghost" version
|
||||
) return sum + 1;
|
||||
return sum;
|
||||
}, 0);
|
||||
|
||||
const ownedMounts = reduce(this.user.items.mounts, (sum, mountValue, mountKey) => {
|
||||
if (mountKey.includes(this.item.key) && mountValue === true) return sum + 1;
|
||||
if (mountKey.includes(this.item.key) && mountValue === true
|
||||
&& !mountKey.includes('JackOLantern')
|
||||
) return sum + 1;
|
||||
return sum;
|
||||
}, 0);
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
:id="itemId"
|
||||
class="item-wrapper"
|
||||
@click="click()"
|
||||
@keypress.enter="click()"
|
||||
tabindex="0"
|
||||
>
|
||||
<div
|
||||
class="item"
|
||||
@@ -63,7 +65,7 @@
|
||||
<b-popover
|
||||
v-if="showPopover"
|
||||
:target="itemId"
|
||||
triggers="hover"
|
||||
triggers="hover focus"
|
||||
:placement="popoverPosition"
|
||||
>
|
||||
<slot
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
class="filter small-text"
|
||||
:class="{active: activeFilter.label === filter}"
|
||||
@click="activateFilter(type, filter)"
|
||||
@keypress.enter="activateFilter(type, filter)"
|
||||
tabindex="0"
|
||||
>
|
||||
{{ $t(filter) }}
|
||||
</div>
|
||||
@@ -128,6 +130,7 @@
|
||||
<span
|
||||
class="badge-top"
|
||||
@click.prevent.stop="togglePinned(ctx.item)"
|
||||
@keypress.enter.prevent.stop="togglePinned(ctx.item)"
|
||||
>
|
||||
<pin-badge
|
||||
:pinned="ctx.item.pinned"
|
||||
@@ -156,6 +159,10 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
.item:focus-within .badge-pin {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tasks-column {
|
||||
min-height: 556px;
|
||||
}
|
||||
|
||||
@@ -38,6 +38,9 @@
|
||||
}, controlClass.up.inner]"
|
||||
@click="(isUser && task.up && (!task.group.approval.requested
|
||||
|| task.group.approval.approved)) ? score('up') : null"
|
||||
@keypress.enter="(isUser && task.up && (!task.group.approval.requested
|
||||
|| task.group.approval.approved)) ? score('up') : null"
|
||||
tabindex="0"
|
||||
>
|
||||
<div
|
||||
v-if="!isUser"
|
||||
@@ -65,6 +68,9 @@
|
||||
:class="controlClass.inner"
|
||||
@click="isUser && !task.group.approval.requested
|
||||
? score(task.completed ? 'down' : 'up' ) : null"
|
||||
@keypress.enter="isUser && !task.group.approval.requested
|
||||
? score(task.completed ? 'down' : 'up' ) : null"
|
||||
tabindex="0"
|
||||
>
|
||||
<div
|
||||
v-if="!isUser"
|
||||
@@ -92,6 +98,8 @@
|
||||
class="task-clickable-area"
|
||||
:class="{'task-clickable-area-user': isUser}"
|
||||
@click="edit($event, task)"
|
||||
@keypress.enter="edit($event, task)"
|
||||
tabindex="0"
|
||||
>
|
||||
<div class="d-flex justify-content-between">
|
||||
<h3
|
||||
@@ -103,6 +111,7 @@
|
||||
v-if="!isRunningYesterdailies && showOptions"
|
||||
ref="taskDropdown"
|
||||
v-b-tooltip.hover.top="$t('options')"
|
||||
tabindex="0"
|
||||
class="task-dropdown"
|
||||
:right="task.type === 'reward'"
|
||||
>
|
||||
@@ -117,6 +126,8 @@
|
||||
v-if="showEdit"
|
||||
ref="editTaskItem"
|
||||
class="dropdown-item edit-task-item"
|
||||
tabindex="0"
|
||||
@keypress.enter="edit($event, task)"
|
||||
>
|
||||
<span class="dropdown-icon-item">
|
||||
<span
|
||||
@@ -130,6 +141,8 @@
|
||||
v-if="isUser"
|
||||
class="dropdown-item"
|
||||
@click="moveToTop"
|
||||
tabindex="0"
|
||||
@keypress.enter="moveToTop"
|
||||
>
|
||||
<span class="dropdown-icon-item">
|
||||
<span
|
||||
@@ -143,6 +156,8 @@
|
||||
v-if="isUser"
|
||||
class="dropdown-item"
|
||||
@click="moveToBottom"
|
||||
tabindex="0"
|
||||
@keypress.enter="moveToBottom"
|
||||
>
|
||||
<span class="dropdown-icon-item">
|
||||
<span
|
||||
@@ -156,6 +171,8 @@
|
||||
v-if="showDelete"
|
||||
class="dropdown-item"
|
||||
@click="destroy"
|
||||
tabindex="0"
|
||||
@keypress.enter="destroy"
|
||||
>
|
||||
<span class="dropdown-icon-item delete-task-item">
|
||||
<span
|
||||
@@ -185,7 +202,9 @@
|
||||
? 'expand': 'collapse'}Checklist`)"
|
||||
class="collapse-checklist mb-2 d-flex align-items-center expand-toggle"
|
||||
:class="{open: !task.collapseChecklist}"
|
||||
tabindex="0"
|
||||
@click="collapseChecklist(task)"
|
||||
@keypress.enter="collapseChecklist(task)"
|
||||
>
|
||||
<div
|
||||
v-once
|
||||
@@ -207,10 +226,12 @@
|
||||
<input
|
||||
:id="`checklist-${item.id}-${random}`"
|
||||
class="custom-control-input"
|
||||
tabindex="0"
|
||||
type="checkbox"
|
||||
:checked="item.completed"
|
||||
:disabled="castingSpell || !isUser"
|
||||
@change="toggleChecklistItem(item)"
|
||||
@keypress.enter="toggleChecklistItem(item)"
|
||||
>
|
||||
<label
|
||||
v-markdown="item.text"
|
||||
@@ -330,6 +351,9 @@
|
||||
}, controlClass.down.inner]"
|
||||
@click="(isUser && task.down && (!task.group.approval.requested
|
||||
|| task.group.approval.approved)) ? score('down') : null"
|
||||
@keypress.enter="(isUser && task.down && (!task.group.approval.requested
|
||||
|| task.group.approval.approved)) ? score('down') : null"
|
||||
tabindex="0"
|
||||
>
|
||||
<div
|
||||
v-if="!isUser"
|
||||
@@ -350,6 +374,8 @@
|
||||
class="right-control d-flex align-items-center justify-content-center reward-control"
|
||||
:class="controlClass.bg"
|
||||
@click="isUser ? score('down') : null"
|
||||
@keypress.enter="isUser ? score('down') : null"
|
||||
tabindex="0"
|
||||
>
|
||||
<div
|
||||
class="svg-icon"
|
||||
@@ -373,6 +399,19 @@
|
||||
<!-- eslint-disable max-len -->
|
||||
<style lang="scss" scoped>
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
.task-best-control-inner-habit:focus {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
*:focus {
|
||||
outline: none;
|
||||
transition: none;
|
||||
border: $purple-400 solid 1px;
|
||||
|
||||
:not(task-best-control-inner-habit) { // round icon
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.control-bottom-box {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
@@ -395,14 +434,16 @@
|
||||
border-radius: 2px;
|
||||
position: relative;
|
||||
|
||||
&:hover:not(.task-not-editable) {
|
||||
&:hover:not(.task-not-editable),
|
||||
&:focus-within:not(.task-not-editable) {
|
||||
box-shadow: 0 1px 8px 0 rgba($black, 0.12), 0 4px 4px 0 rgba($black, 0.16);
|
||||
z-index: 11;
|
||||
}
|
||||
}
|
||||
|
||||
.task:not(.groupTask) {
|
||||
&:hover {
|
||||
&:hover,
|
||||
&:focus-within {
|
||||
.left-control, .right-control, .task-content {
|
||||
border-color: $purple-400;
|
||||
}
|
||||
@@ -410,7 +451,8 @@
|
||||
}
|
||||
|
||||
.task.groupTask {
|
||||
&:hover:not(.task-not-editable) {
|
||||
&:hover:not(.task-not-editable),
|
||||
&:focus-within:not(.task-not-editable) {
|
||||
border: $purple-400 solid 1px;
|
||||
border-radius: 3px;
|
||||
margin: -1px; // to counter the border width
|
||||
@@ -455,10 +497,16 @@
|
||||
.task-clickable-area {
|
||||
padding: 7px 8px;
|
||||
padding-bottom: 0px;
|
||||
border: transparent solid 1px;
|
||||
|
||||
&-user {
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
border-radius: 2px;
|
||||
border: $purple-400 solid 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.task-title + .task-dropdown ::v-deep .dropdown-menu {
|
||||
@@ -482,6 +530,20 @@
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.task:focus-within ::v-deep .habitica-menu-dropdown .habitica-menu-dropdown-toggle {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.task ::v-deep .habitica-menu-dropdown:focus-within {
|
||||
opacity: 1;
|
||||
border: $purple-400 solid 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.task ::v-deep .habitica-menu-dropdown {
|
||||
border: transparent solid 1px;
|
||||
}
|
||||
|
||||
.task-clickable-area ::v-deep .habitica-menu-dropdown.open .habitica-menu-dropdown-toggle {
|
||||
opacity: 1;
|
||||
|
||||
@@ -494,20 +556,26 @@
|
||||
color: $purple-400 !important;
|
||||
}
|
||||
|
||||
.task-clickable-area ::v-deep .habitica-menu-dropdown .habitica-menu-dropdown-toggle:focus-within .svg-icon {
|
||||
color: $purple-400 !important;
|
||||
}
|
||||
|
||||
.task-dropdown {
|
||||
max-height: 16px;
|
||||
max-height: 18px;
|
||||
}
|
||||
|
||||
.task-dropdown ::v-deep .dropdown-menu {
|
||||
.dropdown-item {
|
||||
cursor: pointer !important;
|
||||
transition: none;
|
||||
border: transparent solid 1px;
|
||||
|
||||
* {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: $purple-300;
|
||||
|
||||
.svg-icon.push-to-top, .svg-icon.push-to-bottom {
|
||||
@@ -516,6 +584,11 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:focus {
|
||||
border-radius: 2px;
|
||||
border: $purple-400 solid 1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -551,12 +624,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
.checklist {
|
||||
&.isOpen {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
margin-top: -3px;
|
||||
.checklist.isOpen {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
.collapse-checklist {
|
||||
@@ -567,8 +636,10 @@
|
||||
line-height: 1.2;
|
||||
text-align: center;
|
||||
color: $gray-200;
|
||||
border: transparent solid 1px;
|
||||
|
||||
&.open {
|
||||
&:focus {
|
||||
border: $purple-400 solid 1px;
|
||||
}
|
||||
|
||||
span {
|
||||
@@ -706,6 +777,11 @@
|
||||
transition-duration: 0.15s;
|
||||
transition-property: border-color, background, color;
|
||||
transition-timing-function: ease-in;
|
||||
border: transparent solid 1px;
|
||||
|
||||
&:focus {
|
||||
border: $purple-400 solid 1px;
|
||||
}
|
||||
}
|
||||
.left-control {
|
||||
border-top-left-radius: 2px;
|
||||
@@ -1012,7 +1088,6 @@ export default {
|
||||
},
|
||||
edit (e, task) {
|
||||
if (this.isRunningYesterdailies || !this.showEdit) return;
|
||||
|
||||
const target = e.target || e.srcElement;
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import Vue from 'vue';
|
||||
import merge from 'lodash/merge';
|
||||
|
||||
import Avatar from '@/components/avatar';
|
||||
import generateStore from '@/store';
|
||||
|
||||
@@ -6,26 +8,27 @@ context('avatar.vue', () => {
|
||||
let Constructr;
|
||||
let vm;
|
||||
|
||||
const baseMember = {
|
||||
stats: {
|
||||
buffs: {},
|
||||
class: 'warrior',
|
||||
},
|
||||
preferences: {
|
||||
hair: {},
|
||||
},
|
||||
items: {
|
||||
gear: {
|
||||
equipped: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
Constructr = Vue.extend(Avatar);
|
||||
|
||||
vm = new Constructr({
|
||||
propsData: {
|
||||
member: {
|
||||
stats: {
|
||||
buffs: {},
|
||||
},
|
||||
preferences: {
|
||||
hair: {},
|
||||
},
|
||||
items: {
|
||||
gear: {
|
||||
equipped: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}).$mount();
|
||||
propsData: { member: baseMember },
|
||||
});
|
||||
|
||||
vm.$store = generateStore();
|
||||
});
|
||||
@@ -36,11 +39,11 @@ context('avatar.vue', () => {
|
||||
|
||||
describe('hasClass', () => {
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
vm.member = merge({
|
||||
stats: { lvl: 17 },
|
||||
preferences: { disableClasses: true },
|
||||
flags: { classSelected: false },
|
||||
};
|
||||
}, baseMember);
|
||||
});
|
||||
|
||||
it('accurately reports class status', () => {
|
||||
@@ -54,14 +57,6 @@ context('avatar.vue', () => {
|
||||
});
|
||||
|
||||
describe('isBuffed', () => {
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
stats: {
|
||||
buffs: {},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
it('accurately reports if buffed', () => {
|
||||
expect(vm.isBuffed).to.equal(undefined);
|
||||
|
||||
@@ -72,29 +67,23 @@ context('avatar.vue', () => {
|
||||
});
|
||||
|
||||
describe('paddingTop', () => {
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
items: {},
|
||||
};
|
||||
});
|
||||
|
||||
xit('defaults to 27px', () => {
|
||||
vm.avatarOnly = true;
|
||||
expect(vm.paddingTop).to.equal('27px');
|
||||
});
|
||||
|
||||
it('is 24px if user has a pet', () => {
|
||||
vm.member.items = {
|
||||
vm.member.items = merge({
|
||||
currentPet: { name: 'Foo' },
|
||||
};
|
||||
}, baseMember.items);
|
||||
|
||||
expect(vm.paddingTop).to.equal('24px');
|
||||
});
|
||||
|
||||
it('is 0px if user has a mount', () => {
|
||||
vm.member.items = {
|
||||
currentMount: { name: 'Bar' },
|
||||
};
|
||||
vm.member.items = merge({
|
||||
currentMount: 'Bar',
|
||||
}, baseMember.items);
|
||||
|
||||
expect(vm.paddingTop).to.equal('0px');
|
||||
});
|
||||
@@ -106,28 +95,25 @@ context('avatar.vue', () => {
|
||||
});
|
||||
|
||||
describe('costumeClass', () => {
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
preferences: {},
|
||||
};
|
||||
});
|
||||
|
||||
it('returns if showing equipped gear', () => {
|
||||
expect(vm.costumeClass).to.equal('equipped');
|
||||
});
|
||||
|
||||
it('returns if wearing a costume', () => {
|
||||
vm.member.preferences = { costume: true };
|
||||
vm.member.preferences = { costume: true, hair: {} };
|
||||
vm.member.items.gear.costume = {};
|
||||
|
||||
expect(vm.costumeClass).to.equal('costume');
|
||||
});
|
||||
});
|
||||
|
||||
describe('visualBuffs', () => {
|
||||
it('returns an array of buffs', () => {
|
||||
vm.member = {
|
||||
vm.member = merge({
|
||||
stats: {
|
||||
class: 'warrior',
|
||||
},
|
||||
};
|
||||
}, baseMember);
|
||||
|
||||
expect(vm.visualBuffs).to.include({ snowball: 'avatar_snowball_warrior' });
|
||||
expect(vm.visualBuffs).to.include({ spookySparkles: 'ghost' });
|
||||
@@ -138,7 +124,10 @@ context('avatar.vue', () => {
|
||||
|
||||
describe('backgroundClass', () => {
|
||||
beforeEach(() => {
|
||||
vm.member.preferences = { background: 'pony' };
|
||||
vm.member.preferences = {
|
||||
hair: {},
|
||||
background: 'pony',
|
||||
};
|
||||
});
|
||||
|
||||
it('shows the background', () => {
|
||||
@@ -161,17 +150,11 @@ context('avatar.vue', () => {
|
||||
|
||||
describe('specialMountClass', () => {
|
||||
it('checks if riding a Kangaroo', () => {
|
||||
vm.member = {
|
||||
stats: {
|
||||
class: 'None',
|
||||
},
|
||||
items: {},
|
||||
};
|
||||
|
||||
expect(vm.specialMountClass).to.equal(null);
|
||||
|
||||
vm.member.items = {
|
||||
currentMount: ['Kangaroo'],
|
||||
currentMount: 'Kangaroo',
|
||||
gear: { equipped: {} },
|
||||
};
|
||||
|
||||
expect(vm.specialMountClass).to.equal('offset-kangaroo');
|
||||
@@ -180,24 +163,22 @@ context('avatar.vue', () => {
|
||||
|
||||
describe('skinClass', () => {
|
||||
it('returns current skin color', () => {
|
||||
vm.member = {
|
||||
stats: {},
|
||||
vm.member = merge({
|
||||
preferences: {
|
||||
skin: 'blue',
|
||||
},
|
||||
};
|
||||
}, baseMember);
|
||||
|
||||
expect(vm.skinClass).to.equal('skin_blue');
|
||||
});
|
||||
|
||||
it('returns if sleep or not', () => {
|
||||
vm.member = {
|
||||
stats: {},
|
||||
vm.member = merge({
|
||||
preferences: {
|
||||
skin: 'blue',
|
||||
sleep: false,
|
||||
},
|
||||
};
|
||||
}, baseMember);
|
||||
|
||||
expect(vm.skinClass).to.equal('skin_blue');
|
||||
|
||||
@@ -210,14 +191,14 @@ context('avatar.vue', () => {
|
||||
context('methods', () => {
|
||||
describe('getGearClass', () => {
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
vm.member = merge({
|
||||
items: {
|
||||
gear: {
|
||||
equipped: { Hat: 'Fancy Tophat' },
|
||||
},
|
||||
},
|
||||
preferences: { costume: false },
|
||||
};
|
||||
}, baseMember);
|
||||
});
|
||||
|
||||
it('returns undefined if no match', () => {
|
||||
@@ -242,7 +223,7 @@ context('avatar.vue', () => {
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
vm.member = merge({
|
||||
items: {
|
||||
gear: {
|
||||
equipped: {
|
||||
@@ -254,13 +235,13 @@ context('avatar.vue', () => {
|
||||
},
|
||||
},
|
||||
preferences: { costume: false },
|
||||
};
|
||||
}, baseMember);
|
||||
});
|
||||
});
|
||||
|
||||
describe('show avatar', () => {
|
||||
beforeEach(() => {
|
||||
vm.member = {
|
||||
vm.member = merge({
|
||||
stats: {
|
||||
buffs: {
|
||||
snowball: false,
|
||||
@@ -269,7 +250,7 @@ context('avatar.vue', () => {
|
||||
shinySeed: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
}, baseMember);
|
||||
});
|
||||
it('does if not showing visual buffs', () => {
|
||||
expect(vm.showAvatar()).to.equal(true);
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import Vue from 'vue';
|
||||
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
||||
|
||||
import ChatCard from '@/components/chat/chatCard.vue';
|
||||
@@ -5,6 +6,7 @@ import Store from '@/libs/store';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(Store);
|
||||
localVue.use(Vue.directive('b-tooltip', {}));
|
||||
|
||||
describe('ChatCard', () => {
|
||||
function createMessage (text) {
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
||||
|
||||
import Home from '@/components/static/home.vue';
|
||||
import Store from '@/libs/store';
|
||||
import * as Analytics from '@/libs/analytics';
|
||||
|
||||
const localVue = createLocalVue();
|
||||
localVue.use(Store);
|
||||
|
||||
describe('Home', () => {
|
||||
let registerStub;
|
||||
let socialAuthStub;
|
||||
let store;
|
||||
let wrapper;
|
||||
|
||||
function mountWrapper (query) {
|
||||
return shallowMount(Home, {
|
||||
store,
|
||||
localVue,
|
||||
mocks: {
|
||||
$t: string => string,
|
||||
$route: { query: query || {} },
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async function fillOutUserForm (username, email, password) {
|
||||
await wrapper.find('#usernameInput').setValue(username);
|
||||
await wrapper.find('input[type=email]').setValue(email);
|
||||
await wrapper.findAll('input[type=password]').setValue(password);
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
registerStub = sinon.stub();
|
||||
socialAuthStub = sinon.stub();
|
||||
store = new Store({
|
||||
state: {},
|
||||
getters: {},
|
||||
actions: {
|
||||
'auth:register': registerStub,
|
||||
'auth:socialAuth': socialAuthStub,
|
||||
'auth:verifyUsername': () => Promise.resolve({}),
|
||||
},
|
||||
});
|
||||
|
||||
sinon.stub(Analytics, 'track');
|
||||
|
||||
wrapper = mountWrapper();
|
||||
});
|
||||
|
||||
afterEach(sinon.restore);
|
||||
|
||||
it('has a visible title', () => {
|
||||
expect(wrapper.find('h1').text()).to.equal('motivateYourself');
|
||||
});
|
||||
|
||||
describe('signup form', () => {
|
||||
it('registers a user from the form', async () => {
|
||||
const username = 'newUser';
|
||||
const email = 'rookie@habitica.com';
|
||||
const password = 'ImmaG3tProductive!';
|
||||
await fillOutUserForm(username, email, password);
|
||||
|
||||
await wrapper.find('form').trigger('submit');
|
||||
|
||||
expect(registerStub.calledOnce).to.be.true;
|
||||
expect(registerStub.getCall(0).args[1]).to.deep.equal({
|
||||
username,
|
||||
email,
|
||||
password,
|
||||
passwordConfirm: password,
|
||||
groupInvite: '',
|
||||
});
|
||||
});
|
||||
|
||||
it('registers a user with group invite if groupInvite in the query', async () => {
|
||||
const groupInvite = 'TheBestGroup';
|
||||
wrapper = mountWrapper({ groupInvite });
|
||||
await fillOutUserForm('invitedUser', 'invited@habitica.com', '1veGotFri3ndsHooray!');
|
||||
|
||||
await wrapper.find('form').trigger('submit');
|
||||
|
||||
expect(registerStub.calledOnce).to.be.true;
|
||||
expect(registerStub.getCall(0).args[1].groupInvite).to.equal(groupInvite);
|
||||
});
|
||||
|
||||
it('registers a user with group invite if p in the query', async () => {
|
||||
const p = 'ThePiGroup';
|
||||
wrapper = mountWrapper({ p });
|
||||
await fillOutUserForm('alsoInvitedUser', 'invited2@habitica.com', '1veGotFri3nds2!');
|
||||
|
||||
await wrapper.find('form').trigger('submit');
|
||||
|
||||
expect(registerStub.calledOnce).to.be.true;
|
||||
expect(registerStub.getCall(0).args[1].groupInvite).to.equal(p);
|
||||
});
|
||||
|
||||
it('registers a user with group invite invite if both p and groupInvite are in the query', async () => {
|
||||
const groupInvite = 'StillTheBestGroup';
|
||||
wrapper = mountWrapper({ p: 'LesserGroup', groupInvite });
|
||||
await fillOutUserForm('doublyInvitedUser', 'invited3@habitica.com', '1veGotSm4rtFri3nds!');
|
||||
|
||||
await wrapper.find('form').trigger('submit');
|
||||
|
||||
expect(registerStub.calledOnce).to.be.true;
|
||||
expect(registerStub.getCall(0).args[1].groupInvite).to.equal(groupInvite);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -20,7 +20,7 @@ describe('Notifications', () => {
|
||||
lvl: 0,
|
||||
},
|
||||
flags: {},
|
||||
preferences: {},
|
||||
preferences: { suppressModals: {} },
|
||||
party: {
|
||||
quest: {
|
||||
},
|
||||
@@ -55,6 +55,7 @@ describe('Notifications', () => {
|
||||
|
||||
expect(wrapper.vm.userHasClass).to.be.true;
|
||||
});
|
||||
|
||||
describe('user exp notifcation', () => {
|
||||
it('notifies when user gets more exp', () => {
|
||||
const expSpy = sinon.spy(wrapper.vm, 'exp');
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { mount, createLocalVue } from '@vue/test-utils';
|
||||
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
||||
import TaskColumn from '@/components/tasks/column.vue';
|
||||
import Store from '@/libs/store';
|
||||
|
||||
@@ -7,10 +7,6 @@ localVue.use(Store);
|
||||
|
||||
describe('Task Column', () => {
|
||||
let wrapper;
|
||||
let store; let
|
||||
getters;
|
||||
let habits; let taskListOverride; let
|
||||
tasks;
|
||||
|
||||
function makeWrapper (additionalSetup = {}) {
|
||||
const type = 'habit';
|
||||
@@ -19,9 +15,12 @@ describe('Task Column', () => {
|
||||
};
|
||||
const stubs = ['b-modal']; // <b-modal> is a custom component and not tested here
|
||||
|
||||
return mount(TaskColumn, {
|
||||
propsData: {
|
||||
type,
|
||||
return shallowMount(TaskColumn, {
|
||||
propsData: { type },
|
||||
store: {
|
||||
getters: {
|
||||
'tasks:getFilteredTaskList': () => [],
|
||||
},
|
||||
},
|
||||
mocks,
|
||||
stubs,
|
||||
@@ -56,6 +55,9 @@ describe('Task Column', () => {
|
||||
});
|
||||
|
||||
describe('Computed Properties', () => {
|
||||
let taskListOverride;
|
||||
let habits;
|
||||
|
||||
beforeEach(() => {
|
||||
habits = [
|
||||
{ id: 1 },
|
||||
@@ -67,14 +69,14 @@ describe('Task Column', () => {
|
||||
{ id: 4 },
|
||||
];
|
||||
|
||||
getters = {
|
||||
const getters = {
|
||||
// (...) => { ... } will return a value
|
||||
// (...) => (...) => { ... } will return a function
|
||||
// Task Column expects a function
|
||||
'tasks:getFilteredTaskList': () => () => habits,
|
||||
};
|
||||
|
||||
store = new Store({ getters });
|
||||
const store = new Store({ getters });
|
||||
|
||||
wrapper = makeWrapper({ store });
|
||||
});
|
||||
@@ -103,6 +105,8 @@ describe('Task Column', () => {
|
||||
});
|
||||
|
||||
describe('Methods', () => {
|
||||
let tasks;
|
||||
|
||||
describe('Filter By Tags', () => {
|
||||
beforeEach(() => {
|
||||
tasks = [
|
||||
|
||||
@@ -6,6 +6,19 @@ const localVue = createLocalVue();
|
||||
localVue.use(Store);
|
||||
|
||||
describe('Tasks User', () => {
|
||||
function createWrapper (challengeTag) {
|
||||
const store = new Store({
|
||||
state: { user: { data: { tags: [challengeTag] } } },
|
||||
getters: {},
|
||||
});
|
||||
return shallowMount(User, {
|
||||
store,
|
||||
localVue,
|
||||
mocks: { $t: s => s },
|
||||
stubs: ['b-tooltip'],
|
||||
});
|
||||
}
|
||||
|
||||
describe('Computed Properties', () => {
|
||||
it('should render a challenge tag under challenge header in tag filter popup when the challenge is active', () => {
|
||||
const activeChallengeTag = {
|
||||
@@ -13,20 +26,7 @@ describe('Tasks User', () => {
|
||||
name: 'Challenge1',
|
||||
challenge: true,
|
||||
};
|
||||
const state = {
|
||||
user: {
|
||||
data: {
|
||||
tags: [activeChallengeTag],
|
||||
},
|
||||
},
|
||||
};
|
||||
const getters = {};
|
||||
const store = new Store({ state, getters });
|
||||
const wrapper = shallowMount(User, {
|
||||
store,
|
||||
localVue,
|
||||
});
|
||||
|
||||
const wrapper = createWrapper(activeChallengeTag);
|
||||
const computedTagsByType = wrapper.vm.tagsByType;
|
||||
|
||||
expect(computedTagsByType.challenges.tags.length).to.equal(1);
|
||||
@@ -40,20 +40,7 @@ describe('Tasks User', () => {
|
||||
name: 'Challenge1',
|
||||
challenge: false,
|
||||
};
|
||||
const state = {
|
||||
user: {
|
||||
data: {
|
||||
tags: [inactiveChallengeTag],
|
||||
},
|
||||
},
|
||||
};
|
||||
const getters = {};
|
||||
const store = new Store({ state, getters });
|
||||
const wrapper = shallowMount(User, {
|
||||
store,
|
||||
localVue,
|
||||
});
|
||||
|
||||
const wrapper = createWrapper(inactiveChallengeTag);
|
||||
const computedTagsByType = wrapper.vm.tagsByType;
|
||||
|
||||
expect(computedTagsByType.challenges.tags.length).to.equal(0);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Your <%= itemText %> broke.",
|
||||
"messageTaskNotFound": "Task not found.",
|
||||
"messageDuplicateTaskID": "A task with that ID already exists.",
|
||||
"messageTagNotFound": "Tag not found.",
|
||||
"messagePetNotFound": ":pet not found in user.items.pets",
|
||||
"messageFoodNotFound": ":food not found in user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
|
||||
"messageBought": "Bought <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipped.",
|
||||
"messageUnEquipped": "<%= itemText %> unequipped.",
|
||||
"messageMissingEggPotion": "You're missing either that egg or that potion",
|
||||
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "You've found <%= dropText %>!",
|
||||
"messageDropEgg": "You've found a <%= dropText %> Egg!",
|
||||
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
|
||||
"messageDropQuest": "You've found a quest!",
|
||||
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
|
||||
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
|
||||
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
|
||||
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
|
||||
"messageInsufficientGems": "Not enough gems!",
|
||||
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
|
||||
"messageAuthEmailTaken": "Email already taken",
|
||||
"messageAuthNoUserFound": "No user found.",
|
||||
"messageAuthMustBeLoggedIn": "You must be logged in.",
|
||||
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
|
||||
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
|
||||
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
|
||||
"messageUserOperationNotFound": "<%= operation %> operation not found",
|
||||
"messageNotificationNotFound": "Notification not found.",
|
||||
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Quests",
|
||||
"quest": "quest",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "Your Quests",
|
||||
"questsForSale": "Quests for Sale",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Completed!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "You've Received",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "Quest Invitation",
|
||||
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Ask Later",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "Buy Quest",
|
||||
"accepted": "Accepted",
|
||||
"declined": "Declined",
|
||||
"rejected": "Rejected",
|
||||
"pending": "Pending",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "Begin",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Rage",
|
||||
"collect": "Collect",
|
||||
"collected": "Collected",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "Items to Collect",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "Abort",
|
||||
"leaveQuest": "Leave Quest",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "Quest Owner",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "Quest Scrolls",
|
||||
"noScrolls": "You don't have any quest scrolls.",
|
||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||
"scrollsText2": "create an empty party",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "Completed the following quests",
|
||||
"mustComplete": "You must first complete <%= quest %>.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "START A QUEST",
|
||||
"startQuest": "Start Quest",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "Get more quests",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Jou <%= itemText %> het gebreek.",
|
||||
"messageTaskNotFound": "Taak nie gevind nie.",
|
||||
"messageDuplicateTaskID": "'n Taak met daardie ID bestaan reeds.",
|
||||
"messageTagNotFound": "Etiket nie gevind nie.",
|
||||
"messagePetNotFound": ":pet was nie gevind in user.items.pets nie",
|
||||
"messageFoodNotFound": ":food was nie gevind in user.items.food nie",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
|
||||
"messageBought": "Bought <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipped.",
|
||||
"messageUnEquipped": "<%= itemText %> unequipped.",
|
||||
"messageMissingEggPotion": "You're missing either that egg or that potion",
|
||||
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "You've found <%= dropText %>!",
|
||||
"messageDropEgg": "You've found a <%= dropText %> Egg!",
|
||||
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
|
||||
"messageDropQuest": "You've found a quest!",
|
||||
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
|
||||
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
|
||||
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
|
||||
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "Jy stoei met die Kast en ontvang Ondervinding. Vat so!",
|
||||
"messageInsufficientGems": "Nie genoeg edelstene nie!",
|
||||
"messageAuthPasswordMustMatch": ":password en :confirmPassword is nie dieselfde nie",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword is vereis",
|
||||
"messageAuthEmailTaken": "E-Pos reeds gevat",
|
||||
"messageAuthNoUserFound": "Geen verbruiker gevind nie.",
|
||||
"messageAuthMustBeLoggedIn": "Jy moet ingesluit wees.",
|
||||
"messageAuthMustIncludeTokens": "Jy moet 'n teiken en 'n vid(verbruiker id) in jou versoek insluit",
|
||||
"messageGroupAlreadyInParty": "Reeds in 'n party, probeer herlaai.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Net die groep leier kan die groep op dateer!",
|
||||
"messageGroupRequiresInvite": "Kan nie by 'n groep aansluit waarnatoe jy nie genooi is nie.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "pad `<%= operation %>` was nie gespaar nie, want dit is 'n beskermde pad.",
|
||||
"messageUserOperationNotFound": "<%= operation %> instruksie nie gevind nie",
|
||||
"messageNotificationNotFound": "Notification not found.",
|
||||
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Quests",
|
||||
"quest": "quest",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "Your Quests",
|
||||
"questsForSale": "Quests for Sale",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Completed!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "You've Received",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "Quest Invitation",
|
||||
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Ask Later",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "Buy Quest",
|
||||
"accepted": "Accepted",
|
||||
"declined": "Declined",
|
||||
"rejected": "Rejected",
|
||||
"pending": "Pending",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "Begin",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Rage",
|
||||
"collect": "Collect",
|
||||
"collected": "Collected",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "Items to Collect",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "Abort",
|
||||
"leaveQuest": "Leave Quest",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "Quest Owner",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "Quest Scrolls",
|
||||
"noScrolls": "You don't have any quest scrolls.",
|
||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||
"scrollsText2": "create an empty party",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "Completed the following quests",
|
||||
"mustComplete": "You must first complete <%= quest %>.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "START A QUEST",
|
||||
"startQuest": "Start Quest",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "Get more quests",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "انكسر <%= itemText %> الخاص بك.",
|
||||
"messageTaskNotFound": "لم توجد المهمة.",
|
||||
"messageDuplicateTaskID": "A task with that ID already exists.",
|
||||
"messageTagNotFound": "الوسم لم يوجد.",
|
||||
"messagePetNotFound": "لم يتم العثور على :pet في user.items.pets",
|
||||
"messageFoodNotFound": "لم يتم العثور على :food في user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> يحب <%= foodText %> كثيراً!",
|
||||
"messageDontEnjoyFood": "<%= egg %> يأكل <%= foodText %> ولكنه لا يبدو مستمتعاً.",
|
||||
"messageBought": "لقد اشتريت <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipped.",
|
||||
"messageUnEquipped": "<%= itemText %> unequipped.",
|
||||
"messageMissingEggPotion": "تفتقد أيًا من تلك البيضة أو جرعة الفقس.",
|
||||
"messageInvalidEggPotionCombo": "لا يمكنك فقس بيض حيوانات التنقيب مع جرع فقس سحرية! جرب بيضة أخرى.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "لقد عثرت على <%= dropText %>!",
|
||||
"messageDropEgg": "لقد عثرت على بيضة <%= dropText %>!",
|
||||
"messageDropPotion": "لقد عثرت على جرعة فقس <%= dropText %>!",
|
||||
"messageDropQuest": "You've found a quest!",
|
||||
"messageDropMysteryItem": "لقد فتحت الصندوع وعثرت على <%= dropText %>!",
|
||||
"messageFoundQuest": "لقد عثرت على التنقيب \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "لقد اشتريت هذه المعدة في الماضي، ولكنك لا تملكها حاليًا. يمكنك شراؤها مرة أخرى في عمود المكافآت في صفحة المهام.",
|
||||
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
|
||||
"previousGearNotOwned": "أنت بحاجة إلى شراء معدة منخفضة المستوى قبل هذه.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
|
||||
"messageInsufficientGems": "Not enough gems!",
|
||||
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
|
||||
"messageAuthEmailTaken": "البريد الالكتروني مأخوذ",
|
||||
"messageAuthNoUserFound": "لم يتم العثور على المستخدم.",
|
||||
"messageAuthMustBeLoggedIn": "يجب أن تكون قد سجلت دخولك.",
|
||||
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
|
||||
"messageGroupAlreadyInParty": "بالفعل في فريق، جرّب إعادة التحميل.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
|
||||
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
|
||||
"messageUserOperationNotFound": "عملية <%= operation %> غير موجودة",
|
||||
"messageNotificationNotFound": "الإشعار غير موجود.",
|
||||
"messageNotAbleToBuyInBulk": "لا يمكن شراء هذا العنصر بكميات أكثر من ١.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "التناقيب",
|
||||
"quest": "تنقيب",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "مغامراتك",
|
||||
"questsForSale": "مغامرات للبيع",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "\t\nمنتهى!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "لقد استلمت",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "دعوة إلى مغامرة",
|
||||
"questInvitationInfo": "دعوة للمشاركة في المغامرة <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "اسألني فيما بعد",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "شراء التنقيب",
|
||||
"accepted": "مقبول",
|
||||
"declined": "Declined",
|
||||
"rejected": "مرفوض",
|
||||
"pending": "جار الانتظار",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "البدء",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "غضب",
|
||||
"collect": "اجمع",
|
||||
"collected": "جمع",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "أغراض للجمع",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "إلغاء",
|
||||
"leaveQuest": "اترك المغامرة",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "صاحب المغامرة",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "لفائف التنقيب",
|
||||
"noScrolls": "ليس لديك أية لفائف تنقيب.",
|
||||
"scrollsText1": "التناقيب تحتاج إلى فرق. إن كنت تريد أن تشارك في تنقيب لوحدك،",
|
||||
"scrollsText2": "فقم بإنشاء فريق فاضي",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "تم إكمال التناقيب التالية",
|
||||
"mustComplete": "يجب عليك أن تكمل <%= quest %> أولاً.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "يجب أن تكون في المستوى <%= level %> لتتمكن من شراء هذا التنقيب!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "غضب",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "إبدأ مغامرة",
|
||||
"startQuest": "إبدأ المغامرة",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "احصل على المزيد من المغامرت",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Your <%= itemText %> broke.",
|
||||
"messageTaskNotFound": "Task not found.",
|
||||
"messageDuplicateTaskID": "A task with that ID already exists.",
|
||||
"messageTagNotFound": "Tag not found.",
|
||||
"messagePetNotFound": ":pet not found in user.items.pets",
|
||||
"messageFoodNotFound": ":food not found in user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
|
||||
"messageBought": "Bought <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipped.",
|
||||
"messageUnEquipped": "<%= itemText %> unequipped.",
|
||||
"messageMissingEggPotion": "You're missing either that egg or that potion",
|
||||
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "You've found <%= dropText %>!",
|
||||
"messageDropEgg": "You've found a <%= dropText %> Egg!",
|
||||
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
|
||||
"messageDropQuest": "You've found a quest!",
|
||||
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
|
||||
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
|
||||
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
|
||||
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
|
||||
"messageInsufficientGems": "Not enough gems!",
|
||||
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
|
||||
"messageAuthEmailTaken": "Email already taken",
|
||||
"messageAuthNoUserFound": "No user found.",
|
||||
"messageAuthMustBeLoggedIn": "You must be logged in.",
|
||||
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
|
||||
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
|
||||
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
|
||||
"messageUserOperationNotFound": "<%= operation %> operation not found",
|
||||
"messageNotificationNotFound": "Notification not found.",
|
||||
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Quests",
|
||||
"quest": "quest",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "Your Quests",
|
||||
"questsForSale": "Quests for Sale",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Completed!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "You've Received",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "Quest Invitation",
|
||||
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Ask Later",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "Buy Quest",
|
||||
"accepted": "Accepted",
|
||||
"declined": "Declined",
|
||||
"rejected": "Rejected",
|
||||
"pending": "Pending",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "Begin",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Rage",
|
||||
"collect": "Collect",
|
||||
"collected": "Collected",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "Items to Collect",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "Abort",
|
||||
"leaveQuest": "Leave Quest",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "Quest Owner",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "Quest Scrolls",
|
||||
"noScrolls": "You don't have any quest scrolls.",
|
||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||
"scrollsText2": "create an empty party",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "Completed the following quests",
|
||||
"mustComplete": "You must first complete <%= quest %>.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "START A QUEST",
|
||||
"startQuest": "Start Quest",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "Get more quests",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Ваш предмет се счупи: <%= itemText %>.",
|
||||
"messageTaskNotFound": "Задачата не е намерена.",
|
||||
"messageDuplicateTaskID": "Вече съществува задача с този идентификатор.",
|
||||
"messageTagNotFound": "Етикетът не е намерен.",
|
||||
"messagePetNotFound": ":pet не е открит в user.items.pets",
|
||||
"messageFoodNotFound": ":food не е открита в user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> много хареса <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> изяде <%= foodText %> , но не му/ѝ хареса.",
|
||||
"messageBought": "Закупихте <%= itemText %>",
|
||||
"messageEquipped": " Екипирахте <%= itemText %>.",
|
||||
"messageUnEquipped": "Разекипирахте <%= itemText %>.",
|
||||
"messageMissingEggPotion": "Липсва Ви яйцето или отварата",
|
||||
"messageInvalidEggPotionCombo": "Не можете да излюпите яйце на любимец от мисия с магическа излюпваща отвара! Опитайте с друго яйце.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "Намерихте <%= dropText %>!",
|
||||
"messageDropEgg": "Намерихте яйце на <%= dropText %>!",
|
||||
"messageDropPotion": "Намерихте излюпваща отвара с(ъс) <%= dropText %>!",
|
||||
"messageDropQuest": "Намерихте мисия!",
|
||||
"messageDropMysteryItem": "Отваряте кутията и намирате <%= dropText %>!",
|
||||
"messageFoundQuest": "Намерихте мисията „<%= questText %>“!",
|
||||
"messageAlreadyPurchasedGear": "Вие сте купували тази екипировка в миналото, но в момента не я притежавате. Можете да я купите отново от колоната с награди на страницата със задачи.",
|
||||
"messageAlreadyOwnGear": "Вече притежавате този предмет. Можете да го екипирате като отидете на страницата с екипировката.",
|
||||
"previousGearNotOwned": "Трябва да закупите екипировка от по-ниско ниво преди тази.",
|
||||
"messageHealthAlreadyMax": "Здравето Ви вече е пълно.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> Тършувате из гардероба и намирате <%= dropText %>. Какво ли прави това там?",
|
||||
"armoireExp": "Сборвате се с гардероба и получавате опит. Така му се пада!",
|
||||
"messageInsufficientGems": "Нямате достатъчно диаманти!",
|
||||
"messageAuthPasswordMustMatch": ":password и :confirmPassword не съвпадат",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password и :confirmPassword са задължителни",
|
||||
"messageAuthEmailTaken": "Е-пощата вече се използва",
|
||||
"messageAuthNoUserFound": "Потребителят не е намерен.",
|
||||
"messageAuthMustBeLoggedIn": "Трябва да сте влезли в системата.",
|
||||
"messageAuthMustIncludeTokens": "Трябва да включите жетон и потребителски идентификатор в заявката си",
|
||||
"messageGroupAlreadyInParty": "Вече сте в група, опитайте да опресните.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Само водачът на групата може да я актуализира!",
|
||||
"messageGroupRequiresInvite": "Не можете да се присъедините към група, за която не сте получили покана.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Опа! Изглежда публикувате твърде много съобщения. Моля, изчакайте малко и опитайте отново. Чатът в кръчмата може да показва най-много 200 съобщения, така че съветваме потребителите да публикуват по-дълги и добре обмислени съобщения, както и да обединяват отговорите си. Скоро ще можете да пишете отново! :)",
|
||||
"messageCannotLeaveWhileQuesting": "Не можете да приемете тази покана за присъединяване в група, докато изпълнявате мисия. Ако искате да се присъедините към тази група, трябва първо да прекратите мисията си – можете да направите това от екрана за групата. Ще си получите обратно свитъка с мисията.",
|
||||
"messageUserOperationProtected": "Пътят `<%= operation %>` не беше запазен, тъй като е защитен път.",
|
||||
"messageUserOperationNotFound": "Операцията „<%= operation %>“ не е намерена",
|
||||
"messageNotificationNotFound": "Известието не е намерено.",
|
||||
"messageNotAbleToBuyInBulk": "Не може да се закупи повече от един брой от този предмет.",
|
||||
"notificationsRequired": "Идентификаторите на известията са задължителни.",
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"noActivePet": "Няма текущ Любимец",
|
||||
"petsFound": "Намерени Любимци",
|
||||
"magicPets": "Любимци от магически отвари",
|
||||
"rarePets": "Редки Любимци",
|
||||
"questPets": "Любимци от мисии",
|
||||
"mounts": "Превози",
|
||||
"activeMount": "Текущ Превоз",
|
||||
@@ -13,7 +12,6 @@
|
||||
"mountsTamed": "Опитомени Превози",
|
||||
"questMounts": "Превози от мисии",
|
||||
"magicMounts": "Превози от магически отвари",
|
||||
"rareMounts": "Редки Превози",
|
||||
"etherealLion": "Етерен лъв",
|
||||
"veteranWolf": "Вълк ветеран",
|
||||
"veteranTiger": "Тигър ветеран",
|
||||
@@ -32,18 +30,13 @@
|
||||
"hopefulHippogriffMount": "Обнадежден хипогриф",
|
||||
"royalPurpleJackalope": "Царствено лилав рогат заек",
|
||||
"invisibleAether": "Невидим етер",
|
||||
"rarePetPop1": "Щракнете златната лапа, за да научите как може да получите този рядък любимец чрез принос към Хабитика!",
|
||||
"rarePetPop2": "Как да получите този любимец!",
|
||||
"potion": "Отвара с(ъс) <%= potionType %>",
|
||||
"egg": "Яйце на <%= eggType %>",
|
||||
"eggs": "Яйца",
|
||||
"eggSingular": "яйце",
|
||||
"noEggs": "Вие нямате никакви яйца.",
|
||||
"hatchingPotions": "Излюпващи отвари",
|
||||
"magicHatchingPotions": "Магически излюпващи отвари",
|
||||
"hatchingPotion": "излюпваща отвара",
|
||||
"noHatchingPotions": "Вие нямате никакви излюпващи отвари.",
|
||||
"inventoryText": "Щракнете яйце, за да видите приложимите за него отвари, осветени в зелено, а след това изберете някоя от осветените отвари, за да излюпите любимеца си. Ако няма осветени отвари, щракнете яйцето отново, за да премахнете избора и щракнете някоя отвара, за да видите върху кои яйца може да се използва. Можете също да продадете ненужните яйца и отвари на Александър Търговеца.",
|
||||
"haveHatchablePet": "Имате излюпваща отвара с(ъс) <%= potion %> и яйце на <%= egg %>, с които можете да излюпите този любимец! <b>Натиснете</b> за да го излюпите!",
|
||||
"quickInventory": "Бърз инвентар",
|
||||
"foodText": "храна",
|
||||
@@ -55,41 +48,28 @@
|
||||
"dropsExplanationEggs": "Използвайте диамантите, за да получавате яйца по-бързо, ако не искате да чакате да Ви се паднат яйца по нормалния начин, или да повтаряте мисиите, за да получите яйца от мисии. <a href=\"http://habitica.fandom.com/wiki/Drops\">Научете повече за падането на предмети.</a>",
|
||||
"premiumPotionNoDropExplanation": "Магическите излюпващи отвари не могат да бъдат използвани за яйца, придобити от мисии. Единственият начин да получите магическа излюпваща отвара, е като я закупите по-долу; тя няма никога да Ви се падне.",
|
||||
"beastMasterProgress": "Напредък за „Господар на зверовете“",
|
||||
"stableBeastMasterProgress": "Напредък за „Господар на зверовете“: намерени любимци: <%= number %>",
|
||||
"beastAchievement": "Спечелихте постижението „Господар на зверовете“ защото събрахте всички любимци!",
|
||||
"beastMasterName": "Господар на зверовете",
|
||||
"beastMasterText": "Открил/а всички 90 любимци (това е изключително трудно; поздравете този потребител!)",
|
||||
"beastMasterText2": " и освободил(а) любимците си общо <%= count %> път(и)",
|
||||
"mountMasterProgress": "Напредък за „Господар на превозите“",
|
||||
"stableMountMasterProgress": "Напредък за „Господар на превозите“: опитомени превози: <%= number %>",
|
||||
"mountAchievement": "Спечелихте постижението „Господар на превозите“, за това, че опитомихте всички превози!",
|
||||
"mountMasterName": "Господар на превозите",
|
||||
"mountMasterText": "Опитомил(а) всички 90 превоза (още по-трудно; поздравете този потребител!)",
|
||||
"mountMasterText2": " и освободил(а) всичките си 90 превоза общо <%= count %> път(и)",
|
||||
"beastMountMasterName": "Господар на зверовете и Господар на превозите",
|
||||
"triadBingoName": "Тройно бинго",
|
||||
"triadBingoText": "Намерил/а всички 90 любимци, всички 90 превоза и всички 90 любимци ОТНОВО (КАК СТАВА ТОВА!)",
|
||||
"triadBingoText2": " и освободил(а) пълната си конюшня общо <%= count %> път(и)",
|
||||
"triadBingoAchievement": "Спечелихте постижението „Тройно бинго“ за това, че намерихте всички любимци, опитомихте всички превози и намерихте всички любимци отново!",
|
||||
"dropsEnabled": "Падането на предмети е включено!",
|
||||
"itemDrop": "Намерихте предмет!",
|
||||
"firstDrop": "Отключихте системата за падане на предмети! Сега като изпълните задача, има малък шанс да Ви се падне някакъв предмет, включително яйца, отвари и храна! Току-що намерихте <strong>яйце на <%= eggText %></strong>! <%= eggNotes %>",
|
||||
"useGems": "Ако сте харесали животно, но не можете да чакате повече, за да Ви се падне, може да използвате диаманти, за да го купите в <strong>Инвентар > Пазар</strong>!",
|
||||
"hatchAPot": "Искате ли да излюпите <%= egg %> с <%= potion %>?",
|
||||
"hatchedPet": "Вие излюпихте <%= egg %> с <%= potion %>!",
|
||||
"hatchedPetGeneric": "Излюпихте нов любимец!",
|
||||
"hatchedPetHowToUse": "Посетете [конюшнята](<%= stableUrl %>), за да нахраните и екипирате новия си любимец!",
|
||||
"displayNow": "Показване сега",
|
||||
"displayLater": "Показване по-късно",
|
||||
"petNotOwned": "Не притежавате този любимец.",
|
||||
"mountNotOwned": "Не притежавате този прево.",
|
||||
"earnedCompanion": "Благодарение на продуктивността си се сдобихте с нов спътник. Хранете го, за да порасне!",
|
||||
"feedPet": "Искате ли да дадете <%= text %> на <%= name %>?",
|
||||
"useSaddle": "Искате ли да оседлаете <%= pet %>?",
|
||||
"raisedPet": "Вие отгледахте <%= pet %>!",
|
||||
"earnedSteed": "Изпълнявайки задачите си, Вие спечелихте верен жребец!",
|
||||
"rideNow": "Яздене сега",
|
||||
"rideLater": "Яздене по-късно",
|
||||
"petName": "<%= egg(locale) %> с(ъс) <%= potion(locale) %>",
|
||||
"mountName": "<%= mount(locale) %> с(ъс) <%= potion(locale) %>",
|
||||
"keyToPets": "Ключ от зверилника за любимци",
|
||||
@@ -104,24 +84,9 @@
|
||||
"releaseMountsSuccess": "Стандартните превози бяха освободени!",
|
||||
"releaseBothConfirm": "Наистина ли искате да освободите стандартните си любимци и превози?",
|
||||
"releaseBothSuccess": "Стандартните любимци и превози бяха освободени!",
|
||||
"petKeyName": "Ключ от зверилника",
|
||||
"petKeyPop": "Нека любимците Ви бъдат свободни; пуснете ги, за да започнат свое собствено приключение и си дайте тръпката да станете отново Господар на зверовете!",
|
||||
"petKeyBegin": "Ключ от зверилника: Станете отново „<%= title %>“!",
|
||||
"petKeyInfo": "Липсва ли Ви тръпката от събирането на любимци? Сега може да ги освободите и паданията им отново да придобият смисъл!",
|
||||
"petKeyInfo2": "Използвайте ключа от зверилника, за да изчистите всички събрани любимци и превози, които не са се появили от мисия. (Любимците от мисии и редките любимци и превози няма да бъдат засегнати.)",
|
||||
"petKeyInfo3": "Съществуват три ключа от зверилника: освобождаване само на любимците (4 диаманта), освобождаване само на превозите (4 диаманта) или освобождаване на любимците и превозите (6 диаманта). Употребата на ключ Ви позволява да надградите постиженията „Господар на зверовете“ и „Господар на превозите“. Постижението „Тройно бинго“ може да бъде надградено само ако използвате ключа, който освобождава любимците и превозите, и съберете всичките 90 животни втори път. Покажете на света какъв колекционер сте! Избирайте внимателно, защото ако използвате ключ и отворите зверилника или конюшнята, няма да можете да си върнете животните, освен ако не ги съберете отново…",
|
||||
"petKeyInfo4": "Съществуват три ключа от зверилника: освобождаване само на любимците (4 диаманта), освобождаване само на превозите (4 диаманта) или освобождаване на любимците и превозите. Употребата на ключ Ви позволява да надградите постиженията „Господар на зверовете“ и „Господар на превозите“. Постижението „Тройно бинго“ може да бъде надградено само ако използвате ключа, който освобождава любимците и превозите, и съберете всичките 90 животни втори път. Покажете на света какъв колекционер сте! Избирайте внимателно, защото ако използвате ключ и отворите зверилника или конюшнята, няма да можете да си върнете животните, освен ако не ги съберете отново…",
|
||||
"petKeyPets": "Освобождаване на любимците",
|
||||
"petKeyMounts": "Освобождаване на превозите",
|
||||
"petKeyBoth": "Освобождаване и на двата вида",
|
||||
"confirmPetKey": "Наистина ли искате това?",
|
||||
"petKeyNeverMind": "Не още",
|
||||
"petsReleased": "Любимците бяха освободени.",
|
||||
"mountsAndPetsReleased": "Превозите и любимците бяха освободени",
|
||||
"mountsReleased": "Превозите бяха освободени",
|
||||
"gemsEach": "диаманта всеки",
|
||||
"foodWikiText": "Какво обича да яде любимецът ми?",
|
||||
"foodWikiUrl": "http://habitica.fandom.com/wiki/Food_Preferences",
|
||||
"welcomeStable": "Добре дошли в конюшнята!",
|
||||
"welcomeStableText": "Добре дошли в Конюшнята! Аз съм Мат, господарят на зверовете. Всеки път като изпълните задача, има шанс да получите Яйце или Излюпваща Отвара, които са ви нужни за да излюпвате Любимци. Когато излюпите ЛОседлан Звярюбимец, той ще се появи тук! Щракнете върху изображението на Любимец, за да го добавите към Героя си. Хранете любимците с храната, която намирате, и те ще се превърнат в силни Оседлани Любимци.",
|
||||
"petLikeToEat": "Какво обича да яде любимецът ми?",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Мисии",
|
||||
"quest": "мисия",
|
||||
"whereAreMyQuests": "Мисиите вече имат своя собствена страница! Можете да ги откриете в Инвентар -> Мисии.",
|
||||
"yourQuests": "Вашите мисии",
|
||||
"questsForSale": "Мисии за продан",
|
||||
"petQuests": "Мисии за любимци и превози",
|
||||
"unlockableQuests": "Мисии, които могат да бъдат отключени",
|
||||
"goldQuests": "Последователности от мисии на класовите повелители",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Завършена!",
|
||||
"rewardsAllParticipants": "Награди за всички участници в мисията",
|
||||
"rewardsQuestOwner": "Допълнителни награди за притежателя на мисията",
|
||||
"questOwnerReceived": "Притежателят на мисията получи още",
|
||||
"youWillReceive": "Вие ще получите",
|
||||
"questOwnerWillReceive": "Притежателят на мисията ще получи още",
|
||||
"youReceived": "Вие получихте",
|
||||
"dropQuestCongrats": "Поздравления за придобиването на този свитък с мисия! Можете да поканите групата си и да започнете мисията сега или да се върнете към нея по-късно от Инвентар > Мисии.",
|
||||
"questSend": "Ако щракнете върху „Поканване“, ще изпратите покани до всички членове на групата. Мисията започва, когато всички приемат или отхвърлят поканата си. Можете да видите състоянието на поканите в Общност -> Група.",
|
||||
"questSendBroken": "Ако щракнете върху „Поканване“, ще изпратите покани до всички членове на групата… Мисията започва, когато всички приемат или отхвърлят поканата си… Можете да видите състоянието на поканите в Общност -> Група…",
|
||||
"inviteParty": "Канене на групата за мисия",
|
||||
"questInvitation": "Покана за мисия: ",
|
||||
"questInvitationTitle": "Покана за мисия",
|
||||
"questInvitationInfo": "Покана за мисията „<%= quest %>“",
|
||||
"invitedToQuest": " Получихте покана за присъединяване в мисията <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Питайте ме по-късно",
|
||||
"questLater": "Отлагане на мисията",
|
||||
"buyQuest": "Купуване на мисията",
|
||||
"accepted": "Приета",
|
||||
"declined": "Отказана",
|
||||
"rejected": "Отказана",
|
||||
"pending": "В очакване",
|
||||
"questStart": "След като всички членове приемат или откажат, мисията започва. Само тези, които са приели, ще могат да участват в мисията и да получат плячка. Ако някои се бавят твърде много (неактивност?), притежателят на свитъка може да започне без тях като натисне „Започване“. Притежателят на свитъка също така може да прекрати мисията като натисне „Отказ“, при което ще си запази свитъка.",
|
||||
"questStartBroken": "След като всички членове приемат или откажат, мисията започва… Само тези, които са приели, ще могат да участват в мисията и да получат плячка… Ако някои се бавят твърде много (неактивност?), притежателят на свитъка може да започне без тях като натисне „Започване“… Притежателят на свитъка също така може да прекрати мисията като натисне „Отказ“, при което ще си запази свитъка…",
|
||||
"questCollection": "Намерени предмети от мисия: + <%= val %>",
|
||||
"questDamage": "Щети за главатаря: + <%= val %>",
|
||||
"begin": "Започване",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Ярост",
|
||||
"collect": "Събиране",
|
||||
"collected": "Събрани",
|
||||
"collectionItems": "<%= items %>: <%= number %>",
|
||||
"itemsToCollect": "Предмети за събиране",
|
||||
"bossDmg1": "Всяка завършена задача за изпълнение или ежедневна задача, както и всеки положителен навик наранява главатаря. Можете да го нараните повече с по-червените задачи или като използвате Зверско разбиване или Пламъчен взрив. Главатарят ще нанесе щети на всеки участник в мисията за всяка пропусната ежедневна задача (умножено по силата на главатаря), като допълнение към обикновените щети, така че поддържайте здравето на групата си като изпълнявате ежедневните си задачи! <strong>Всички щети, нанесени на или получени от главатаря, се прилагат веднъж на ден (наведнъж в края на деня).</strong>",
|
||||
"bossDmg2": "Само участниците ще се бият с главатаря и ще участват в разделянето на плячката от мисията.",
|
||||
"bossDmg1Broken": "Всяка завършена задача за изпълнение или ежедневна задача, както и всеки положителен навик наранява главатаря… Можете да го нараните повече с по-червените задачи или като използвате Зверско разбиване или Пламъчен взрив… Главатарят ще нанесе щети на всеки участник в мисията за всяка пропусната ежедневна задача (умножено по силата на главатаря), като допълнение към обикновените щети, така че поддържайте здравето на групата си като изпълнявате ежедневните си задачи… <strong>Всички щети, нанесени на или получени от главатаря, се прилагат веднъж на ден (наведнъж в края на деня)…</strong>",
|
||||
"bossDmg2Broken": "Само участниците ще се бият с главатаря и ще участват в разделянето на плячката от мисията…",
|
||||
"tavernBossInfo": "Завършвайте задачите си за изпълнение и ежедневните си задачи и отмятайте положителните си навици, за да нанасяте щети на световния главатар! Незавършените ежедневни задачи запълват лентата за яростта му. Когато тя се напълни, световният главатар ще нападне някой от компютърните персонажи. Световният главатар не нанася щети на отделни играчи или акаунти. Следят се само задачите на активните акаунти, които не си почиват в странноприемницата.",
|
||||
"tavernBossInfoBroken": "Завършвайте задачите си за изпълнение и ежедневните си задачи и отмятайте положителните си навици, за да нанасяте щети на световния главатар… Незавършените ежедневни задачи запълват лентата за неговия Изтощителен удар… Когато тя се напълни, световният главатар ще нападне някой от компютърните персонажи… Световният главатар не нанася щети на отделни играчи или акаунти… Следят се само задачите на активните акаунти, които не си почиват в странноприемницата…",
|
||||
"bossColl1": "За да събирате предмети, изпълнявайте положителните си задачи. Предметите от мисии се падат както обикновените. Можете да следите какви предмети са Ви се паднали от мисията като посочите иконката за напредъка ѝ.",
|
||||
"bossColl2": "Само участниците могат да събират предмети и да участват в разпределянето на плячката от мисията.",
|
||||
"bossColl1Broken": "За да събирате предмети, изпълнявайте положителните си задачи… Предметите от мисии се падат както обикновените. Можете да следите какви предмети са Ви се паднали от мисията като посочите иконката за напредъка ѝ…",
|
||||
"bossColl2Broken": "Само участниците могат да събират предмети и да участват в разпределянето на плячката от мисията…",
|
||||
"abort": "Прекратяване",
|
||||
"leaveQuest": "Напускане на мисията",
|
||||
"sureLeave": "Наистина ли искате да се откажете от текущата мисия? Ще загубите целия си напредък.",
|
||||
"questOwner": "Притежател на мисията",
|
||||
"questTaskDamage": "Чакащи щети за главатаря: + <%= damage %>",
|
||||
"questTaskCollection": "<%= items %> събрани предмета днес",
|
||||
"questOwnerNotInPendingQuest": "Притежателят на мисията я напусна и тя не може да започне. Препоръчително е и Вие да се откажете сега. Притежателят на мисията ще си запази свитъка ѝ.",
|
||||
"questOwnerNotInRunningQuest": "Притежателят на мисията я напусна. Вие също може да се откажете, ако искате. Ако продължите, Вие и всички останали участници ще получите наградите на мисията когато тя приключи.",
|
||||
"questOwnerNotInPendingQuestParty": "Притежателят на мисията напусна групата и не може да даде начало на мисията. Препоръчително е и Вие да се откажете сега. Свитъкът с мисията ще бъде върнат на притежателя си.",
|
||||
"questOwnerNotInRunningQuestParty": "Притежателят на мисията напусна групата. Вие също може да се откажете от мисията, ако искате. Ако продължите, Вие и всички останали участници ще получите наградите на мисията когато тя приключи.",
|
||||
"questParticipants": "Участници",
|
||||
"scrolls": "Свитъци с мисии",
|
||||
"noScrolls": "Вие нямате свитъци с мисии.",
|
||||
"scrollsText1": "Мисиите се изпълняват с група. Ако искате да започнете мисия самостоятелно,",
|
||||
"scrollsText2": "създайте си празна група",
|
||||
"scrollsPre": "Все още не сте отключили тази мисия!",
|
||||
"alreadyEarnedQuestLevel": "Вече сте придобили тази мисия при достигането на Ниво <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "Вече сте придобили тази мисия със завършването на <%= priorQuest %>.",
|
||||
"completedQuests": "Завършил(а) следните мисии",
|
||||
"mustComplete": "Трябва първо да завършите <%= quest %>.",
|
||||
"mustLevel": "Трябва да бъдете ниво <%= level %>, за да започнете тази мисия.",
|
||||
"mustLvlQuest": "Трябва да бъдете ниво <%= level %>, за да купите тази мисия!",
|
||||
"mustInviteFriend": "За да получите тази мисия, поканете приятел в група. Искате ли да поканите някого сега?",
|
||||
"unlockByQuesting": "За да отключите тази мисия, първо завършете <%= title %>.",
|
||||
"questConfirm": "Наистина ли искате това? Само <%= questmembers %> от всички <%= totalmembers %> членове на групата Ви са се присъединили в мисията! Мисиите започват автоматично, след като всичко играчи се присъединят или откажат поканата.",
|
||||
"sureCancel": "Наистина ли искате да прекратите мисията? Всички приети покани ще бъдат загубени. Притежателят на мисията ще си запази свитъка ѝ.",
|
||||
"sureAbort": "Наистина ли искате да прекратите мисията? Тя ще бъде прекратена за всекиго в групата, а напредъкът по нея ще бъде загубен. Свитъкът с мисията ще бъде върнат на притежателя си.",
|
||||
"doubleSureAbort": "Наистина ли искате това? Дано приятелите Ви не се ядосат!",
|
||||
"questWarning": "Ако към групата се присъединят нови играчи преди началото на мисията, те също ще получат покани. След като мисията започне, обаче, никой не може да се присъедини към нея.",
|
||||
"questWarningBroken": "Ако към групата се присъединят нови играчи преди началото на мисията, те също ще получат покани… След като мисията започне, обаче, никой не може да се присъедини към нея…",
|
||||
"bossRageTitle": "Ярост",
|
||||
"bossRageDescription": "Когато тази лента се напълни, главатарят ще отприщи специална атака!",
|
||||
"startAQuest": "ЗАПОЧНЕТЕ МИСИЯ",
|
||||
"startQuest": "Започнете мисия",
|
||||
"whichQuestStart": "Коя мисия искате да започнете?",
|
||||
"getMoreQuests": "Още мисии",
|
||||
"unlockedAQuest": "Вие отключихте мисия!",
|
||||
"leveledUpReceivedQuest": "Вие достигнахте <strong>ниво <%= level %></strong> и получихте свитък с мисия!",
|
||||
"questInvitationDoesNotExist": "Няма изпратени покани за мисията.",
|
||||
"questInviteNotFound": "Няма намерени покани за мисията.",
|
||||
"guildQuestsNotSupported": "Гилдиите не могат да бъдат канени в мисии.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Само водачът на групата или мисията може да я отмени.",
|
||||
"questNotPending": "Няма мисия за започване.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Само водачът на групата или мисията може да я започне насила",
|
||||
"createAccountReward": "Създаване на профил",
|
||||
"loginIncentiveQuest": "За да отключите тази мисия, се отчитайте в Хабитика <%= count %> различни дни!",
|
||||
"loginIncentiveQuestObtained": "Сдобихте се с тази мисия като се отчетохте в Хабитика <%= count %> различни дни!",
|
||||
"loginReward": "<%= count %> отчитания",
|
||||
"createAccountQuest": "Получихте тази мисия като се присъединихте към Хабитика! Ако Ваш приятел се присъедини, той или тя също ще я получат.",
|
||||
"questBundles": "Пакети мисии с отстъпка",
|
||||
"buyQuestBundle": "Купуване на пакет мисии",
|
||||
"noQuestToStart": "Не можете да намерите мисия, която да започнете? Погледнете в магазина за мисии или на пазара за нови попълнения!",
|
||||
"pendingDamage": "<%= damage %> чакащи щети",
|
||||
"pendingDamageLabel": "чакащи щети",
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Your <%= itemText %> broke.",
|
||||
"messageTaskNotFound": "Task not found.",
|
||||
"messageDuplicateTaskID": "A task with that ID already exists.",
|
||||
"messageTagNotFound": "Tag not found.",
|
||||
"messagePetNotFound": ":pet not found in user.items.pets",
|
||||
"messageFoodNotFound": ":food not found in user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
|
||||
"messageBought": "Bought <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipped.",
|
||||
"messageUnEquipped": "<%= itemText %> unequipped.",
|
||||
"messageMissingEggPotion": "You're missing either that egg or that potion",
|
||||
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "You've found <%= dropText %>!",
|
||||
"messageDropEgg": "You've found a <%= dropText %> Egg!",
|
||||
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
|
||||
"messageDropQuest": "You've found a quest!",
|
||||
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
|
||||
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
|
||||
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
|
||||
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
|
||||
"messageInsufficientGems": "Not enough gems!",
|
||||
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
|
||||
"messageAuthEmailTaken": "Email already taken",
|
||||
"messageAuthNoUserFound": "No user found.",
|
||||
"messageAuthMustBeLoggedIn": "You must be logged in.",
|
||||
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
|
||||
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
|
||||
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
|
||||
"messageUserOperationNotFound": "<%= operation %> operation not found",
|
||||
"messageNotificationNotFound": "Notification not found.",
|
||||
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"rarePets": "বিরল পশু",
|
||||
"petsFound": "পোষা প্রাণী পাওয়া গেছে",
|
||||
"pets": "পোষা প্রাণী",
|
||||
"stable": "গোয়াল"
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Quests",
|
||||
"quest": "quest",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "Your Quests",
|
||||
"questsForSale": "Quests for Sale",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Completed!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "You've Received",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "Quest Invitation",
|
||||
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Ask Later",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "Buy Quest",
|
||||
"accepted": "Accepted",
|
||||
"declined": "Declined",
|
||||
"rejected": "Rejected",
|
||||
"pending": "Pending",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "Begin",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Rage",
|
||||
"collect": "Collect",
|
||||
"collected": "Collected",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "Items to Collect",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "Abort",
|
||||
"leaveQuest": "Leave Quest",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "Quest Owner",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "Quest Scrolls",
|
||||
"noScrolls": "You don't have any quest scrolls.",
|
||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||
"scrollsText2": "create an empty party",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "Completed the following quests",
|
||||
"mustComplete": "You must first complete <%= quest %>.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "START A QUEST",
|
||||
"startQuest": "Start Quest",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "Get more quests",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Your <%= itemText %> broke.",
|
||||
"messageTaskNotFound": "Task not found.",
|
||||
"messageDuplicateTaskID": "A task with that ID already exists.",
|
||||
"messageTagNotFound": "Tag not found.",
|
||||
"messagePetNotFound": ":pet not found in user.items.pets",
|
||||
"messageFoodNotFound": ":food not found in user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
|
||||
"messageBought": "Bought <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipped.",
|
||||
"messageUnEquipped": "<%= itemText %> unequipped.",
|
||||
"messageMissingEggPotion": "You're missing either that egg or that potion",
|
||||
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "You've found <%= dropText %>!",
|
||||
"messageDropEgg": "You've found a <%= dropText %> Egg!",
|
||||
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
|
||||
"messageDropQuest": "You've found a quest!",
|
||||
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
|
||||
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
|
||||
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
|
||||
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
|
||||
"messageInsufficientGems": "Not enough gems!",
|
||||
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
|
||||
"messageAuthEmailTaken": "Email already taken",
|
||||
"messageAuthNoUserFound": "No user found.",
|
||||
"messageAuthMustBeLoggedIn": "You must be logged in.",
|
||||
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
|
||||
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
|
||||
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
|
||||
"messageUserOperationNotFound": "<%= operation %> operation not found",
|
||||
"messageNotificationNotFound": "Notification not found.",
|
||||
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Quests",
|
||||
"quest": "quest",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "Your Quests",
|
||||
"questsForSale": "Quests for Sale",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Completed!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "You've Received",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "Quest Invitation",
|
||||
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Ask Later",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "Buy Quest",
|
||||
"accepted": "Accepted",
|
||||
"declined": "Declined",
|
||||
"rejected": "Rejected",
|
||||
"pending": "Pending",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "Begin",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Rage",
|
||||
"collect": "Collect",
|
||||
"collected": "Collected",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "Items to Collect",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "Abort",
|
||||
"leaveQuest": "Leave Quest",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "Quest Owner",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items collected today",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "Quest Scrolls",
|
||||
"noScrolls": "You don't have any quest scrolls.",
|
||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||
"scrollsText2": "create an empty party",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "Completed the following quests",
|
||||
"mustComplete": "You must first complete <%= quest %>.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "START A QUEST",
|
||||
"startQuest": "Start Quest",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "Get more quests",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "El teu/la teva <%= itemText %> s'ha trencat.",
|
||||
"messageTaskNotFound": "Tasca no trobada",
|
||||
"messageDuplicateTaskID": "Ja existeix una tasca amb aquest nom.",
|
||||
"messageTagNotFound": "Etiqueta no trobada",
|
||||
"messagePetNotFound": ":mascota no trobada en user.items.pets",
|
||||
"messageFoodNotFound": ":menjar no trobat en user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
|
||||
"messageBought": "Comprat <%= itemText %>",
|
||||
"messageEquipped": " <%= itemText %> equipat.",
|
||||
"messageUnEquipped": "<%= itemText %> desequipat.",
|
||||
"messageMissingEggPotion": "No tens la poció o ou requerits.",
|
||||
"messageInvalidEggPotionCombo": "No pots eclosionar Ous de mascotes de missió amb Pocions Màgiques! Prova amb un altre ou.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "You've found <%= dropText %>!",
|
||||
"messageDropEgg": "You've found a <%= dropText %> Egg!",
|
||||
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
|
||||
"messageDropQuest": "Has trobat una missió!",
|
||||
"messageDropMysteryItem": "Obres la capsa i trobes <%= dropText %>!",
|
||||
"messageFoundQuest": "Has trobat la missió \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
|
||||
"messageAlreadyOwnGear": "Ja tens aquest objecte. Posat-el anant a la pàgina d'equipament.",
|
||||
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
|
||||
"messageHealthAlreadyMax": "You already have maximum health.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
|
||||
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
|
||||
"messageInsufficientGems": "No tens suficients gemmes!",
|
||||
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
|
||||
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
|
||||
"messageAuthEmailTaken": "Email ja utilitzat.",
|
||||
"messageAuthNoUserFound": "Usuari no trobat.",
|
||||
"messageAuthMustBeLoggedIn": "Has d'haver iniciat sessió.",
|
||||
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
|
||||
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
|
||||
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
|
||||
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
|
||||
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
|
||||
"messageUserOperationNotFound": "<%= operation %> operation not found",
|
||||
"messageNotificationNotFound": "Notification not found.",
|
||||
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
|
||||
"notificationsRequired": "Notification ids are required.",
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
"veteranTiger": "Tigre Veterà",
|
||||
"veteranWolf": "Llop Veterà",
|
||||
"etherealLion": "Lleó Eteri",
|
||||
"rareMounts": "Muntures Rares",
|
||||
"magicMounts": "Muntures de Pocions Màgiques",
|
||||
"questMounts": "Muntures de Missió",
|
||||
"mountsTamed": "Muntures Domades",
|
||||
@@ -23,7 +22,6 @@
|
||||
"mounts": "Muntures",
|
||||
"wackyPets": "Mascotes Sonades",
|
||||
"questPets": "Mascotes de Missió",
|
||||
"rarePets": "Mascotes Rares",
|
||||
"magicPets": "Mascotes de Pocions Màgiques",
|
||||
"petsFound": "Mascotes Trobades",
|
||||
"noActivePet": "Cap mascota activa",
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
"quests": "Missions",
|
||||
"quest": "Missió",
|
||||
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
|
||||
"yourQuests": "Your Quests",
|
||||
"questsForSale": "missions en venda",
|
||||
"petQuests": "Pet and Mount Quests",
|
||||
"unlockableQuests": "Unlockable Quests",
|
||||
"goldQuests": "Masterclasser Quest Lines",
|
||||
@@ -14,27 +11,16 @@
|
||||
"completed": "Completada!",
|
||||
"rewardsAllParticipants": "Rewards for all Quest Participants",
|
||||
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
|
||||
"questOwnerReceived": "The Quest Owner Has Also Received",
|
||||
"youWillReceive": "You Will Receive",
|
||||
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
|
||||
"youReceived": "Has rebut",
|
||||
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
|
||||
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
|
||||
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
|
||||
"inviteParty": "Invite Party to Quest",
|
||||
"questInvitation": "Quest Invitation:",
|
||||
"questInvitationTitle": "Quest Invitation",
|
||||
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
|
||||
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
|
||||
"askLater": "Pregunta més endavant",
|
||||
"questLater": "Quest Later",
|
||||
"buyQuest": "Compra la missió",
|
||||
"accepted": "Acceptada",
|
||||
"declined": "Declined",
|
||||
"rejected": "Rebutjada",
|
||||
"pending": "Pendent",
|
||||
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
|
||||
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
|
||||
"questCollection": "+ <%= val %> quest item(s) found",
|
||||
"questDamage": "+ <%= val %> damage to boss",
|
||||
"begin": "Començar",
|
||||
@@ -43,56 +29,20 @@
|
||||
"rage": "Rage",
|
||||
"collect": "Collect",
|
||||
"collected": "Collected",
|
||||
"collectionItems": "<%= number %> <%= items %>",
|
||||
"itemsToCollect": "Items to Collect",
|
||||
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
|
||||
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
|
||||
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
|
||||
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
|
||||
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
|
||||
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
|
||||
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
|
||||
"bossColl2": "Only participants can collect items and share in the quest loot.",
|
||||
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
|
||||
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
|
||||
"abort": "Avortar",
|
||||
"leaveQuest": "Leave Quest",
|
||||
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
|
||||
"questOwner": "Quest Owner",
|
||||
"questTaskDamage": "+ <%= damage %> pending damage to boss",
|
||||
"questTaskCollection": "<%= items %> items recol·lectats avui",
|
||||
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
|
||||
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
|
||||
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
|
||||
"questParticipants": "Participants",
|
||||
"scrolls": "Quest Scrolls",
|
||||
"noScrolls": "You don't have any quest scrolls.",
|
||||
"scrollsText1": "Quests require parties. If you want to quest solo,",
|
||||
"scrollsText2": "crea un grup buit",
|
||||
"scrollsPre": "You haven't unlocked this quest yet!",
|
||||
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
|
||||
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
|
||||
"completedQuests": "Completed the following quests",
|
||||
"mustComplete": "You must first complete <%= quest %>.",
|
||||
"mustLevel": "You must be level <%= level %> to begin this quest.",
|
||||
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
|
||||
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
|
||||
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
|
||||
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
|
||||
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
|
||||
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
|
||||
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
|
||||
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
|
||||
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
|
||||
"bossRageTitle": "Rage",
|
||||
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
|
||||
"startAQuest": "START A QUEST",
|
||||
"startQuest": "Start Quest",
|
||||
"whichQuestStart": "Which quest do you want to start?",
|
||||
"getMoreQuests": "Get more quests",
|
||||
"unlockedAQuest": "You unlocked a quest!",
|
||||
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
|
||||
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
|
||||
"questInviteNotFound": "No quest invitation found.",
|
||||
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
|
||||
@@ -113,13 +63,9 @@
|
||||
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
|
||||
"questNotPending": "There is no quest to start.",
|
||||
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
|
||||
"createAccountReward": "Create Account",
|
||||
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
|
||||
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
|
||||
"loginReward": "<%= count %> Check-ins",
|
||||
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
|
||||
"questBundles": "Discounted Quest Bundles",
|
||||
"buyQuestBundle": "Buy Quest Bundle",
|
||||
"noQuestToStart": "Can’t find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
|
||||
"pendingDamage": "<%= damage %> pending damage",
|
||||
"pendingDamageLabel": "pending damage",
|
||||
@@ -127,4 +73,4 @@
|
||||
"rageAttack": "Rage Attack:",
|
||||
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
|
||||
"rageStrikes": "Rage Strikes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"messageLostItem": "Něco se rozbilo. Asi <%= itemText %>.",
|
||||
"messageTaskNotFound": "Úkol nenalezen.",
|
||||
"messageDuplicateTaskID": "Úkol s tímhle názvem už existuje.",
|
||||
"messageTagNotFound": "Štítek nenalezen.",
|
||||
"messagePetNotFound": ":pet nebyl nalezen v user.items.pets",
|
||||
"messageFoodNotFound": ":food nebylo nalezeno v user.items.food",
|
||||
@@ -12,7 +11,6 @@
|
||||
"messageLikesFood": "<%= egg %>má opravdu rád <%= foodText %>!",
|
||||
"messageDontEnjoyFood": "<%= egg %>snědl <%= foodText %>, ale nevypadá, že by mu to chutnalo.",
|
||||
"messageBought": "<%= itemText %>, koupeno",
|
||||
"messageEquipped": " <%= itemText %> - nasazeno.",
|
||||
"messageUnEquipped": "<%= itemText %> byl odebrán.",
|
||||
"messageMissingEggPotion": "Chybí ti buď to vejce nebo ten lektvar",
|
||||
"messageInvalidEggPotionCombo": "Nemůžeš vylíhnout vejce mazlíčků z výprav pomocí kouzelných líhnoucích lektvarů! Zkus jiné vejce.",
|
||||
@@ -24,10 +22,7 @@
|
||||
"messageDropFood": "Našel jsi <%= dropText %>!",
|
||||
"messageDropEgg": "Našel jsi vajíčko, ze kterého se vylíhne <%= dropText %>!",
|
||||
"messageDropPotion": "Našel jsi <%= dropText %> líhnoucí lektvar!",
|
||||
"messageDropQuest": "Našel jsi Výpravu!",
|
||||
"messageDropMysteryItem": "Copak se to skrývá v té krabici? No vida, je to <%= dropText %>!",
|
||||
"messageFoundQuest": "Našel jsi výpravu \"<%= questText %>\"!",
|
||||
"messageAlreadyPurchasedGear": "Tohle vybavení jsi si koupil už v minulosti, ale momentálně ho nevlastníš. Můžeš si ho koupit znovu ve sloupečku odměnu na stránce s úkoly.",
|
||||
"messageAlreadyOwnGear": "Tento předmět už máš. Vybav se jím na stránce s Vybavením.",
|
||||
"previousGearNotOwned": "Potřebuješ koupit výbavu nižší úrovně, než pořídíš tuto.",
|
||||
"messageHealthAlreadyMax": "Už teď máš plné zdraví.",
|
||||
@@ -36,12 +31,6 @@
|
||||
"armoireFood": "<%= image %> Prohledáváš Zbrojnici a nacházíš <%= dropText %>. Co to tu dělá?",
|
||||
"armoireExp": "Zápasíš s Almarou a získáváš zkušenost. To jsi jí to nandal!",
|
||||
"messageInsufficientGems": "Nedostatek drahokamů!",
|
||||
"messageAuthPasswordMustMatch": ":password a :confirmPassword se neshodují",
|
||||
"messageAuthCredentialsRequired": "Je vyžadováno :username, :email, :password, :confirmPassword",
|
||||
"messageAuthEmailTaken": "Email se již používá",
|
||||
"messageAuthNoUserFound": "Uživatel nenalezen.",
|
||||
"messageAuthMustBeLoggedIn": "Musíš být přihlášen.",
|
||||
"messageAuthMustIncludeTokens": "Ve svém požadavku musíš uvést token a uid (Uživatelské Id)",
|
||||
"messageGroupAlreadyInParty": "Již jsi ve skupině, zkus znovu načíst stránku.",
|
||||
"messageGroupOnlyLeaderCanUpdate": "Pouze velitel družiny může jí může upravovat!",
|
||||
"messageGroupRequiresInvite": "Nemůžeš se přidat do družiny, do které nejsi pozván.",
|
||||
@@ -55,7 +44,6 @@
|
||||
"messageGroupChatSpam": "Ups, vypadá to, že posíláš moc zpráv! Počkej prosím minutku a zkus to znovu. Chat v Krčmě může mít jenom 200 zpráv v jeden čas, takže Habitica podporuje posílání delších, více promyšlených zpráv a odpovědí. Nemůžeme se dočkat, až se s námi podělíš o tom, co máš na srdci. :)",
|
||||
"messageCannotLeaveWhileQuesting": "Nemůžeš přijmout tuto pozvánku do družiny, během účasti ve výpravě. Pokud se chceš připojit k této družině, musíš nejdříve ukončit aktuální výpravu, což můžeš učinit v záložce \"Družina\". Svitek výpravy ti bude vrácen zpět.",
|
||||
"messageUserOperationProtected": "cesta `<%= operation %>` nebyla uložena, protože je chráněná.",
|
||||
"messageUserOperationNotFound": "<%= operation %> operace nebyla nalezena",
|
||||
"messageNotificationNotFound": "Oznámení nenalezeno.",
|
||||
"messageNotAbleToBuyInBulk": "Tento předmět nelze nakoupit v množství větším, než je 1.",
|
||||
"notificationsRequired": "Id upozornění je potřeba.",
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
"noActivePet": "Bez aktivního mazlíčka",
|
||||
"petsFound": "nalezených mazlíčků",
|
||||
"magicPets": "Mazlíčci z magického líhnoucího lektvaru",
|
||||
"rarePets": "Vzácní mazlíčci",
|
||||
"questPets": "Mazlíčci z výprav",
|
||||
"mounts": "Stáj",
|
||||
"activeMount": "Osedlané zvíře",
|
||||
@@ -13,7 +12,6 @@
|
||||
"mountsTamed": "zkrocených zvířat",
|
||||
"questMounts": "Zkrocená zvířata z výprav",
|
||||
"magicMounts": "Zvířata z magického líhnoucího lektvaru",
|
||||
"rareMounts": "Vzácná zkrocená zvířata",
|
||||
"etherealLion": "Éterický lev",
|
||||
"veteranWolf": "Vlk veterán",
|
||||
"veteranTiger": "Tygr veterán",
|
||||
@@ -32,18 +30,13 @@
|
||||
"hopefulHippogriffMount": "Nadějný Gryf",
|
||||
"royalPurpleJackalope": "Královský Fialový Zajdalen",
|
||||
"invisibleAether": "Neviditelný Éter",
|
||||
"rarePetPop1": "Klikni na zlatou packu pro více informací o tom, jak získat toto vzácné zvíře za přispívání programu Habitica!",
|
||||
"rarePetPop2": "Jak získat toto zvíře!",
|
||||
"potion": "<%= potionType %> lektvar",
|
||||
"egg": "<%= eggType %> - vejce",
|
||||
"eggs": "Vejce",
|
||||
"eggSingular": "vejce",
|
||||
"noEggs": "Nemáš žádná vejce.",
|
||||
"hatchingPotions": "Líhnoucí lektvary",
|
||||
"magicHatchingPotions": "Magický líhnoucí lektvar",
|
||||
"hatchingPotion": "líhnoucí lektvar",
|
||||
"noHatchingPotions": "Nemáš žádné líhnoucí lektvary.",
|
||||
"inventoryText": "Po kliknutí na vejce se zeleně zvýrazní použitelné lektvary. Poté klikni na jeden z nich pro vylíhnutí mazlíčka. Pokud nejsou žádné lektvary zvýrazněny, klikni na vejce znovu pro zrušení jeho výběru a místo toho klikni nejprve na lektvar, aby se označila použitelná vejce. Také můžeš nechtěné nalezené předměty prodat obchodníku Alexanderovi.",
|
||||
"haveHatchablePet": "Máš <%= potion %> líhnoucí lektvar a <%= egg %> vajíčko k vylíhnutí tohoto mazlíčka! <b>Klikni</b> pro vylíhnutí!",
|
||||
"quickInventory": "Rychlý Inventář",
|
||||
"foodText": "jídlo",
|
||||
@@ -55,41 +48,28 @@
|
||||
"dropsExplanationEggs": "Použij Drahokamy, aby jsi získal vajíčka rychleji, jestli se ti nechce čekat než je dostaneš nebo se ti nechce opakovat výpravy aby jsi získal vejce z výprav. <a href=\"http://habitica.fandom.com/wiki/Drops\">Nauč se více o systému nálezů</a>",
|
||||
"premiumPotionNoDropExplanation": "Magické líhnoucí lektvary nemohou být použity na vejce z Výprav. Můžeš si je pouze koupit, nenajdeš je.",
|
||||
"beastMasterProgress": "Pokrok Pána šelem",
|
||||
"stableBeastMasterProgress": "Pokrok Pána šelem: nalezl <%= number %> mazlíčků",
|
||||
"beastAchievement": "Získal jsi ocenění \"Pán šelem\" za získání všech mazlíčků!",
|
||||
"beastMasterName": "Pán šelem",
|
||||
"beastMasterText": "Nalezl všech 90 mazlíčků ( šíleně obtížné, zaslouží si uznání!)",
|
||||
"beastMasterText2": " a vypustil své mazlíčky celkem <%= count %>krát",
|
||||
"mountMasterProgress": "Pokrok Pána zvířat",
|
||||
"stableMountMasterProgress": "Pokrok krotitele zvířat: zkroceno <%= number %> zvířat",
|
||||
"mountAchievement": "Získal jsi ocenění \"Pán zvířat\" za získán všech zkrocených zvířat!",
|
||||
"mountMasterName": "Pán zvířat",
|
||||
"mountMasterText": "Zkrotil všech 90 zvířátek ( šíleně obtížné, zaslouží si uznání!)",
|
||||
"mountMasterText2": " a vypustil všech svých 90 zvířat celkem <%= count %>krát",
|
||||
"beastMountMasterName": "Pán šelem a Pán zvířat",
|
||||
"triadBingoName": "Bingo trojice",
|
||||
"triadBingoText": "Našel všech 90 mazlíčků, zkrotil všech 90 zkrocených zvířat, a našel všech 90 mazlíčků ZNOVU (JAK JSI TO UDĚLAL!)",
|
||||
"triadBingoText2": " a vypustil plnou stáj celkem <%= count %>krát",
|
||||
"triadBingoAchievement": "Získal jsi ocenění \"Bingo trojice\" za nalezení všech mazlíčků, zkrocení všech zvířat, a znovunalezení všech mazlíčku ještě jednou!",
|
||||
"dropsEnabled": "Nalézání přemětů povoleno!",
|
||||
"itemDrop": "Nalezen předmět!",
|
||||
"firstDrop": "Odemknuto nalézání předmětů! Od teď máš malou šanci nalézt předmět při dokončení úkolů, včetně vajec, lektvarů a jídla! Právě nalezeno <strong> vejce zvířátka <%= eggText %></strong>! <%= eggNotes %>",
|
||||
"useGems": "Pokud ti padlo oko na zvířátko a nemůžeš se dočkat až ti padne, použij Drahokamy v <strong> Inventář > Trh </strong> a kup si ho!",
|
||||
"hatchAPot": "Chceš vylíhnout nového <%= potion %><%= egg %>?",
|
||||
"hatchedPet": "Vylíhnul jsi nového <%= potion %><%= egg %>!",
|
||||
"hatchedPetGeneric": "Vylíhl se ti nový mazlíček!",
|
||||
"hatchedPetHowToUse": "Navštiv [stáje](<%= stableUrl %>), abys mohl svého nového mazlíčka nakrmit a vybavit!",
|
||||
"displayNow": "Zobrazit hned",
|
||||
"displayLater": "Zobrazit později",
|
||||
"petNotOwned": "Nevlastníte tohoto mazlíčka.",
|
||||
"mountNotOwned": "Nevlastníš toto jezdecké zvíře.",
|
||||
"earnedCompanion": "Za svou pracovitost sis vysloužil nového kamaráda. Nakrm ho, aby vyrostl!",
|
||||
"feedPet": "Dát <%= text %> svému <%= name %>?",
|
||||
"useSaddle": "Koho osedláme? Bude to <%= pet %>?",
|
||||
"raisedPet": "Vychoval jsi svého <%= pet %>!",
|
||||
"earnedSteed": "Za splnění úkolů sis vysloužil věrné zvíře k ježdění!",
|
||||
"rideNow": "Osedlat hned",
|
||||
"rideLater": "Osedlat později",
|
||||
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
|
||||
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
|
||||
"keyToPets": "Klíč ke Kotcům Mazlíčků",
|
||||
@@ -104,24 +84,9 @@
|
||||
"releaseMountsSuccess": "Tvá běžná Zvířata byla vypuštěna!",
|
||||
"releaseBothConfirm": "Jsi si jistý, že chceš vypustit tvoje běžné Mazlíčky a Zvířata?",
|
||||
"releaseBothSuccess": "Tvoji běžní Mazlíčci a Zvířata byli vypuštěni!",
|
||||
"petKeyName": "Klíč ke kotcům",
|
||||
"petKeyPop": "Nech své mazlíčky pobíhat na svobodě, vypusť je aby mohli začít své vlastní dobrodružství a zažij znovu vzrušení a staň se znovu pánem šelem!",
|
||||
"petKeyBegin": "Klíč ke kotcům: Zažij znovu vzrušení z titulu <%= title %>!",
|
||||
"petKeyInfo": "Chybí ti to vzrušení z nalézání mazlíčků? Nyní je můžeš vypustit a každý nový objev bude zase vzrušující!",
|
||||
"petKeyInfo2": "Použij Klíč ke kotcům a resetuj tak všechny mazlíčky a/nebo zkrocená zvířata (kromě těch z výprav a těch vzácných, ta nebudou ovlivněna.)",
|
||||
"petKeyInfo3": "Klíče ke kotcům jsou tři: Vypusť pouze mazlíčky (4 drahokamy), Vypusť pouze zkrocená zvířata (4 drahokamy), nebo Vypusť mazlíčky a zkrocená zvířata (6 drahokamů). Použití Klíče ti umožní znovuzískávat ocenění Pán šelem a Pán zvířat. Ocenění Bingo trojice však znovu získáš pouze pokud použiješ klíč \"Vypusť mazlíčky a zkrocená zvířata\" a znovu najdeš všech 90 mazlíčků. Ukaž světu jaký jsi mistr v nalézání. Ale vybírej moudře, protože jakmile použiješ Klíč a otevřeš bránu ke stáji, nebudeš je moci získat zpět, dokud je všechny znovu neposbíráš....",
|
||||
"petKeyInfo4": "Klíče ke kotcům jsou tři: Vypusť pouze mazlíčky (4 drahokamy), Vypusť pouze zvířata (4 drahokamy), nebo Vypusť mazlíčky a zvířata. Použití Klíče ti umožní znovu získat ocenění Pána šelem a Pána zvířat. Ocenění Bingo Tří budeš moci získat znovu jen pokud vypustíš všechna zvířata a znovu jich všech 90 nasbíráš. Ukaž světu jaký jsi sběratel! Ale vybírej moudře, protože jakmile Klíč použiješ, už zvířata nedostaneš zpátky jinak, než opětovným posbíráním...",
|
||||
"petKeyPets": "Vypusťte mé mazlíčky",
|
||||
"petKeyMounts": "Vypusť má zkrocená zvířata",
|
||||
"petKeyBoth": "Vypusť oba",
|
||||
"confirmPetKey": "Jsi si jistý?",
|
||||
"petKeyNeverMind": "Ještě ne",
|
||||
"petsReleased": "Mazlíčci propuštěni.",
|
||||
"mountsAndPetsReleased": "Zvířata k osedlání a mazlíčci propuštěni",
|
||||
"mountsReleased": "Zvířata k osedlání propuštěna",
|
||||
"gemsEach": "drahokamů každý",
|
||||
"foodWikiText": "Co můj mazlíček rád jí?",
|
||||
"foodWikiUrl": "http://habitica.fandom.com/wiki/Food_Preferences",
|
||||
"welcomeStable": "Vítej ve Stájích!",
|
||||
"welcomeStableText": "Vítej ve stáji! Jsem Matt, pán zvířat. Pokaždé, když dokončíš úkol, můžeš nalézt vejce a lektvary, kterými z nich můžeš vylíhnout mazlíčky. Když se vylíhne mazlíček, objeví se tady! Klikni na obrázek mazlíčka, abys ho přidal ke svému avataru. Krm je jídlem, které najdeš a vyrostou ti v otužilá zvířata.",
|
||||
"petLikeToEat": "Co můj mazlíček rád jí?",
|
||||
|
||||