Compare commits
142 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
54ffe1d3b6 | ||
|
|
ff77455b00 | ||
|
|
22eaefb3b2 | ||
|
|
b9710c4180 | ||
|
|
919b30c237 | ||
|
|
9a51d200f7 | ||
|
|
170df77c3d | ||
|
|
043f34d619 | ||
|
|
0b20f8a980 | ||
|
|
7f208eb141 | ||
|
|
75a196dd3b | ||
|
|
701a6170a3 | ||
|
|
ee70ed6146 | ||
|
|
d45a6f260d | ||
|
|
de09e56f67 | ||
|
|
17b520de12 | ||
|
|
0655e2e0a0 | ||
|
|
bcf489f847 | ||
|
|
adc2207249 | ||
|
|
1c205a96fb | ||
|
|
8e2bbbd570 | ||
|
|
13d1f1b48b | ||
|
|
7c4faf8b7a | ||
|
|
82be621850 | ||
|
|
265fb7c5f6 | ||
|
|
29a278d0bc | ||
|
|
2fb9dfe909 | ||
|
|
8ca369f937 | ||
|
|
caa02141b8 | ||
|
|
a1cea3b584 | ||
|
|
1b260aee52 | ||
|
|
f2182428e5 | ||
|
|
996b8f67c5 | ||
|
|
b297b2a48a | ||
|
|
74eab5bba9 | ||
|
|
87504f4d76 | ||
|
|
cd11d4c179 | ||
|
|
e821fab4a3 | ||
|
|
bf014ad781 | ||
|
|
b1fc88d330 | ||
|
|
1e54a474b1 |
@@ -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',
|
||||
|
||||
137
package-lock.json
generated
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"version": "4.159.1",
|
||||
"version": "4.161.3",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@@ -1050,9 +1050,9 @@
|
||||
}
|
||||
},
|
||||
"@google-cloud/common": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.3.2.tgz",
|
||||
"integrity": "sha512-W7JRLBEJWYtZQQuGQX06U6GBOSLrSrlvZxv6kGNwJtFrusu6AVgZltQ9Pajuz9Dh9aSXy9aTnBcyxn2/O0EGUw==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-3.4.0.tgz",
|
||||
"integrity": "sha512-bVMQlK4aZEeopo2oJwDUJiBhPVjRRQHfFCCv9JowmKS3L//PBHNDJzC/LxJixGZEU3fh3YXkUwm67JZ5TBCCNQ==",
|
||||
"requires": {
|
||||
"@google-cloud/projectify": "^2.0.0",
|
||||
"@google-cloud/promisify": "^2.0.0",
|
||||
@@ -1071,14 +1071,14 @@
|
||||
"integrity": "sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ=="
|
||||
},
|
||||
"@google-cloud/promisify": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.2.tgz",
|
||||
"integrity": "sha512-EvuabjzzZ9E2+OaYf+7P9OAiiwbTxKYL0oGLnREQd+Su2NTQBpomkdlkBowFvyWsaV0d1sSGxrKpSNcrhPqbxg=="
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.3.tgz",
|
||||
"integrity": "sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw=="
|
||||
},
|
||||
"@google-cloud/trace-agent": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/trace-agent/-/trace-agent-5.1.0.tgz",
|
||||
"integrity": "sha512-OPtIXET63QI1ved7Dyxmrx6o1tNJ++aX+WPm0OfNtYFCn8BPzVMBw/ZCsRmwL6nL+jY1jJ0N9teUO7abCvwpfg==",
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@google-cloud/trace-agent/-/trace-agent-5.1.1.tgz",
|
||||
"integrity": "sha512-YTcK0RLN90pLCprg0XC8uV4oAVd79vsXhkcxmEVwiOOYjUDvSrAhb7y/0SY606zgfhJHmUTNb/fZSWEtZP/slQ==",
|
||||
"requires": {
|
||||
"@google-cloud/common": "^3.0.0",
|
||||
"@opencensus/propagation-stackdriver": "0.0.22",
|
||||
@@ -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"
|
||||
}
|
||||
@@ -6151,9 +6150,9 @@
|
||||
}
|
||||
},
|
||||
"gaxios": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.0.4.tgz",
|
||||
"integrity": "sha512-97NmFuMETFQh6gqPUxkqjxRMjmY8aRKRMphIkgO/b90AbCt5wAVuXsp8oWjIXlLN2pIK/fsXD8edcM7ULkFMLg==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.2.0.tgz",
|
||||
"integrity": "sha512-+6WPeVzPvOshftpxJwRi2Ozez80tn/hdtOUag7+gajDHRJvAblKxTFSSMPtr2hmnLy7p0mvYz0rMXLBl8pSO7Q==",
|
||||
"requires": {
|
||||
"abort-controller": "^3.0.0",
|
||||
"extend": "^3.0.2",
|
||||
@@ -6163,9 +6162,9 @@
|
||||
}
|
||||
},
|
||||
"gcp-metadata": {
|
||||
"version": "4.1.4",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.1.4.tgz",
|
||||
"integrity": "sha512-5J/GIH0yWt/56R3dNaNWPGQ/zXsZOddYECfJaqxFWgrZ9HC2Kvc5vl9upOgUUHKzURjAVf2N+f6tEJiojqXUuA==",
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.2.0.tgz",
|
||||
"integrity": "sha512-vQZD57cQkqIA6YPGXM/zc+PIZfNRFdukWGsGZ5+LcJzesi5xp6Gn7a02wRJi4eXPyArNMIYpPET4QMxGqtlk6Q==",
|
||||
"requires": {
|
||||
"gaxios": "^3.0.0",
|
||||
"json-bigint": "^1.0.0"
|
||||
@@ -6676,9 +6675,9 @@
|
||||
}
|
||||
},
|
||||
"google-auth-library": {
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.0.5.tgz",
|
||||
"integrity": "sha512-Wj31lfTm2yR4g3WfOOB1Am1tt478Xq9OvzTPQJi17tn/I9R5IcsxjANBsE93nYmxYxtwDedhOdIb8l3vSPG49Q==",
|
||||
"version": "6.0.6",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-6.0.6.tgz",
|
||||
"integrity": "sha512-fWYdRdg55HSJoRq9k568jJA1lrhg9i2xgfhVIMJbskUmbDpJGHsbv9l41DGhCDXM21F9Kn4kUwdysgxSYBYJUw==",
|
||||
"requires": {
|
||||
"arrify": "^2.0.0",
|
||||
"base64-js": "^1.3.0",
|
||||
@@ -6692,17 +6691,17 @@
|
||||
}
|
||||
},
|
||||
"google-p12-pem": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.2.tgz",
|
||||
"integrity": "sha512-tbjzndQvSIHGBLzHnhDs3cL4RBjLbLXc2pYvGH+imGVu5b4RMAttUTdnmW2UH0t11QeBTXZ7wlXPS7hrypO/tg==",
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.0.3.tgz",
|
||||
"integrity": "sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA==",
|
||||
"requires": {
|
||||
"node-forge": "^0.9.0"
|
||||
"node-forge": "^0.10.0"
|
||||
}
|
||||
},
|
||||
"got": {
|
||||
"version": "11.6.2",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-11.6.2.tgz",
|
||||
"integrity": "sha512-/21qgUePCeus29Jk7MEti8cgQUNXFSWfIevNIk4H7u1wmXNDrGPKPY6YsPY+o9CIT/a2DjCjRz0x1nM9FtS2/A==",
|
||||
"version": "11.7.0",
|
||||
"resolved": "https://registry.npmjs.org/got/-/got-11.7.0.tgz",
|
||||
"integrity": "sha512-7en2XwH2MEqOsrK0xaKhbWibBoZqy+f1RSUoIeF1BLcnf+pyQdDsljWMfmOh+QKJwuvDIiKx38GtPh5wFdGGjg==",
|
||||
"requires": {
|
||||
"@sindresorhus/is": "^3.1.1",
|
||||
"@szmarczak/http-timer": "^4.0.5",
|
||||
@@ -6766,9 +6765,9 @@
|
||||
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
|
||||
},
|
||||
"keyv": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.1.tgz",
|
||||
"integrity": "sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw==",
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
|
||||
"integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
|
||||
"requires": {
|
||||
"json-buffer": "3.0.1"
|
||||
}
|
||||
@@ -6816,9 +6815,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"gtoken": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.2.tgz",
|
||||
"integrity": "sha512-lull70rHCTvRTmAt+R/6W5bTtx4MjHku7AwJwK5fGqhOmygcZud0nrZcX+QUNfBJwCzqy7S5i1Bc4NYnr5PMMA==",
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.0.3.tgz",
|
||||
"integrity": "sha512-Nyd1wZCMRc2dj/mAD0LlfQLcAO06uKdpKJXvK85SGrF5+5+Bpfil9u/2aw35ltvEHjvl0h5FMKN5knEU+9JrOg==",
|
||||
"requires": {
|
||||
"gaxios": "^3.0.0",
|
||||
"google-p12-pem": "^3.0.0",
|
||||
@@ -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",
|
||||
@@ -9934,9 +9925,9 @@
|
||||
"integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
|
||||
},
|
||||
"node-forge": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
|
||||
"integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ=="
|
||||
"version": "0.10.0",
|
||||
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
|
||||
"integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
|
||||
},
|
||||
"node-gcm": {
|
||||
"version": "1.0.3",
|
||||
@@ -11737,12 +11728,11 @@
|
||||
"integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs="
|
||||
},
|
||||
"retry-request": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz",
|
||||
"integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==",
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.3.tgz",
|
||||
"integrity": "sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ==",
|
||||
"requires": {
|
||||
"debug": "^4.1.1",
|
||||
"through2": "^3.0.1"
|
||||
"debug": "^4.1.1"
|
||||
}
|
||||
},
|
||||
"reusify": {
|
||||
@@ -13113,15 +13103,6 @@
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||
},
|
||||
"through2": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
|
||||
"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "2 || 3"
|
||||
}
|
||||
},
|
||||
"through2-concurrent": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/through2-concurrent/-/through2-concurrent-2.0.0.tgz",
|
||||
@@ -13886,9 +13867,9 @@
|
||||
}
|
||||
},
|
||||
"validator": {
|
||||
"version": "13.1.1",
|
||||
"resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz",
|
||||
"integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw=="
|
||||
"version": "13.1.17",
|
||||
"resolved": "https://registry.npmjs.org/validator/-/validator-13.1.17.tgz",
|
||||
"integrity": "sha512-zL5QBoemJ3jYFb2/j38y7ljhwYGXVLUp8H6W1nVxadnAOvUOytec+L7BHh1oBQ82/TzWXHd+GSaxUWp4lROkLg=="
|
||||
},
|
||||
"value-or-function": {
|
||||
"version": "3.0.0",
|
||||
|
||||
12
package.json
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.159.1",
|
||||
"version": "4.161.3",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.11.6",
|
||||
"@babel/preset-env": "^7.11.5",
|
||||
"@babel/register": "^7.11.5",
|
||||
"@google-cloud/trace-agent": "^5.1.0",
|
||||
"@google-cloud/trace-agent": "^5.1.1",
|
||||
"@slack/client": "^4.12.0",
|
||||
"accepts": "^1.3.5",
|
||||
"amazon-payments": "^0.2.8",
|
||||
@@ -30,7 +30,7 @@
|
||||
"express-basic-auth": "^1.1.5",
|
||||
"express-validator": "^5.2.0",
|
||||
"glob": "^7.1.6",
|
||||
"got": "^11.6.2",
|
||||
"got": "^11.7.0",
|
||||
"gulp": "^4.0.0",
|
||||
"gulp-babel": "^8.0.0",
|
||||
"gulp-imagemin": "^7.1.0",
|
||||
@@ -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",
|
||||
@@ -71,7 +71,7 @@
|
||||
"universal-analytics": "^0.4.23",
|
||||
"useragent": "^2.1.9",
|
||||
"uuid": "^8.3.0",
|
||||
"validator": "^13.1.1",
|
||||
"validator": "^13.1.17",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"winston": "^3.3.3",
|
||||
"winston-loggly-bulk": "^3.1.1",
|
||||
|
||||
@@ -171,28 +171,32 @@ describe('highlightMentions', () => {
|
||||
it('github issue 12118, method crashes when square brackets are used', async () => {
|
||||
const text = '[test]';
|
||||
|
||||
let err;
|
||||
const result = await highlightMentions(text);
|
||||
|
||||
try {
|
||||
await highlightMentions(text);
|
||||
} catch (e) {
|
||||
err = e;
|
||||
}
|
||||
|
||||
expect(err).to.be.undefined;
|
||||
expect(result[0]).to.equal(text);
|
||||
});
|
||||
|
||||
it('github issue 12138, method crashes when regex chars are used in code block', async () => {
|
||||
const text = '`[test]`';
|
||||
|
||||
let err;
|
||||
const result = await highlightMentions(text);
|
||||
|
||||
try {
|
||||
await highlightMentions(text);
|
||||
} catch (e) {
|
||||
err = e;
|
||||
}
|
||||
expect(result[0]).to.equal(text);
|
||||
});
|
||||
|
||||
expect(err).to.be.undefined;
|
||||
it('github issue 12586, method crashes when empty link is used', async () => {
|
||||
const text = '[]()';
|
||||
|
||||
const result = await highlightMentions(text);
|
||||
|
||||
expect(result[0]).to.equal(text);
|
||||
});
|
||||
|
||||
it('github issue 12586, method crashes when link without title is used', async () => {
|
||||
const text = '[](www.google.com)';
|
||||
|
||||
const result = await highlightMentions(text);
|
||||
|
||||
expect(result[0]).to.equal(text);
|
||||
});
|
||||
});
|
||||
|
||||
44
test/api/unit/libs/xmlMarshaller.test.js
Normal file
@@ -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>`);
|
||||
});
|
||||
});
|
||||
152
website/client/package-lock.json
generated
@@ -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",
|
||||
@@ -7435,13 +7439,14 @@
|
||||
}
|
||||
},
|
||||
"asn1.js": {
|
||||
"version": "4.10.1",
|
||||
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
|
||||
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
|
||||
"version": "5.4.1",
|
||||
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
|
||||
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
|
||||
"requires": {
|
||||
"bn.js": "^4.0.0",
|
||||
"inherits": "^2.0.1",
|
||||
"minimalistic-assert": "^1.0.0"
|
||||
"minimalistic-assert": "^1.0.0",
|
||||
"safer-buffer": "^2.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"bn.js": {
|
||||
@@ -8192,14 +8197,14 @@
|
||||
"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.2",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
|
||||
"integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA=="
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz",
|
||||
"integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ=="
|
||||
},
|
||||
"body-parser": {
|
||||
"version": "1.19.0",
|
||||
@@ -8269,9 +8274,9 @@
|
||||
"integrity": "sha512-vlGn0bcySYl/iV+BGA544JkkZP5LB3jsmkeKLFQakCOwCM3AOk7VkldBz4jrzSe+Z0Ezn99NVXa1o45cQY4R6A=="
|
||||
},
|
||||
"bootstrap-vue": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.17.0.tgz",
|
||||
"integrity": "sha512-cYeoVTxAP0koMseCwSl4KQgcdm2M6COfn3F0UaecGkaWy6Vf5Jl+VjDctaR4SvkHZ693tHjW28s/icbsGtKRjQ==",
|
||||
"version": "2.17.3",
|
||||
"resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.17.3.tgz",
|
||||
"integrity": "sha512-upX5LktvsecbBsLnjwaSQoDCsYfneToOweOaERt+Cc/cT6P44zODzpxZa54HZEAbE5gSE5mJmDacUrs02qAR8g==",
|
||||
"requires": {
|
||||
"@nuxt/opencollective": "^0.3.0",
|
||||
"bootstrap": ">=4.5.2 <5.0.0",
|
||||
@@ -8488,15 +8493,15 @@
|
||||
}
|
||||
},
|
||||
"browserify-sign": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz",
|
||||
"integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==",
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
|
||||
"integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
|
||||
"requires": {
|
||||
"bn.js": "^5.1.1",
|
||||
"browserify-rsa": "^4.0.1",
|
||||
"create-hash": "^1.2.0",
|
||||
"create-hmac": "^1.1.7",
|
||||
"elliptic": "^6.5.2",
|
||||
"elliptic": "^6.5.3",
|
||||
"inherits": "^2.0.4",
|
||||
"parse-asn1": "^5.1.5",
|
||||
"readable-stream": "^3.6.0",
|
||||
@@ -9646,12 +9651,12 @@
|
||||
}
|
||||
},
|
||||
"create-ecdh": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
|
||||
"integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
|
||||
"integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
|
||||
"requires": {
|
||||
"bn.js": "^4.1.0",
|
||||
"elliptic": "^6.0.0"
|
||||
"elliptic": "^6.5.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"bn.js": {
|
||||
@@ -15241,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",
|
||||
@@ -16043,13 +16048,12 @@
|
||||
}
|
||||
},
|
||||
"parse-asn1": {
|
||||
"version": "5.1.5",
|
||||
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
|
||||
"integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
|
||||
"integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
|
||||
"requires": {
|
||||
"asn1.js": "^4.0.0",
|
||||
"asn1.js": "^5.2.0",
|
||||
"browserify-aes": "^1.0.0",
|
||||
"create-hash": "^1.1.0",
|
||||
"evp_bytestokey": "^1.0.0",
|
||||
"pbkdf2": "^3.0.3",
|
||||
"safe-buffer": "^5.1.1"
|
||||
@@ -18390,9 +18394,9 @@
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"sass": {
|
||||
"version": "1.26.10",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.26.10.tgz",
|
||||
"integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==",
|
||||
"version": "1.26.11",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.26.11.tgz",
|
||||
"integrity": "sha512-W1l/+vjGjIamsJ6OnTe0K37U2DBO/dgsv2Z4c89XQ8ZOO6l/VwkqwLSqoYzJeJs6CLuGSTRWc91GbQFL3lvrvw==",
|
||||
"requires": {
|
||||
"chokidar": ">=2.0.0 <4.0.0"
|
||||
}
|
||||
@@ -20870,9 +20874,9 @@
|
||||
}
|
||||
},
|
||||
"validator": {
|
||||
"version": "13.1.1",
|
||||
"resolved": "https://registry.npmjs.org/validator/-/validator-13.1.1.tgz",
|
||||
"integrity": "sha512-8GfPiwzzRoWTg7OV1zva1KvrSemuMkv07MA9TTl91hfhe+wKrsrgVN4H2QSFd/U/FhiU3iWPYVgvbsOGwhyFWw=="
|
||||
"version": "13.1.17",
|
||||
"resolved": "https://registry.npmjs.org/validator/-/validator-13.1.17.tgz",
|
||||
"integrity": "sha512-zL5QBoemJ3jYFb2/j38y7ljhwYGXVLUp8H6W1nVxadnAOvUOytec+L7BHh1oBQ82/TzWXHd+GSaxUWp4lROkLg=="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
@@ -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",
|
||||
@@ -21086,9 +21090,9 @@
|
||||
}
|
||||
},
|
||||
"chokidar": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
|
||||
"integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
|
||||
"integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"anymatch": "~3.1.1",
|
||||
@@ -21191,9 +21195,9 @@
|
||||
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="
|
||||
},
|
||||
"webpack": {
|
||||
"version": "4.44.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz",
|
||||
"integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==",
|
||||
"version": "4.44.2",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz",
|
||||
"integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==",
|
||||
"requires": {
|
||||
"@webassemblyjs/ast": "1.9.0",
|
||||
"@webassemblyjs/helper-module-context": "1.9.0",
|
||||
@@ -21233,21 +21237,29 @@
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
|
||||
"integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
|
||||
"requires": {
|
||||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
},
|
||||
"terser-webpack-plugin": {
|
||||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz",
|
||||
"integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==",
|
||||
"version": "1.4.5",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
|
||||
"integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
|
||||
"requires": {
|
||||
"cacache": "^12.0.2",
|
||||
"find-cache-dir": "^2.1.0",
|
||||
"is-wsl": "^1.1.0",
|
||||
"schema-utils": "^1.0.0",
|
||||
"serialize-javascript": "^3.1.0",
|
||||
"serialize-javascript": "^4.0.0",
|
||||
"source-map": "^0.6.1",
|
||||
"terser": "^4.1.2",
|
||||
"webpack-sources": "^1.4.0",
|
||||
|
||||
@@ -24,12 +24,12 @@
|
||||
"@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",
|
||||
"bootstrap": "^4.5.2",
|
||||
"bootstrap-vue": "^2.17.0",
|
||||
"bootstrap-vue": "^2.17.3",
|
||||
"chai": "^4.1.2",
|
||||
"core-js": "^3.6.5",
|
||||
"eslint": "^6.8.0",
|
||||
@@ -42,9 +42,9 @@
|
||||
"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.10",
|
||||
"sass": "^1.26.11",
|
||||
"sass-loader": "^8.0.2",
|
||||
"smartbanner.js": "^1.16.0",
|
||||
"svg-inline-loader": "^0.8.2",
|
||||
@@ -52,14 +52,14 @@
|
||||
"svgo": "^1.3.2",
|
||||
"svgo-loader": "^2.2.1",
|
||||
"uuid": "^8.3.0",
|
||||
"validator": "^13.1.1",
|
||||
"validator": "^13.1.17",
|
||||
"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",
|
||||
"webpack": "^4.44.1"
|
||||
"webpack": "^4.44.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +1,51 @@
|
||||
.promo_armoire_backgrounds_202009 {
|
||||
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: 0px -600px;
|
||||
width: 282px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_mystery_202010 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -283px -600px;
|
||||
width: 282px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_take_this {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -532px -323px;
|
||||
background-position: -893px -170px;
|
||||
width: 96px;
|
||||
height: 69px;
|
||||
}
|
||||
.promo_vampire_potions {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -424px -452px;
|
||||
width: 423px;
|
||||
height: 147px;
|
||||
}
|
||||
.scene_positivity {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px 0px;
|
||||
@@ -36,7 +54,13 @@
|
||||
}
|
||||
.scene_squall {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -361px -244px;
|
||||
background-position: -893px 0px;
|
||||
width: 141px;
|
||||
height: 169px;
|
||||
}
|
||||
.scene_strength {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -337px -244px;
|
||||
width: 192px;
|
||||
height: 129px;
|
||||
}
|
||||
|
||||
@@ -1,576 +1,606 @@
|
||||
.weapon_special_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1629px -1371px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_aetherCrystals {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1629px -1280px;
|
||||
width: 114px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_bardInstrument {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1306px -1315px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_fencingFoil {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1397px -1315px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_lunarScythe {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1488px -1315px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_mammothRiderSpear {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1428px -1315px;
|
||||
background-position: -190px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_nomadsScimitar {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1519px -1315px;
|
||||
background-position: -281px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_pageBanner {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -190px -1529px;
|
||||
background-position: -372px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_roguishRainbowMessage {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -281px -1529px;
|
||||
background-position: -463px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_skeletonKey {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -372px -1529px;
|
||||
background-position: -554px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_tachi {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -463px -1529px;
|
||||
background-position: -645px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_taskwoodsLantern {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -554px -1529px;
|
||||
background-position: -736px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_special_tridentOfCrashingTides {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -645px -1529px;
|
||||
background-position: -827px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_0 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -736px -1529px;
|
||||
background-position: -918px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -827px -1529px;
|
||||
background-position: -1009px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -918px -1529px;
|
||||
background-position: -1100px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1009px -1529px;
|
||||
background-position: -1191px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_4 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -1529px;
|
||||
background-position: -1282px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1191px -1529px;
|
||||
background-position: -1373px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_warrior_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1282px -1529px;
|
||||
background-position: -1464px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_0 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1373px -1529px;
|
||||
background-position: -1555px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1464px -1529px;
|
||||
background-position: -1646px -1466px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1555px -1529px;
|
||||
background-position: 0px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_3 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1646px -1529px;
|
||||
background-position: -91px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_4 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: 0px -1671px;
|
||||
background-position: -182px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_5 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -91px -1671px;
|
||||
background-position: -273px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.weapon_wizard_6 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -182px -1671px;
|
||||
background-position: -364px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.Pet_Currency_Gem {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1214px -1671px;
|
||||
background-position: -1603px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.Pet_Currency_Gem1x {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -596px;
|
||||
background-position: -1780px -596px;
|
||||
width: 15px;
|
||||
height: 13px;
|
||||
}
|
||||
.Pet_Currency_Gem2x {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1746px -828px;
|
||||
background-position: -1748px -828px;
|
||||
width: 30px;
|
||||
height: 26px;
|
||||
}
|
||||
.PixelPaw-Gold {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1746px -724px;
|
||||
background-position: -1748px -724px;
|
||||
width: 51px;
|
||||
height: 51px;
|
||||
}
|
||||
.PixelPaw {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1746px -776px;
|
||||
background-position: -1748px -776px;
|
||||
width: 51px;
|
||||
height: 51px;
|
||||
}
|
||||
.PixelPaw002 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -856px;
|
||||
background-position: -1750px -856px;
|
||||
width: 51px;
|
||||
height: 51px;
|
||||
}
|
||||
.avatar_floral_healer {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1401px;
|
||||
background-position: -906px -1315px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_floral_rogue {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1128px -1315px;
|
||||
background-position: -1006px -1315px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_floral_warrior {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1228px -1315px;
|
||||
background-position: -1106px -1315px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_floral_wizard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1328px -1315px;
|
||||
background-position: -1206px -1315px;
|
||||
width: 99px;
|
||||
height: 99px;
|
||||
}
|
||||
.avatar_snowball_healer {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -856px;
|
||||
background-position: -1629px -856px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.avatar_snowball_rogue {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -962px;
|
||||
background-position: -1629px -962px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.avatar_snowball_warrior {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1068px;
|
||||
background-position: -1629px -1068px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.avatar_snowball_wizard {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -1174px;
|
||||
background-position: -1629px -1174px;
|
||||
width: 120px;
|
||||
height: 105px;
|
||||
}
|
||||
.empty_bottles {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -222px -1466px;
|
||||
background-position: -138px -1699px;
|
||||
width: 64px;
|
||||
height: 54px;
|
||||
}
|
||||
.ghost {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -273px -1671px;
|
||||
background-position: -455px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.inventory_present {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -944px;
|
||||
background-position: -1320px -1164px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_01 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1712px -1280px;
|
||||
background-position: -1720px -1371px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_02 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1727px -1401px;
|
||||
background-position: -220px -324px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_03 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -203px;
|
||||
background-position: -660px -435px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_04 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -272px;
|
||||
background-position: -660px -504px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_05 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -220px -341px;
|
||||
background-position: -660px -573px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_06 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -660px -435px;
|
||||
background-position: -880px -655px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_07 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -660px -504px;
|
||||
background-position: -880px -724px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_08 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -660px -573px;
|
||||
background-position: -880px -793px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_09 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -655px;
|
||||
background-position: -1100px -875px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_10 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -724px;
|
||||
background-position: -1100px -944px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_11 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -880px -793px;
|
||||
background-position: -1100px -1013px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_present_12 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -875px;
|
||||
background-position: -1320px -1095px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_birthday {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1100px -1013px;
|
||||
background-position: -1320px -1233px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_congrats {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1320px -1095px;
|
||||
background-position: -637px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_fortify {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1320px -1164px;
|
||||
background-position: -706px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_getwell {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1320px -1233px;
|
||||
background-position: -775px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_goodluck {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -455px -1671px;
|
||||
background-position: -844px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_greeting {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -524px -1671px;
|
||||
background-position: -913px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_nye {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -593px -1671px;
|
||||
background-position: -982px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_opaquePotion {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -662px -1671px;
|
||||
background-position: -1051px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_seafoam {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -731px -1671px;
|
||||
background-position: -1120px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_shinySeed {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -800px -1671px;
|
||||
background-position: -1189px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_snowball {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -869px -1671px;
|
||||
background-position: -1258px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_spookySparkles {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -938px -1671px;
|
||||
background-position: -1327px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_thankyou {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1007px -1671px;
|
||||
background-position: -1396px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_trinket {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1076px -1671px;
|
||||
background-position: -1465px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.inventory_special_valentine {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1145px -1671px;
|
||||
background-position: -1534px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.knockout {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -1251px;
|
||||
background-position: -1407px -1245px;
|
||||
width: 120px;
|
||||
height: 47px;
|
||||
}
|
||||
.pet_key {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1283px -1671px;
|
||||
background-position: -1672px -1608px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.rebirth_orb {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1352px -1671px;
|
||||
background-position: 0px -1699px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.seafoam_star {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -364px -1671px;
|
||||
background-position: -546px -1608px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.shop_armoire {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1421px -1671px;
|
||||
background-position: -69px -1699px;
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
}
|
||||
.zzz {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -962px;
|
||||
background-position: -1750px -962px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.zzz_light {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -908px;
|
||||
background-position: -1750px -908px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
.notif_inventory_present_01 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1003px;
|
||||
background-position: -1750px -1003px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_02 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1032px;
|
||||
background-position: -1750px -1032px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_03 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1068px;
|
||||
background-position: -1750px -1068px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_04 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1097px;
|
||||
background-position: -1750px -1097px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_05 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1126px;
|
||||
background-position: -1750px -1126px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_06 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1174px;
|
||||
background-position: -1750px -1174px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_07 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1203px;
|
||||
background-position: -1750px -1203px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_08 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1748px -1232px;
|
||||
background-position: -1750px -1232px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_09 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1712px -1368px;
|
||||
background-position: -1744px -1280px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_10 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1741px -1368px;
|
||||
background-position: -1773px -1280px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_11 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1770px -1368px;
|
||||
background-position: -1744px -1309px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_present_12 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1727px -1470px;
|
||||
background-position: -1773px -1309px;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
}
|
||||
.notif_inventory_special_birthday {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -449px;
|
||||
background-position: -1780px -449px;
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
.notif_inventory_special_congrats {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -524px;
|
||||
background-position: -1780px -524px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
.notif_inventory_special_getwell {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -547px;
|
||||
background-position: -1780px -547px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
.notif_inventory_special_goodluck {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -422px;
|
||||
background-position: -1780px -422px;
|
||||
width: 20px;
|
||||
height: 26px;
|
||||
}
|
||||
.notif_inventory_special_greeting {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -573px;
|
||||
background-position: -1780px -573px;
|
||||
width: 20px;
|
||||
height: 22px;
|
||||
}
|
||||
.notif_inventory_special_nye {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1777px -828px;
|
||||
background-position: -1779px -828px;
|
||||
width: 24px;
|
||||
height: 26px;
|
||||
}
|
||||
.notif_inventory_special_thankyou {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -474px;
|
||||
background-position: -1780px -474px;
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
.notif_inventory_special_valentine {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1778px -499px;
|
||||
background-position: -1780px -499px;
|
||||
width: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
.npc_bailey {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1737px -1529px;
|
||||
background-position: -1737px -1466px;
|
||||
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: -710px -1315px;
|
||||
width: 195px;
|
||||
height: 138px;
|
||||
}
|
||||
@@ -582,7 +612,7 @@
|
||||
}
|
||||
.banner_flair_dysheartener {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1712px -1349px;
|
||||
background-position: -1720px -1440px;
|
||||
width: 69px;
|
||||
height: 18px;
|
||||
}
|
||||
@@ -594,7 +624,7 @@
|
||||
}
|
||||
.quest_alligator {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -648px;
|
||||
background-position: -1407px -642px;
|
||||
width: 201px;
|
||||
height: 213px;
|
||||
}
|
||||
@@ -612,13 +642,13 @@
|
||||
}
|
||||
.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: -502px -1315px;
|
||||
width: 207px;
|
||||
height: 138px;
|
||||
}
|
||||
@@ -642,13 +672,13 @@
|
||||
}
|
||||
.quest_basilist {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: 0px -1529px;
|
||||
background-position: 0px -1466px;
|
||||
width: 189px;
|
||||
height: 141px;
|
||||
}
|
||||
.quest_beetle {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -862px;
|
||||
background-position: -1407px -856px;
|
||||
width: 204px;
|
||||
height: 201px;
|
||||
}
|
||||
@@ -678,7 +708,7 @@
|
||||
}
|
||||
.quest_cow {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px 0px;
|
||||
background-position: -1629px 0px;
|
||||
width: 174px;
|
||||
height: 213px;
|
||||
}
|
||||
@@ -690,13 +720,13 @@
|
||||
}
|
||||
.quest_dilatoryDistress1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -437px;
|
||||
background-position: -1407px -431px;
|
||||
width: 210px;
|
||||
height: 210px;
|
||||
}
|
||||
.quest_dilatoryDistress2 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -422px;
|
||||
background-position: -1629px -422px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
@@ -726,13 +756,13 @@
|
||||
}
|
||||
.quest_egg {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -214px;
|
||||
background-position: -1629px -214px;
|
||||
width: 165px;
|
||||
height: 207px;
|
||||
}
|
||||
.quest_evilsanta {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -724px;
|
||||
background-position: -1629px -724px;
|
||||
width: 118px;
|
||||
height: 131px;
|
||||
}
|
||||
@@ -762,7 +792,7 @@
|
||||
}
|
||||
.quest_frog {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: 0px -1315px;
|
||||
background-position: -1407px 0px;
|
||||
width: 221px;
|
||||
height: 213px;
|
||||
}
|
||||
@@ -780,7 +810,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;
|
||||
}
|
||||
@@ -810,7 +840,7 @@
|
||||
}
|
||||
.quest_hedgehog {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -1064px;
|
||||
background-position: -1407px -1058px;
|
||||
width: 219px;
|
||||
height: 186px;
|
||||
}
|
||||
@@ -858,7 +888,7 @@
|
||||
}
|
||||
.quest_mayhemMistiflying1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1627px -573px;
|
||||
background-position: -1629px -573px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
@@ -882,13 +912,7 @@
|
||||
}
|
||||
.quest_moon1 {
|
||||
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
|
||||
background-position: -1407px -220px;
|
||||
background-position: -1407px -214px;
|
||||
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: 54 KiB After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 355 KiB After Width: | Height: | Size: 357 KiB |
|
Before Width: | Height: | Size: 350 KiB After Width: | Height: | Size: 346 KiB |
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 154 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 166 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 159 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 150 KiB |
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 187 KiB After Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 151 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,14 +624,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
.checklist {
|
||||
&.isOpen {
|
||||
.checklist.isOpen {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
margin-top: -3px;
|
||||
}
|
||||
|
||||
.collapse-checklist {
|
||||
padding: 2px 6px;
|
||||
border-radius: 1px;
|
||||
@@ -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,14 +8,10 @@ context('avatar.vue', () => {
|
||||
let Constructr;
|
||||
let vm;
|
||||
|
||||
beforeEach(() => {
|
||||
Constructr = Vue.extend(Avatar);
|
||||
|
||||
vm = new Constructr({
|
||||
propsData: {
|
||||
member: {
|
||||
const baseMember = {
|
||||
stats: {
|
||||
buffs: {},
|
||||
class: 'warrior',
|
||||
},
|
||||
preferences: {
|
||||
hair: {},
|
||||
@@ -23,9 +21,14 @@ context('avatar.vue', () => {
|
||||
equipped: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}).$mount();
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
Constructr = Vue.extend(Avatar);
|
||||
|
||||
vm = new Constructr({
|
||||
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) {
|
||||
|
||||
109
website/client/tests/unit/components/home.spec.js
Normal file
@@ -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,4 @@
|
||||
{
|
||||
"limitedEdition": "Limited Edition",
|
||||
"seasonalEdition": "Seasonal Edition",
|
||||
"winterColors": "Winter Colors",
|
||||
"annoyingFriends": "Annoying Friends",
|
||||
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
|
||||
"alarmingFriends": "Alarming Friends",
|
||||
@@ -61,7 +58,6 @@
|
||||
"nye2": "Happy New Year! May you earn many a Perfect Day.",
|
||||
"nye3": "Happy New Year! May your To-Do list stay short and sweet.",
|
||||
"nye4": "Happy New Year! May you not get attacked by a raging Hippogriff.",
|
||||
"holidayCard": "Received a holiday card!",
|
||||
"mightyBunnySet": "Mighty Bunny (Warrior)",
|
||||
"magicMouseSet": "Magic Mouse (Mage)",
|
||||
"lovingPupSet": "Loving Pup (Healer)",
|
||||
|
||||
@@ -3,16 +3,12 @@
|
||||
"earnedRewardForDevotion": "You have earned <%= reward %> for being committed to improving your life.",
|
||||
"nextRewardUnlocksIn": "Check-ins until your next prize: <%= numberOfCheckinsLeft %>",
|
||||
"awesome": "Awesome!",
|
||||
"totalCount": "<%= count %> total count",
|
||||
"countLeft": "Check-ins until next reward: <%= count %>",
|
||||
"incentivesDescription": "When it comes to building habits, consistency is key. Each day you check-in you get closer to a prize.",
|
||||
"totalCheckins": "<%= count %> Check-Ins",
|
||||
"checkinEarned": "Your Check-In Counter went up!",
|
||||
"unlockedCheckInReward": "You unlocked a Check-In Prize!",
|
||||
"totalCheckinsTitle": "Total Check-Ins",
|
||||
"checkinProgressTitle": "Progress until next",
|
||||
"incentiveBackgroundsUnlockedWithCheckins": "Locked Plain Backgrounds will unlock with Daily Check-Ins.",
|
||||
"checkinReceivedAllRewardsMessage": "You have received all the Check-In prizes available! Congratulations!",
|
||||
"oneOfAllPetEggs": "one of each standard Pet Egg",
|
||||
"twoOfAllPetEggs": "two of each standard Pet Egg",
|
||||
"threeOfAllPetEggs": "three of each standard Pet Egg",
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"habiticaBackSoon": "Don't worry, Habitica will be back soon!",
|
||||
"importantMaintenance": "We are doing important maintenance that we estimate will last until 10pm Pacific Time (5am UTC).",
|
||||
"maintenance": "Maintenance",
|
||||
"maintenanceMoreInfo": "Want more information about the maintenance? <%= linkStart %>Check out our info page<%= linkEnd %>.",
|
||||
"noDamageKeepStreaks": "You will NOT take damage or lose streaks!",
|
||||
"thanksForPatience": "Thanks for your patience!",
|
||||
"twitterMaintenanceUpdates": "For the most recent updates, watch our <a href='https://twitter.com/habitica'>Twitter</a>, where we will be posting status information.",
|
||||
"veteranPetAward": "At the end, you will receive a Veteran pet!",
|
||||
|
||||
"maintenanceInfoTitle": "Information about Upcoming Maintenance to Habitica",
|
||||
"maintenanceInfoWhat": "What is happening?",
|
||||
"maintenanceInfoWhatText": "On May 21, Habitica will be down for maintenance for most of the day. You will not take any damage or have your account harmed during that weekend, even if you can’t log in to check off your Dailies in time! We will be working very hard to make the downtime as short as possible, and will be posting regular updates on <a href='https://twitter.com/habitica' target='_blank'>our Twitter account</a>. At the end of the downtime, to thank everyone for their patience, you will all receive a rare pet!",
|
||||
"maintenanceInfoWhy": "Why is this happening?",
|
||||
"maintenanceInfoWhyText": "For the past several months, we have been thoroughly revamping Habitica behind-the-scenes. Specifically, we have rewritten the API. While it may not look much different on the surface, it’s a whole new world underneath. This will allow us WAY more flexibility when we want to build features in the future, and lead to improved performance!",
|
||||
"maintenanceInfoTechDetails": "Want more details on the technical side of the process? Visit <a href='http://devs.habitica.com/' target='_blank'>The Forge, our dev blog</a>.",
|
||||
"maintenanceInfoMore": "More Information",
|
||||
"maintenanceInfoAccountChanges": "What changes will I see to my account after the rewrite is complete?",
|
||||
"maintenanceInfoAccountChangesText": "At first, there won’t be any notable changes aside from performance improvements for features such as Challenges. If you notice any changes that shouldn’t be there, email us at <%= hrefTechAssistanceEmail %> and we will investigate them for you!",
|
||||
"maintenanceInfoAddFeatures": "What kind of features will this allow Habitica to add?",
|
||||
"maintenanceInfoAddFeaturesText": "Completing this rewrite will allow us to start building out improved chat and Guilds, plans for organizations and families, and additional productivity features like Monthlies and the ability to record yesterday’s activity! Those are all involved features on their own, so it will take time to build them, but until we were finished with this rewrite, there was no way we could start them.",
|
||||
"maintenanceInfoHowLong": "How long will the maintenance take?",
|
||||
"maintenanceInfoHowLongText": "We have to migrate tasks and data for all 1.3 million Habitica users -- not an easy task! We anticipate that it will take place between approximately 1pm Pacific Time (8pm UTC) and 10pm Pacific Time (5am UTC). Rest assured that we’re doing everything we can to make it go as quickly as possible! You can follow <a href='https://twitter.com/habitica' target='_blank'>updates on our Twitter</a>.",
|
||||
"maintenanceInfoStatsAffected": "How will my Dailies, Streaks, Buffs, and Quests be affected?",
|
||||
"maintenanceInfoStatsAffectedText1": "You will NOT take any damage or lose any streaks that weekend, but otherwise, your day will reset normally! Dailies that you checked will become unchecked, buffs will reset, etc. If you are in a Collection Quest, you will still find items. If you are in a Boss Battle, you will still deal damage to the Boss, but the Boss will not deal damage to you. (Even monsters need a break!)",
|
||||
"maintenanceInfoStatsAffectedText2": "After a lot of thought, our team concluded that this was the most fair way to handle the fact that many users will not be able to check off their Dailies normally during the maintenance. We’re sorry for any inconvenience this causes!",
|
||||
"maintenanceInfoSeeTasks": "What if I need to see my task list?",
|
||||
"maintenanceInfoSeeTasksText": "If you know that you will need to see your task list on Saturday to remind yourself what you have to do, we recommend that before the maintenance begins, you take a screenshot of your tasks so that you can use it as a reference.",
|
||||
"maintenanceInfoRarePet": "What kind of rare pet will I receive?",
|
||||
"maintenanceInfoRarePetText": "To thank you for your patience during the downtime, everyone will get a rare Veteran Pet. If you’ve never received a Veteran Pet before, you will receive a Veteran Wolf. If you already have a Veteran Wolf, you will receive a Veteran Tiger. And if you already have a Veteran Wolf and a Veteran Tiger, you will receive a never-before-seen Veteran pet! After the migration is completed, it may take several hours for your pet to show up, but never fear, everyone will get one.",
|
||||
"maintenanceInfoWho": "Who worked on this massive project?",
|
||||
"maintenanceInfoWhoText": "We’re glad you asked! It was spearheaded by our amazing contributor paglias, with lots of help from Blade, TheHollidayInn, SabreCat, Victor Pudeyev, TheUnknown, and Alys.",
|
||||
"maintenanceInfoTesting": "The new version was also tirelessly tested by a bunch of our amazing open-source volunteers. Thank you -- we couldn't have done this without you."
|
||||
}
|
||||
@@ -1,20 +1,3 @@
|
||||
{
|
||||
"merch" : "Merchandise",
|
||||
"merchandiseDescription": "Looking for t-shirts, mugs, or stickers to show off your Habitica pride? Click here!",
|
||||
|
||||
"merch-teespring-summary" : "Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-goto" : "Get a Habitica T-shirt",
|
||||
|
||||
"merch-teespring-mug-summary" : "Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-mug-goto" : "Get a Habitica Mug",
|
||||
|
||||
"merch-teespring-eu-summary" : "EUROPEAN VERSION : Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-eu-goto" : "Get a Habitica T-shirt (EU)",
|
||||
|
||||
"merch-teespring-mug-eu-summary" : "EUROPEAN VERSION : Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-mug-eu-goto" : "Get a Habitica Mug (EU)",
|
||||
|
||||
"merch-stickermule-summary" : "Stick proud Melior wherever you (or someone else) need a reminder of both present and future accomplishments!",
|
||||
"merch-stickermule-goto" : "Get Habitica stickers"
|
||||
|
||||
"merch" : "Merchandise"
|
||||
}
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
|
||||
|
||||
"jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
|
||||
"jsDisabledText": "Habitica can't properly display the site without it!",
|
||||
|
||||
"jsDisabledLink": "Please enable JavaScript to continue!"
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
"welcomeBack": "Welcome back!",
|
||||
"justin": "Justin",
|
||||
"justinIntroMessage1": "Hello there! You must be new here. My name is <strong>Justin</strong>, and I'll be your guide in Habitica.",
|
||||
"justinIntroMessage2": "To start, you'll need to create an avatar.",
|
||||
"justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
|
||||
"justinIntroMessageUsername": "Before we begin, let’s figure out what to call you. Below you’ll find a display name and username I’ve generated for you. After you’ve picked a display name and username, we’ll get started by creating an avatar!",
|
||||
"justinIntroMessageAppearance": "So how would you like to look? Don’t worry, you can change this later.",
|
||||
@@ -15,7 +14,6 @@
|
||||
"next": "Next",
|
||||
"randomize": "Randomize",
|
||||
"mattBoch": "Matt Boch",
|
||||
"mattShall": "Shall I bring you your steed, <%= name %>? Once you've fed a pet enough food to turn it into a mount, it will appear here. Click a mount to saddle up!",
|
||||
"mattBochText1": "Welcome to the Stable! I'm Matt, the beast master. Starting at level 3, you will find eggs and potions to hatch pets with. When you hatch a pet in the Market, it will appear here! Click a pet's image to add it to your avatar. Feed them with the food you find after level 3, and they'll grow into hardy mounts.",
|
||||
"welcomeToTavern": "Welcome to The Tavern!",
|
||||
"sleepDescription": "Need a break? Check into Daniel's Inn to pause some of Habitica's more difficult game mechanics:",
|
||||
@@ -28,20 +26,9 @@
|
||||
"staffAndModerators": "Staff and Moderators",
|
||||
"communityGuidelinesIntro": "Habitica tries to create a welcoming environment for users of all ages and backgrounds, especially in public spaces like the Tavern. If you have any questions, please consult our <a href='/static/community-guidelines' target='_blank'>Community Guidelines</a>.",
|
||||
"acceptCommunityGuidelines": "I agree to follow the Community Guidelines",
|
||||
"daniel": "Daniel",
|
||||
"danielText": "Welcome to the Tavern! Stay a while and meet the locals. If you need to rest (vacation? illness?), I'll set you up at the Inn. While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off.",
|
||||
"danielText2": "Be warned: If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies! Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn.",
|
||||
"danielTextBroken": "Welcome to the Tavern... I guess... If you need to rest, I'll set you up at the Inn... While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off... if you have the energy...",
|
||||
"danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...",
|
||||
"worldBossEvent": "World Boss Event",
|
||||
"worldBossDescription": "World Boss Description",
|
||||
"alexander": "Alexander the Merchant",
|
||||
"welcomeMarket": "Welcome to the Market! Buy hard-to-find eggs and potions! Sell your extras! Commission useful services! Come see what we have to offer.",
|
||||
"welcomeMarketMobile": "Welcome to the Market! Buy hard-to-find eggs and potions! Come see what we have to offer.",
|
||||
"displayItemForGold": "Do you want to sell a <strong><%= itemType %></strong>?",
|
||||
"displayEggForGold": "Do you want to sell a <strong><%= itemType %> Egg</strong>?",
|
||||
"displayPotionForGold": "Do you want to sell a <strong><%= itemType %> Potion</strong>?",
|
||||
"sellForGold": "Sell it for <%= gold %> Gold",
|
||||
"howManyToSell": "How many would you like to sell?",
|
||||
"yourBalance": "Your balance",
|
||||
"sell": "Sell",
|
||||
@@ -72,10 +59,7 @@
|
||||
"unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.",
|
||||
"cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.",
|
||||
"purchasedItem": "You bought <%= itemName %>",
|
||||
"ian": "Ian",
|
||||
"ianText": "Welcome to the Quest Shop! Here you can use Quest Scrolls to battle monsters with your friends. Be sure to check out our fine array of Quest Scrolls for purchase on the right!",
|
||||
"ianTextMobile": "Can I interest you in some quest scrolls? Activate them to battle monsters with your Party!",
|
||||
"ianBrokenText": "Welcome to the Quest Shop... Here you can use Quest Scrolls to battle monsters with your friends... Be sure to check out our fine array of Quest Scrolls for purchase on the right...",
|
||||
"featuredQuests": "Featured Quests!",
|
||||
"cannotBuyItem": "You can't buy this item.",
|
||||
"mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.",
|
||||
@@ -97,14 +81,8 @@
|
||||
"newBaileyUpdate": "New Bailey Update!",
|
||||
"tellMeLater": "Tell Me Later",
|
||||
"dismissAlert": "Dismiss This Alert",
|
||||
"donateText1": "Adds 20 Gems to your account. Gems are used to buy special in-game items, such as shirts and hairstyles.",
|
||||
"donateText2": "Help support Habitica",
|
||||
"donateText3": "Habitica is an open source project that depends on our users for support. The money you spend on gems helps us keep the servers running, maintain a small staff, develop new features, and provide incentives for our volunteer programmers. Thank you for your generosity!",
|
||||
"donationDesc": "20 Gems, Donation to Habitica",
|
||||
"payWithCard": "Pay with Card",
|
||||
"payNote": "Note: PayPal sometimes takes a long time to clear. We recommend paying with card.",
|
||||
"card": "Credit Card (using Stripe)",
|
||||
"amazonInstructions": "Click the button to pay using Amazon Payments",
|
||||
"paymentMethods": "Purchase using",
|
||||
"paymentSuccessful": "Your payment was successful!",
|
||||
"paymentYouReceived": "You received:",
|
||||
@@ -114,25 +92,10 @@
|
||||
"success": "Success!",
|
||||
"classGear": "Class Gear",
|
||||
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
|
||||
"classStats": "These are your class's Stats; they affect the game-play. Each time you level up, you get one Point to allocate to a particular Stat. Hover over each Stat for more information.",
|
||||
"autoAllocate": "Auto Allocate",
|
||||
"autoAllocateText": "If 'Automatic Allocation' is selected, your avatar gains Stats automatically based on your tasks' Stats, which you can find in <strong>TASK > Edit > Advanced Settings > Stat Allocation</strong>. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
|
||||
"spells": "Skills",
|
||||
"spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed <a target='_blank' href='http://habitica.wikia.com/wiki/Todos'>To-Do</a>.",
|
||||
"skillsTitle": "Skills",
|
||||
"toDo": "To-Do",
|
||||
"moreClass": "For more information on the class-system, see <a href='http://habitica.wikia.com/wiki/Class_System' target='_blank'>Wikia</a>.",
|
||||
"tourWelcome": "Welcome to Habitica! This is your To-Do list. Check off a task to proceed!",
|
||||
"tourExp": "Great job! Checking off a task gives you Experience and Gold!",
|
||||
"tourDailies": "This column is for Daily tasks. To proceed, enter a task you should do every day! <strong>Sample Dailies</strong>: <strong>Make Bed</strong>, <strong>Floss</strong>, <strong>Check Work Email</strong>",
|
||||
"tourCron": "Splendid! Your Dailies will reset every day.",
|
||||
"tourHP": "Watch out! If you don't complete a Daily by midnight, it will hurt you!",
|
||||
"tourHabits": "This column is for good and bad Habits that you do many times a day! To proceed, click the pencil to edit the names, then click the checkmark to save.",
|
||||
"tourStats": "Good Habits add Experience and Gold! Bad Habits remove health.",
|
||||
"tourGP": "To proceed, buy the Training Sword with the gold you just earned!",
|
||||
"tourAvatar": "<strong>Customize Your Avatar</strong><ul><li>Your avatar represents you.</li><li>Customize now, or return later.</li><li>Your avatar starts plain until you've earned Equipment!</li></ul>",
|
||||
"tourScrollDown": "Be sure to scroll all the way down to see all the options! Click on your avatar again to return to the tasks page.",
|
||||
"tourMuchMore": "When you're done with tasks, you can form a Party with friends, chat in the shared-interest Guilds, join Challenges, and more!",
|
||||
"tourStatsPage": "This is your Stats page! Earn achievements by completing the listed tasks.",
|
||||
"tourTavernPage": "Welcome to the Tavern, an all-ages chat room! You can keep your Dailies from hurting you in case of illness or travel by clicking \"Pause Damage\". Come say hi!",
|
||||
"tourPartyPage": "Your Party will help you stay accountable. Invite friends to unlock a Quest Scroll!",
|
||||
@@ -147,16 +110,6 @@
|
||||
"tourOkay": "Okay!",
|
||||
"tourAwesome": "Awesome!",
|
||||
"tourSplendid": "Splendid!",
|
||||
"tourNifty": "Nifty!",
|
||||
"tourAvatarProceed": "Show me my tasks!",
|
||||
"tourToDosBrief": "<strong>To-Do List</strong><ul><li>Check off To-Dos to earn Gold & Experience!</li><li>To-Dos never make your avatar lose Health.</li></ul>",
|
||||
"tourDailiesBrief": "<strong>Daily Tasks</strong><ul><li>Dailies repeat every day.</li><li>You lose Health if you skip Dailies.</li></ul>",
|
||||
"tourDailiesProceed": "I'll be careful!",
|
||||
"tourHabitsBrief": "<strong>Good & Bad Habits</strong><ul><li>Good Habits award Gold & Experience.</li><li>Bad Habits make you lose Health.</li></ul>",
|
||||
"tourHabitsProceed": "Makes sense!",
|
||||
"tourRewardsBrief": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsArmoire": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, get a random prize from the Enchanted Armoire, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsProceed": "That's all!",
|
||||
"welcomeToHabit": "Welcome to Habitica!",
|
||||
"welcome1": "Create a basic avatar.",
|
||||
"welcome1notes": "This avatar will represent you as you progress.",
|
||||
@@ -164,8 +117,6 @@
|
||||
"welcome2notes": "How well you do on your real-life tasks will control how well you do in the game!",
|
||||
"welcome3": "Progress in life and the game!",
|
||||
"welcome3notes": "As you improve your life, your avatar will level up and unlock pets, quests, equipment, and more!",
|
||||
"welcome4": "Avoid bad habits that drain Health (HP), or your avatar will die!",
|
||||
"welcome5": "Now you'll customize your avatar and set up your tasks...",
|
||||
"imReady": "Enter Habitica",
|
||||
"limitedOffer": "Available until <%= date %>"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -1,19 +1,6 @@
|
||||
{
|
||||
"rebirthNew": "Rebirth: New Adventure Available!",
|
||||
"rebirthUnlock": "You've unlocked Rebirth! This special Market item allows you to begin a new game at level 1 while keeping your tasks, achievements, pets, and more. Use it to breathe new life into Habitica if you feel you've achieved it all, or to experience new features with the fresh eyes of a beginning character!",
|
||||
"rebirthBegin": "Rebirth: Begin a New Adventure",
|
||||
"rebirthStartOver": "Rebirth starts your character over from Level 1.",
|
||||
"rebirthAdvList1": "You return to full Health.",
|
||||
"rebirthAdvList2": "You have no Experience or Gold.",
|
||||
"rebirthAdvList3": "Your Habits, Dailies, and To-Dos reset to yellow, and streaks reset, except for challenge tasks.",
|
||||
"rebirthAdvList4": "You have the starting class of Warrior until you earn a new class.",
|
||||
"rebirthInherit": "Your new character inherits a few things from their predecessor:",
|
||||
"rebirthInList1": "Tasks, history, equipment, and settings remain.",
|
||||
"rebirthInList2": "Challenge, Guild, and Party memberships remain.",
|
||||
"rebirthInList3": "Gems, backer tiers, and contributor levels remain.",
|
||||
"rebirthInList4": "Items obtained from Gems or drops (such as pets and mounts) remain.",
|
||||
"rebirthEarnAchievement": "You also earn an Achievement for beginning a new adventure!",
|
||||
"beReborn": "Be Reborn",
|
||||
"rebirthAchievement": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is <%= level %>. To stack this Achievement, begin your next new adventure when you've reached an even higher Level!",
|
||||
"rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!",
|
||||
"rebirthBegan": "Began a New Adventure",
|
||||
@@ -23,7 +10,5 @@
|
||||
"rebirthOrbNoLevel": "Used an Orb of Rebirth to start over.",
|
||||
"rebirthPop": "Instantly restart your character as a Level 1 Warrior while retaining achievements, collectibles, and equipment. Your tasks and their history will remain but they will be reset to yellow. Your streaks will be removed except from challenge tasks. Your Gold, Experience, Mana, and the effects of all Skills will be removed. All of this will take effect immediately. For more information, see the wiki's <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a> page.",
|
||||
"rebirthName": "Orb of Rebirth",
|
||||
"reborn": "Reborn, max level <%= reLevel %>",
|
||||
"confirmReborn": "Are you sure?",
|
||||
"rebirthComplete": "You have been reborn!"
|
||||
}
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"limitedEdition": "Limited Edition",
|
||||
"seasonalEdition": "Seasonal Edition",
|
||||
"winterColors": "Winter Colors",
|
||||
"annoyingFriends": "Annoying Friends",
|
||||
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
|
||||
"alarmingFriends": "Alarming Friends",
|
||||
@@ -61,7 +58,6 @@
|
||||
"nye2": "Happy New Year! May you earn many a Perfect Day.",
|
||||
"nye3": "Happy New Year! May your To-Do list stay short and sweet.",
|
||||
"nye4": "Happy New Year! May you not get attacked by a raging Hippogriff.",
|
||||
"holidayCard": "Received a holiday card!",
|
||||
"mightyBunnySet": "Mighty Bunny (Warrior)",
|
||||
"magicMouseSet": "Magic Mouse (Mage)",
|
||||
"lovingPupSet": "Loving Pup (Healer)",
|
||||
|
||||
@@ -3,16 +3,12 @@
|
||||
"earnedRewardForDevotion": "You have earned <%= reward %> for being committed to improving your life.",
|
||||
"nextRewardUnlocksIn": "Check-ins until your next prize: <%= numberOfCheckinsLeft %>",
|
||||
"awesome": "Awesome!",
|
||||
"totalCount": "<%= count %> total count",
|
||||
"countLeft": "Check-ins until next reward: <%= count %>",
|
||||
"incentivesDescription": "When it comes to building habits, consistency is key. Each day you check-in you get closer to a prize.",
|
||||
"totalCheckins": "<%= count %> Check-Ins",
|
||||
"checkinEarned": "Your Check-In Counter went up!",
|
||||
"unlockedCheckInReward": "You unlocked a Check-In Prize!",
|
||||
"totalCheckinsTitle": "Total Check-Ins",
|
||||
"checkinProgressTitle": "Progress until next",
|
||||
"incentiveBackgroundsUnlockedWithCheckins": "Locked Plain Backgrounds will unlock with Daily Check-Ins.",
|
||||
"checkinReceivedAllRewardsMessage": "You have received all the Check-In prizes available! Congratulations!",
|
||||
"oneOfAllPetEggs": "one of each standard Pet Egg",
|
||||
"twoOfAllPetEggs": "two of each standard Pet Egg",
|
||||
"threeOfAllPetEggs": "three of each standard Pet Egg",
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"habiticaBackSoon": "Don't worry, Habitica will be back soon!",
|
||||
"importantMaintenance": "We are doing important maintenance that we estimate will last until 10pm Pacific Time (5am UTC).",
|
||||
"maintenance": "Maintenance",
|
||||
"maintenanceMoreInfo": "Want more information about the maintenance? <%= linkStart %>Check out our info page<%= linkEnd %>.",
|
||||
"noDamageKeepStreaks": "You will NOT take damage or lose streaks!",
|
||||
"thanksForPatience": "Thanks for your patience!",
|
||||
"twitterMaintenanceUpdates": "For the most recent updates, watch our <a href='https://twitter.com/habitica'>Twitter</a>, where we will be posting status information.",
|
||||
"veteranPetAward": "At the end, you will receive a Veteran pet!",
|
||||
|
||||
"maintenanceInfoTitle": "Information about Upcoming Maintenance to Habitica",
|
||||
"maintenanceInfoWhat": "What is happening?",
|
||||
"maintenanceInfoWhatText": "On May 21, Habitica will be down for maintenance for most of the day. You will not take any damage or have your account harmed during that weekend, even if you can’t log in to check off your Dailies in time! We will be working very hard to make the downtime as short as possible, and will be posting regular updates on <a href='https://twitter.com/habitica' target='_blank'>our Twitter account</a>. At the end of the downtime, to thank everyone for their patience, you will all receive a rare pet!",
|
||||
"maintenanceInfoWhy": "Why is this happening?",
|
||||
"maintenanceInfoWhyText": "For the past several months, we have been thoroughly revamping Habitica behind-the-scenes. Specifically, we have rewritten the API. While it may not look much different on the surface, it’s a whole new world underneath. This will allow us WAY more flexibility when we want to build features in the future, and lead to improved performance!",
|
||||
"maintenanceInfoTechDetails": "Want more details on the technical side of the process? Visit <a href='http://devs.habitica.com/' target='_blank'>The Forge, our dev blog</a>.",
|
||||
"maintenanceInfoMore": "More Information",
|
||||
"maintenanceInfoAccountChanges": "What changes will I see to my account after the rewrite is complete?",
|
||||
"maintenanceInfoAccountChangesText": "At first, there won’t be any notable changes aside from performance improvements for features such as Challenges. If you notice any changes that shouldn’t be there, email us at <%= hrefTechAssistanceEmail %> and we will investigate them for you!",
|
||||
"maintenanceInfoAddFeatures": "What kind of features will this allow Habitica to add?",
|
||||
"maintenanceInfoAddFeaturesText": "Completing this rewrite will allow us to start building out improved chat and Guilds, plans for organizations and families, and additional productivity features like Monthlies and the ability to record yesterday’s activity! Those are all involved features on their own, so it will take time to build them, but until we were finished with this rewrite, there was no way we could start them.",
|
||||
"maintenanceInfoHowLong": "How long will the maintenance take?",
|
||||
"maintenanceInfoHowLongText": "We have to migrate tasks and data for all 1.3 million Habitica users -- not an easy task! We anticipate that it will take place between approximately 1pm Pacific Time (8pm UTC) and 10pm Pacific Time (5am UTC). Rest assured that we’re doing everything we can to make it go as quickly as possible! You can follow <a href='https://twitter.com/habitica' target='_blank'>updates on our Twitter</a>.",
|
||||
"maintenanceInfoStatsAffected": "How will my Dailies, Streaks, Buffs, and Quests be affected?",
|
||||
"maintenanceInfoStatsAffectedText1": "You will NOT take any damage or lose any streaks that weekend, but otherwise, your day will reset normally! Dailies that you checked will become unchecked, buffs will reset, etc. If you are in a Collection Quest, you will still find items. If you are in a Boss Battle, you will still deal damage to the Boss, but the Boss will not deal damage to you. (Even monsters need a break!)",
|
||||
"maintenanceInfoStatsAffectedText2": "After a lot of thought, our team concluded that this was the most fair way to handle the fact that many users will not be able to check off their Dailies normally during the maintenance. We’re sorry for any inconvenience this causes!",
|
||||
"maintenanceInfoSeeTasks": "What if I need to see my task list?",
|
||||
"maintenanceInfoSeeTasksText": "If you know that you will need to see your task list on Saturday to remind yourself what you have to do, we recommend that before the maintenance begins, you take a screenshot of your tasks so that you can use it as a reference.",
|
||||
"maintenanceInfoRarePet": "What kind of rare pet will I receive?",
|
||||
"maintenanceInfoRarePetText": "To thank you for your patience during the downtime, everyone will get a rare Veteran Pet. If you’ve never received a Veteran Pet before, you will receive a Veteran Wolf. If you already have a Veteran Wolf, you will receive a Veteran Tiger. And if you already have a Veteran Wolf and a Veteran Tiger, you will receive a never-before-seen Veteran pet! After the migration is completed, it may take several hours for your pet to show up, but never fear, everyone will get one.",
|
||||
"maintenanceInfoWho": "Who worked on this massive project?",
|
||||
"maintenanceInfoWhoText": "We’re glad you asked! It was spearheaded by our amazing contributor paglias, with lots of help from Blade, TheHollidayInn, SabreCat, Victor Pudeyev, TheUnknown, and Alys.",
|
||||
"maintenanceInfoTesting": "The new version was also tirelessly tested by a bunch of our amazing open-source volunteers. Thank you -- we couldn't have done this without you."
|
||||
}
|
||||
@@ -1,20 +1,3 @@
|
||||
{
|
||||
"merch" : "Handelsware",
|
||||
"merchandiseDescription": "Looking for t-shirts, mugs, or stickers to show off your Habitica pride? Click here!",
|
||||
|
||||
"merch-teespring-summary" : "Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-goto" : "Kry 'n Habitica T-hemp",
|
||||
|
||||
"merch-teespring-mug-summary" : "Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-mug-goto" : "Kry 'n Habitica Beker",
|
||||
|
||||
"merch-teespring-eu-summary" : "EUROPEAN VERSION : Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-eu-goto" : "Kry 'n Habitica T-hemp (EU)",
|
||||
|
||||
"merch-teespring-mug-eu-summary" : "EUROPEAN VERSION : Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-mug-eu-goto" : "Kry 'n Habitica Mug (EU)",
|
||||
|
||||
"merch-stickermule-summary" : "Stick proud Melior wherever you (or someone else) need a reminder of both present and future accomplishments!",
|
||||
"merch-stickermule-goto" : "Kry Habitica plakkers"
|
||||
|
||||
"merch" : "Handelsware"
|
||||
}
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"jsDisabledHeading": "Aggenee! Jou webblaaier het nie JavaScript aangeskakel nie",
|
||||
|
||||
"jsDisabledHeadingFull": "Aggenee! Jou webblaaier het nie JavaScript aangeskakel nie, en sonder dit kan Habitica nie behoorlik werk nie",
|
||||
"jsDisabledText": "Habitica kan nie behoorlik die bladsy sonder dit wys nie!",
|
||||
|
||||
"jsDisabledLink": "Skakel asseblief JavaScript aan om voort te gaan!"
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
"welcomeBack": "Welcome back!",
|
||||
"justin": "Justin",
|
||||
"justinIntroMessage1": "Hello there! You must be new here. My name is <strong>Justin</strong>, and I'll be your guide in Habitica.",
|
||||
"justinIntroMessage2": "To start, you'll need to create an avatar.",
|
||||
"justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
|
||||
"justinIntroMessageUsername": "Before we begin, let’s figure out what to call you. Below you’ll find a display name and username I’ve generated for you. After you’ve picked a display name and username, we’ll get started by creating an avatar!",
|
||||
"justinIntroMessageAppearance": "So how would you like to look? Don’t worry, you can change this later.",
|
||||
@@ -15,7 +14,6 @@
|
||||
"next": "Next",
|
||||
"randomize": "Randomize",
|
||||
"mattBoch": "Matt Boch",
|
||||
"mattShall": "Shall I bring you your steed, <%= name %>? Once you've fed a pet enough food to turn it into a mount, it will appear here. Click a mount to saddle up!",
|
||||
"mattBochText1": "Welcome to the Stable! I'm Matt, the beast master. Starting at level 3, you will find eggs and potions to hatch pets with. When you hatch a pet in the Market, it will appear here! Click a pet's image to add it to your avatar. Feed them with the food you find after level 3, and they'll grow into hardy mounts.",
|
||||
"welcomeToTavern": "Welcome to The Tavern!",
|
||||
"sleepDescription": "Need a break? Check into Daniel's Inn to pause some of Habitica's more difficult game mechanics:",
|
||||
@@ -28,20 +26,9 @@
|
||||
"staffAndModerators": "Staff and Moderators",
|
||||
"communityGuidelinesIntro": "Habitica tries to create a welcoming environment for users of all ages and backgrounds, especially in public spaces like the Tavern. If you have any questions, please consult our <a href='/static/community-guidelines' target='_blank'>Community Guidelines</a>.",
|
||||
"acceptCommunityGuidelines": "I agree to follow the Community Guidelines",
|
||||
"daniel": "Daniel",
|
||||
"danielText": "Welcome to the Tavern! Stay a while and meet the locals. If you need to rest (vacation? illness?), I'll set you up at the Inn. While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off.",
|
||||
"danielText2": "Be warned: If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies! Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn.",
|
||||
"danielTextBroken": "Welcome to the Tavern... I guess... If you need to rest, I'll set you up at the Inn... While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off... if you have the energy...",
|
||||
"danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...",
|
||||
"worldBossEvent": "World Boss Event",
|
||||
"worldBossDescription": "World Boss Description",
|
||||
"alexander": "Alexander the Merchant",
|
||||
"welcomeMarket": "Welcome to the Market! Buy hard-to-find eggs and potions! Sell your extras! Commission useful services! Come see what we have to offer.",
|
||||
"welcomeMarketMobile": "Welcome to the Market! Buy hard-to-find eggs and potions! Come see what we have to offer.",
|
||||
"displayItemForGold": "Do you want to sell a <strong><%= itemType %></strong>?",
|
||||
"displayEggForGold": "Do you want to sell a <strong><%= itemType %> Egg</strong>?",
|
||||
"displayPotionForGold": "Do you want to sell a <strong><%= itemType %> Potion</strong>?",
|
||||
"sellForGold": "Sell it for <%= gold %> Gold",
|
||||
"howManyToSell": "How many would you like to sell?",
|
||||
"yourBalance": "Your balance",
|
||||
"sell": "Sell",
|
||||
@@ -72,10 +59,7 @@
|
||||
"unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.",
|
||||
"cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.",
|
||||
"purchasedItem": "You bought <%= itemName %>",
|
||||
"ian": "Ian",
|
||||
"ianText": "Welcome to the Quest Shop! Here you can use Quest Scrolls to battle monsters with your friends. Be sure to check out our fine array of Quest Scrolls for purchase on the right!",
|
||||
"ianTextMobile": "Can I interest you in some quest scrolls? Activate them to battle monsters with your Party!",
|
||||
"ianBrokenText": "Welcome to the Quest Shop... Here you can use Quest Scrolls to battle monsters with your friends... Be sure to check out our fine array of Quest Scrolls for purchase on the right...",
|
||||
"featuredQuests": "Featured Quests!",
|
||||
"cannotBuyItem": "You can't buy this item.",
|
||||
"mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.",
|
||||
@@ -97,14 +81,8 @@
|
||||
"newBaileyUpdate": "New Bailey Update!",
|
||||
"tellMeLater": "Tell Me Later",
|
||||
"dismissAlert": "Dismiss This Alert",
|
||||
"donateText1": "Adds 20 Gems to your account. Gems are used to buy special in-game items, such as shirts and hairstyles.",
|
||||
"donateText2": "Help support Habitica",
|
||||
"donateText3": "Habitica is an open source project that depends on our users for support. The money you spend on gems helps us keep the servers running, maintain a small staff, develop new features, and provide incentives for our volunteer programmers. Thank you for your generosity!",
|
||||
"donationDesc": "20 Gems, Donation to Habitica",
|
||||
"payWithCard": "Pay with Card",
|
||||
"payNote": "Note: PayPal sometimes takes a long time to clear. We recommend paying with card.",
|
||||
"card": "Credit Card (using Stripe)",
|
||||
"amazonInstructions": "Click the button to pay using Amazon Payments",
|
||||
"paymentMethods": "Purchase using",
|
||||
"paymentSuccessful": "Your payment was successful!",
|
||||
"paymentYouReceived": "You received:",
|
||||
@@ -114,25 +92,10 @@
|
||||
"success": "Success!",
|
||||
"classGear": "Class Gear",
|
||||
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
|
||||
"classStats": "These are your class's Stats; they affect the game-play. Each time you level up, you get one Point to allocate to a particular Stat. Hover over each Stat for more information.",
|
||||
"autoAllocate": "Auto Allocate",
|
||||
"autoAllocateText": "If 'Automatic Allocation' is selected, your avatar gains Stats automatically based on your tasks' Stats, which you can find in <strong>TASK > Edit > Advanced Settings > Stat Allocation</strong>. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
|
||||
"spells": "Skills",
|
||||
"spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed <a target='_blank' href='http://habitica.wikia.com/wiki/Todos'>To-Do</a>.",
|
||||
"skillsTitle": "Skills",
|
||||
"toDo": "To-Do",
|
||||
"moreClass": "For more information on the class-system, see <a href='http://habitica.wikia.com/wiki/Class_System' target='_blank'>Wikia</a>.",
|
||||
"tourWelcome": "Welcome to Habitica! This is your To-Do list. Check off a task to proceed!",
|
||||
"tourExp": "Great job! Checking off a task gives you Experience and Gold!",
|
||||
"tourDailies": "This column is for Daily tasks. To proceed, enter a task you should do every day! <strong>Sample Dailies</strong>: <strong>Make Bed</strong>, <strong>Floss</strong>, <strong>Check Work Email</strong>",
|
||||
"tourCron": "Splendid! Your Dailies will reset every day.",
|
||||
"tourHP": "Watch out! If you don't complete a Daily by midnight, it will hurt you!",
|
||||
"tourHabits": "This column is for good and bad Habits that you do many times a day! To proceed, click the pencil to edit the names, then click the checkmark to save.",
|
||||
"tourStats": "Good Habits add Experience and Gold! Bad Habits remove health.",
|
||||
"tourGP": "To proceed, buy the Training Sword with the gold you just earned!",
|
||||
"tourAvatar": "<strong>Customize Your Avatar</strong><ul><li>Your avatar represents you.</li><li>Customize now, or return later.</li><li>Your avatar starts plain until you've earned Equipment!</li></ul>",
|
||||
"tourScrollDown": "Be sure to scroll all the way down to see all the options! Click on your avatar again to return to the tasks page.",
|
||||
"tourMuchMore": "When you're done with tasks, you can form a Party with friends, chat in the shared-interest Guilds, join Challenges, and more!",
|
||||
"tourStatsPage": "This is your Stats page! Earn achievements by completing the listed tasks.",
|
||||
"tourTavernPage": "Welcome to the Tavern, an all-ages chat room! You can keep your Dailies from hurting you in case of illness or travel by clicking \"Pause Damage\". Come say hi!",
|
||||
"tourPartyPage": "Your Party will help you stay accountable. Invite friends to unlock a Quest Scroll!",
|
||||
@@ -147,16 +110,6 @@
|
||||
"tourOkay": "Okay!",
|
||||
"tourAwesome": "Awesome!",
|
||||
"tourSplendid": "Splendid!",
|
||||
"tourNifty": "Nifty!",
|
||||
"tourAvatarProceed": "Show me my tasks!",
|
||||
"tourToDosBrief": "<strong>To-Do List</strong><ul><li>Check off To-Dos to earn Gold & Experience!</li><li>To-Dos never make your avatar lose Health.</li></ul>",
|
||||
"tourDailiesBrief": "<strong>Daily Tasks</strong><ul><li>Dailies repeat every day.</li><li>You lose Health if you skip Dailies.</li></ul>",
|
||||
"tourDailiesProceed": "I'll be careful!",
|
||||
"tourHabitsBrief": "<strong>Good & Bad Habits</strong><ul><li>Good Habits award Gold & Experience.</li><li>Bad Habits make you lose Health.</li></ul>",
|
||||
"tourHabitsProceed": "Makes sense!",
|
||||
"tourRewardsBrief": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsArmoire": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, get a random prize from the Enchanted Armoire, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsProceed": "That's all!",
|
||||
"welcomeToHabit": "Welcome to Habitica!",
|
||||
"welcome1": "Create a basic avatar.",
|
||||
"welcome1notes": "This avatar will represent you as you progress.",
|
||||
@@ -164,8 +117,6 @@
|
||||
"welcome2notes": "How well you do on your real-life tasks will control how well you do in the game!",
|
||||
"welcome3": "Progress in life and the game!",
|
||||
"welcome3notes": "As you improve your life, your avatar will level up and unlock pets, quests, equipment, and more!",
|
||||
"welcome4": "Avoid bad habits that drain Health (HP), or your avatar will die!",
|
||||
"welcome5": "Now you'll customize your avatar and set up your tasks...",
|
||||
"imReady": "Enter Habitica",
|
||||
"limitedOffer": "Available until <%= date %>"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -1,19 +1,6 @@
|
||||
{
|
||||
"rebirthNew": "Wedergeboorte: Nuwe Avontuur Beskikbaar!",
|
||||
"rebirthUnlock": "Jy het Wedergeboorte ontsluit! Hierdie spesiale Mark item laat jou 'n nuwe spel op vlak 1 begin, terwyl jy jou take, prestasies, troeteldiere, en meer hou. Gebruik dit om nuwe lewe in Habitica in te blaas as jy dink jy al als bereik het, of om nuwe funksies te beleef met die vars oë van 'n begin karakter!",
|
||||
"rebirthBegin": "Wedergeboorte: Begin 'n Nuwe Avontuur",
|
||||
"rebirthStartOver": "Wedergeboorte begin jou karakter oor vanaf vlak 1.",
|
||||
"rebirthAdvList1": "Jy keer terug tot volle Gesondheid.",
|
||||
"rebirthAdvList2": "Jy het geen ondervinding of goud nie.",
|
||||
"rebirthAdvList3": "Your Habits, Dailies, and To-Dos reset to yellow, and streaks reset, except for challenge tasks.",
|
||||
"rebirthAdvList4": "Jy het die begin klas van Vegter tot jy 'n nuwe klas verdien.",
|
||||
"rebirthInherit": "Jou nuwe karakter erf 'n paar dinge van hul voorganger:",
|
||||
"rebirthInList1": "Tasks, history, equipment, and settings remain.",
|
||||
"rebirthInList2": "Uitdaging, Gilde en Party lidmaatskappe bly.",
|
||||
"rebirthInList3": "Edelstene, ondersteuner vlakke, en bydraer vlakke bly.",
|
||||
"rebirthInList4": "Items obtained from Gems or drops (such as pets and mounts) remain.",
|
||||
"rebirthEarnAchievement": "Jy bereik ook 'n Prestasie vir die begin van 'n nuwe Avontuur!",
|
||||
"beReborn": "Wees Wedergebore",
|
||||
"rebirthAchievement": "Jy het 'n nuwe avontuur begin! Hierdie is Wedergeboorte <%= number %> vir jou, en die hoogste Vlak jy het bereik is <%= level %>. Om hierdie Prestasie op te hoop, begin jou volgende nuwe avontuur wanneer jy 'n selfs hoër Vlak bereik het!",
|
||||
"rebirthAchievement100": "Jy het 'n nuwe avontuur begin! Hierdie is Wedergeboorte <%= number %> vir jou, en jou hoogste Vlak bereik is 100 of hoër. Om hierdie bereiking op te hoop, begin jou volgende avontuur wanneer jy ten minste vlak 100 bereik het!",
|
||||
"rebirthBegan": "Het 'n Nuwe Avontuur begin.",
|
||||
@@ -23,7 +10,5 @@
|
||||
"rebirthOrbNoLevel": "Used an Orb of Rebirth to start over.",
|
||||
"rebirthPop": "Instantly restart your character as a Level 1 Warrior while retaining achievements, collectibles, and equipment. Your tasks and their history will remain but they will be reset to yellow. Your streaks will be removed except from challenge tasks. Your Gold, Experience, Mana, and the effects of all Skills will be removed. All of this will take effect immediately. For more information, see the wiki's <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a> page.",
|
||||
"rebirthName": "Orb van Wedergeboorte",
|
||||
"reborn": "Wedergebore, hoogste vlak <%= reLevel %>",
|
||||
"confirmReborn": "Is jy seker?",
|
||||
"rebirthComplete": "You have been reborn!"
|
||||
}
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"limitedEdition": "الإصدارات المحدودة",
|
||||
"seasonalEdition": "إصدار موسمي",
|
||||
"winterColors": "ألوان الشتاء",
|
||||
"annoyingFriends": "الأصدقاء المزعجون",
|
||||
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
|
||||
"alarmingFriends": "Alarming Friends",
|
||||
@@ -61,7 +58,6 @@
|
||||
"nye2": "Happy New Year! May you earn many a Perfect Day.",
|
||||
"nye3": "Happy New Year! May your To-Do list stay short and sweet.",
|
||||
"nye4": "Happy New Year! May you not get attacked by a raging Hippogriff.",
|
||||
"holidayCard": "Received a holiday card!",
|
||||
"mightyBunnySet": "Mighty Bunny (Warrior)",
|
||||
"magicMouseSet": "Magic Mouse (Mage)",
|
||||
"lovingPupSet": "Loving Pup (Healer)",
|
||||
|
||||
@@ -3,16 +3,12 @@
|
||||
"earnedRewardForDevotion": "You have earned <%= reward %> for being committed to improving your life.",
|
||||
"nextRewardUnlocksIn": "Check-ins until your next prize: <%= numberOfCheckinsLeft %>",
|
||||
"awesome": "Awesome!",
|
||||
"totalCount": "<%= count %> total count",
|
||||
"countLeft": "Check-ins until next reward: <%= count %>",
|
||||
"incentivesDescription": "When it comes to building habits, consistency is key. Each day you check-in you get closer to a prize.",
|
||||
"totalCheckins": "<%= count %> Check-Ins",
|
||||
"checkinEarned": "Your Check-In Counter went up!",
|
||||
"unlockedCheckInReward": "You unlocked a Check-In Prize!",
|
||||
"totalCheckinsTitle": "Total Check-Ins",
|
||||
"checkinProgressTitle": "Progress until next",
|
||||
"incentiveBackgroundsUnlockedWithCheckins": "Locked Plain Backgrounds will unlock with Daily Check-Ins.",
|
||||
"checkinReceivedAllRewardsMessage": "You have received all the Check-In prizes available! Congratulations!",
|
||||
"oneOfAllPetEggs": "one of each standard Pet Egg",
|
||||
"twoOfAllPetEggs": "two of each standard Pet Egg",
|
||||
"threeOfAllPetEggs": "three of each standard Pet Egg",
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
{
|
||||
"habiticaBackSoon": "لا تقلق، سوف يعود Habitica قريباً!",
|
||||
"importantMaintenance": "اننا نقوم بصيانة مهمة ونحن نقدرأن تستمر حتى 10 مساءاً (5 صباحا بتوقيت UTC)",
|
||||
"maintenance": "الصيانة",
|
||||
"maintenanceMoreInfo": "هل تريد المزيد من المعلومات حول صيانة؟ <%= linkStart %>تفحص صفحة معلومات<%= linkEnd %>.",
|
||||
"noDamageKeepStreaks": "You will NOT take damage or lose streaks!",
|
||||
"thanksForPatience": "شكرا على صبرك!",
|
||||
"twitterMaintenanceUpdates": "لأخر التحديثات, شاهد<a href='https://twitter.com/habitica'>تويتر</a>, المكان الذي ننشر فيه معلومات التحديثات.",
|
||||
"veteranPetAward": "في النهاية سوف تحصل على حيوان أليف متمرس!",
|
||||
"maintenanceInfoTitle": "معلومات عن صيانة Habitica القادمة",
|
||||
"maintenanceInfoWhat": "مالذي حدث؟",
|
||||
"maintenanceInfoWhatText": "On May 21, Habitica will be down for maintenance for most of the day. You will not take any damage or have your account harmed during that weekend, even if you can’t log in to check off your Dailies in time! We will be working very hard to make the downtime as short as possible, and will be posting regular updates on <a href='https://twitter.com/habitica' target='_blank'>our Twitter account</a>. At the end of the downtime, to thank everyone for their patience, you will all receive a rare pet!",
|
||||
"maintenanceInfoWhy": "ما الذي حدث؟",
|
||||
"maintenanceInfoWhyText": "خلال الأشهر العديدة الماضية أجرينا إصلاحًا شاملًا لHabitica خلف الكواليس، لقد أعدنا كتابة الAPI على وجه الخصوص. في حين أنه قد لا يبدو مختلفاً كثيراً من الخارج إلا أنه عالم جديد تمامًا من تحت. سيتيح لنا هذا المزيد من المرونة عندما نريد بناء ميزات في المستقبل، وسيؤدي إلى أداء أفضل!",
|
||||
"maintenanceInfoTechDetails": "تريد المزيد من التفاصيل عن الجانب الفني من العملية؟ قم بزيارة <a href='http://devs.habitica.com/' target='_blank'>The Forge مدونة التطورات الخاصة بنا</a>.",
|
||||
"maintenanceInfoMore": "المزيد من المعلومات",
|
||||
"maintenanceInfoAccountChanges": "ما هي التغييرات التي سوف أراها على حسابي بعد إنتهاء اعادة الكتابة؟",
|
||||
"maintenanceInfoAccountChangesText": "At first, there won’t be any notable changes aside from performance improvements for features such as Challenges. If you notice any changes that shouldn’t be there, email us at <%= hrefTechAssistanceEmail %> and we will investigate them for you!",
|
||||
"maintenanceInfoAddFeatures": "ما هي أنواع المميزات التي سيسمح لHabitica بإضافتها؟",
|
||||
"maintenanceInfoAddFeaturesText": "Completing this rewrite will allow us to start building out improved chat and Guilds, plans for organizations and families, and additional productivity features like Monthlies and the ability to record yesterday’s activity! Those are all involved features on their own, so it will take time to build them, but until we were finished with this rewrite, there was no way we could start them.",
|
||||
"maintenanceInfoHowLong": "كم ستستغرق الصيانة؟",
|
||||
"maintenanceInfoHowLongText": "يجب علينا نقل المهام والبيانات لجميع مستخدمي Habitica البالغ عددهم ١،٣ مليون شخص - ليست مهمة سهلة! نتوقع أن يتم ذلك تقريباً ما بين الساعة الواحدة ظهراً بتوقيت المحيط الهادئ (الساعة ٨ مساءاً بتوقيت UTC) و١٠ مساءاً بتوقيت المحيط الهادئ (الساعة ٥ صباحاً بتوقيت UTC). كن مطمئناً أننا نبذل كل ما في وسعنا لجعله يسير في أسرع وقت ممكن! يمكنك متابعة <a href='https://twitter.com/habitica' target='_blank'>التحديثات على حساب تويتر الخاص بنا</a>.",
|
||||
"maintenanceInfoStatsAffected": "How will my Dailies, Streaks, Buffs, and Quests be affected?",
|
||||
"maintenanceInfoStatsAffectedText1": "You will NOT take any damage or lose any streaks that weekend, but otherwise, your day will reset normally! Dailies that you checked will become unchecked, buffs will reset, etc. If you are in a Collection Quest, you will still find items. If you are in a Boss Battle, you will still deal damage to the Boss, but the Boss will not deal damage to you. (Even monsters need a break!)",
|
||||
"maintenanceInfoStatsAffectedText2": "After a lot of thought, our team concluded that this was the most fair way to handle the fact that many users will not be able to check off their Dailies normally during the maintenance. We’re sorry for any inconvenience this causes!",
|
||||
"maintenanceInfoSeeTasks": "ماذا لو كنت بحاجة لرؤية قائمة المهام الخاصة بي؟",
|
||||
"maintenanceInfoSeeTasksText": "إذا كنت تعلم أنك ستحتاج إلى رؤية قائمة المهام الخاصة بك يوم السبت لتذكير نفسك بما يجب عليك القيام به، فنحن نوصي قبل بدء الصيانة بأخذ لقطة شاشة لمهامك بحيث يمكنك استخدامها كمرجع.",
|
||||
"maintenanceInfoRarePet": "أي نوع من الحيوانات الأليفة النادرة سوف أتلقى؟",
|
||||
"maintenanceInfoRarePetText": "لنشكركم على صبركم خلال فترة التوقف، سيحصل الجميع على حيوان نادر متمرس. إذا لم تستلم حيواناً أليفاً متمرساً قط فستحصل على ذئب متمرس. إذا كان لديك بالفعل ذئب متمرس فسوف تتلقى نمراً متمرساً. وإذا كان لديك بالفعل ذئب ونمر قدامى متمرسين فستحصل على حيوان أليف متمرس لم يسبق وأن رآه أحد! بعد اكتمال عملية التحويل قد يستغرق الأمر عدة ساعات حتى يظهر حيوانك الأليف، لكن لا تخف أبدًا، فكل شخص سيحصل على واحدة.",
|
||||
"maintenanceInfoWho": "من الذي عمل على هذا المشروع الضخم؟",
|
||||
"maintenanceInfoWhoText": "نحن سعداء لأنك سألت! وقد ترأسها المساهم المذهل لدينا paglias، مع الكثير من المساعدة منBlade ، TheHollidayInn ،SabreCa ،Victor Pudeyev ،TheUnknown، وAlys.",
|
||||
"maintenanceInfoTesting": "كما تم اختبار الإصدار الجديد بلا كلل من قبل مجموعة من المتطوعين المذهلين في برامج مفتوحة المصدر. شكرًا لكم - لم نكن لنتمكن من فعل هذا بدونكم."
|
||||
}
|
||||
@@ -1,14 +1,3 @@
|
||||
{
|
||||
"merch": "بضائع",
|
||||
"merchandiseDescription": "هل تبحث عن قمصان أو أكواب أو ملصقات لإظهار فخرك بHabitica؟ انقر هنا!",
|
||||
"merch-teespring-summary": "Teespring هو نظام أساسي يُسَهل على أي شخص صنع وبيع منتجات عالية الجودة يحبها الناس دون تكلفة أو مخاطرة.",
|
||||
"merch-teespring-goto": "احصل على قميص Habitica",
|
||||
"merch-teespring-mug-summary": "Teespring هو نظام أساسي يُسَهل على أي شخص صنع وبيع منتجات عالية الجودة يحبها الناس دون تكلفة أو مخاطرة.",
|
||||
"merch-teespring-mug-goto": "احصل على كوب Habitica",
|
||||
"merch-teespring-eu-summary": "إصدار أوروبي: Teespring هو نظام أساسي يُسَهل على أي شخص صنع وبيع منتجات عالية الجودة يحبها الناس دون تكلفة أو مخاطرة.",
|
||||
"merch-teespring-eu-goto": "احصل على قميص Habitica (EU)",
|
||||
"merch-teespring-mug-eu-summary": "إصدار أوروبي: Teespring هو نظام أساسي يُسَهل على أي شخص صنع وبيع منتجات عالية الجودة يحبها الناس دون تكلفة أو مخاطرة.",
|
||||
"merch-teespring-mug-eu-goto": "احصل على كوب Habitica (EU)",
|
||||
"merch-stickermule-summary": "الصق Melior فخور أينما تكون أنت (أو شخص آخر) بحاجة إلى تذكير بالإنجازات الحالية والمستقبلية!",
|
||||
"merch-stickermule-goto": "احصل على ملصقات Habitica"
|
||||
"merch": "بضائع"
|
||||
}
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"jsDisabledHeading": "للأسف، الجافا سكريبت غير مفعل على متصفحكم",
|
||||
|
||||
"jsDisabledHeadingFull": "للأسف، الجافا سكريبت غير مفعل على متصفحكم، و من دونه لا يمكن ل Habitica أن يعمل بشكل صحيح",
|
||||
"jsDisabledText": "لا يمكن ل Habitica عرض الموقع بشكل صحيح من دونه",
|
||||
|
||||
"jsDisabledLink": "المرجو منكم تفعيل الجافا سكريبت للمواصلة"
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
"welcomeBack": "Welcome back!",
|
||||
"justin": "جستن",
|
||||
"justinIntroMessage1": "Hello there! You must be new here. My name is <strong>Justin</strong>, and I'll be your guide in Habitica.",
|
||||
"justinIntroMessage2": "To start, you'll need to create an avatar.",
|
||||
"justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
|
||||
"justinIntroMessageUsername": "Before we begin, let’s figure out what to call you. Below you’ll find a display name and username I’ve generated for you. After you’ve picked a display name and username, we’ll get started by creating an avatar!",
|
||||
"justinIntroMessageAppearance": "So how would you like to look? Don’t worry, you can change this later.",
|
||||
@@ -15,7 +14,6 @@
|
||||
"next": "Next",
|
||||
"randomize": "Randomize",
|
||||
"mattBoch": "ماتّ بوتش",
|
||||
"mattShall": "Shall I bring you your steed, <%= name %>? Once you've fed a pet enough food to turn it into a mount, it will appear here. Click a mount to saddle up!",
|
||||
"mattBochText1": "Welcome to the Stable! I'm Matt, the beast master. Starting at level 3, you will find eggs and potions to hatch pets with. When you hatch a pet in the Market, it will appear here! Click a pet's image to add it to your avatar. Feed them with the food you find after level 3, and they'll grow into hardy mounts.",
|
||||
"welcomeToTavern": "Welcome to The Tavern!",
|
||||
"sleepDescription": "Need a break? Check into Daniel's Inn to pause some of Habitica's more difficult game mechanics:",
|
||||
@@ -28,20 +26,9 @@
|
||||
"staffAndModerators": "Staff and Moderators",
|
||||
"communityGuidelinesIntro": "Habitica tries to create a welcoming environment for users of all ages and backgrounds, especially in public spaces like the Tavern. If you have any questions, please consult our <a href='/static/community-guidelines' target='_blank'>Community Guidelines</a>.",
|
||||
"acceptCommunityGuidelines": "I agree to follow the Community Guidelines",
|
||||
"daniel": "دانيل",
|
||||
"danielText": "Welcome to the Tavern! Stay a while and meet the locals. If you need to rest (vacation? illness?), I'll set you up at the Inn. While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off.",
|
||||
"danielText2": "Be warned: If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies! Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn.",
|
||||
"danielTextBroken": "Welcome to the Tavern... I guess... If you need to rest, I'll set you up at the Inn... While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off... if you have the energy...",
|
||||
"danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...",
|
||||
"worldBossEvent": "World Boss Event",
|
||||
"worldBossDescription": "World Boss Description",
|
||||
"alexander": "التاجر ألكسندر",
|
||||
"welcomeMarket": "مرحبًا بك في المتجر! اشتر البيض والجرعات التي يصعب العثور عليها! بع ما لا تحتاج إليه! احصل على الخدمات المفيدة! تعال وانظر إلى ما نقدمه.",
|
||||
"welcomeMarketMobile": "Welcome to the Market! Buy hard-to-find eggs and potions! Come see what we have to offer.",
|
||||
"displayItemForGold": "هل تريد بيع <strong><%= itemType %></strong> ؟",
|
||||
"displayEggForGold": "Do you want to sell a <strong><%= itemType %> Egg</strong>?",
|
||||
"displayPotionForGold": "Do you want to sell a <strong><%= itemType %> Potion</strong>?",
|
||||
"sellForGold": "بعها مقابل <%= gold %> ذهب",
|
||||
"howManyToSell": "How many would you like to sell?",
|
||||
"yourBalance": "Your balance",
|
||||
"sell": "Sell",
|
||||
@@ -72,10 +59,7 @@
|
||||
"unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.",
|
||||
"cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.",
|
||||
"purchasedItem": "You bought <%= itemName %>",
|
||||
"ian": "إيان",
|
||||
"ianText": "Welcome to the Quest Shop! Here you can use Quest Scrolls to battle monsters with your friends. Be sure to check out our fine array of Quest Scrolls for purchase on the right!",
|
||||
"ianTextMobile": "Can I interest you in some quest scrolls? Activate them to battle monsters with your Party!",
|
||||
"ianBrokenText": "Welcome to the Quest Shop... Here you can use Quest Scrolls to battle monsters with your friends... Be sure to check out our fine array of Quest Scrolls for purchase on the right...",
|
||||
"featuredQuests": "Featured Quests!",
|
||||
"cannotBuyItem": "You can't buy this item.",
|
||||
"mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.",
|
||||
@@ -97,14 +81,8 @@
|
||||
"newBaileyUpdate": "New Bailey Update!",
|
||||
"tellMeLater": "Tell Me Later",
|
||||
"dismissAlert": "اغلق هذا الإعلان",
|
||||
"donateText1": "إضافة 20 جوهرة إلى حسابك. تستخدم الجواهر لشراء بعض الأشياء المميزة داخل اللعبة، كالأقمصة وتسريحات الشعر.",
|
||||
"donateText2": "ساهم في دعم Habitica",
|
||||
"donateText3": "Habitica is an open source project that depends on our users for support. The money you spend on gems helps us keep the servers running, maintain a small staff, develop new features, and provide incentives for our volunteer programmers. Thank you for your generosity!",
|
||||
"donationDesc": "20 جوهرة، تبرع إلى Habitica",
|
||||
"payWithCard": "ادفع بالبطاقة",
|
||||
"payNote": "ملاحظة: في بعض الأحيان، يطول باي بال في إتمام العملية. ننصحك بالدفع عن طريق بطاقة الإئتمان.",
|
||||
"card": "Credit Card (using Stripe)",
|
||||
"amazonInstructions": "اضغط الزر للدفع باستخدام أمازون",
|
||||
"paymentMethods": "اشتري باستخدام",
|
||||
"paymentSuccessful": "Your payment was successful!",
|
||||
"paymentYouReceived": "You received:",
|
||||
@@ -114,25 +92,10 @@
|
||||
"success": "Success!",
|
||||
"classGear": "عتاد الفئة",
|
||||
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
|
||||
"classStats": "These are your class's Stats; they affect the game-play. Each time you level up, you get one Point to allocate to a particular Stat. Hover over each Stat for more information.",
|
||||
"autoAllocate": "توزيع تلقائي",
|
||||
"autoAllocateText": "If 'Automatic Allocation' is selected, your avatar gains Stats automatically based on your tasks' Stats, which you can find in <strong>TASK > Edit > Advanced Settings > Stat Allocation</strong>. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
|
||||
"spells": "Skills",
|
||||
"spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed <a target='_blank' href='http://habitica.wikia.com/wiki/Todos'>To-Do</a>.",
|
||||
"skillsTitle": "Skills",
|
||||
"toDo": "مهمة",
|
||||
"moreClass": "For more information on the class-system, see <a href='http://habitica.wikia.com/wiki/Class_System' target='_blank'>Wikia</a>.",
|
||||
"tourWelcome": "مرحبا بك في Habitica! هذه هي لائحة المهمات. اشطب مهمة للتقدم!",
|
||||
"tourExp": "برافو! شطب مهمة يعطيك خبرة وذهب!",
|
||||
"tourDailies": "This column is for Daily tasks. To proceed, enter a task you should do every day! <strong>Sample Dailies</strong>: <strong>Make Bed</strong>, <strong>Floss</strong>, <strong>Check Work Email</strong>",
|
||||
"tourCron": "رائع! يومياتك تبدأ من جديد كل يوم.",
|
||||
"tourHP": "احذر! إن لم تنجز مهمة قبل منتصف الليل، ستؤذيك!",
|
||||
"tourHabits": "This column is for good and bad Habits that you do many times a day! To proceed, click the pencil to edit the names, then click the checkmark to save.",
|
||||
"tourStats": "العادات الجيدة تضيف خبرة وذهب! والعادات السيئة تنقص الصحة.",
|
||||
"tourGP": "للتقدم، اشتر سيف تدريب بالذهب الذي كسبته للتو!",
|
||||
"tourAvatar": "<strong>Customize Your Avatar</strong><ul><li>Your avatar represents you.</li><li>Customize now, or return later.</li><li>Your avatar starts plain until you've earned Equipment!</li></ul>",
|
||||
"tourScrollDown": "Be sure to scroll all the way down to see all the options! Click on your avatar again to return to the tasks page.",
|
||||
"tourMuchMore": "When you're done with tasks, you can form a Party with friends, chat in the shared-interest Guilds, join Challenges, and more!",
|
||||
"tourStatsPage": "هذه هي صفحة الإحصائية! اكسب الإنجازات بإكمال المهمات في اللائحة.",
|
||||
"tourTavernPage": "Welcome to the Tavern, an all-ages chat room! You can keep your Dailies from hurting you in case of illness or travel by clicking \"Pause Damage\". Come say hi!",
|
||||
"tourPartyPage": "فريقك سيساعدك أن تتحمل المسئولية. ادعو أصدقائك لتحصل على لفيفة تنقيب!",
|
||||
@@ -147,16 +110,6 @@
|
||||
"tourOkay": "حسناً!",
|
||||
"tourAwesome": "رائع!",
|
||||
"tourSplendid": "عظيم!",
|
||||
"tourNifty": "أنيق!",
|
||||
"tourAvatarProceed": "أرني مهماتي!",
|
||||
"tourToDosBrief": "<strong>To-Do List</strong><ul><li>Check off To-Dos to earn Gold & Experience!</li><li>To-Dos never make your avatar lose Health.</li></ul>",
|
||||
"tourDailiesBrief": "<strong>Daily Tasks</strong><ul><li>Dailies repeat every day.</li><li>You lose Health if you skip Dailies.</li></ul>",
|
||||
"tourDailiesProceed": "سأكون حذراً!",
|
||||
"tourHabitsBrief": "<strong>Good & Bad Habits</strong><ul><li>Good Habits award Gold & Experience.</li><li>Bad Habits make you lose Health.</li></ul>",
|
||||
"tourHabitsProceed": "شيء منطقي!",
|
||||
"tourRewardsBrief": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsArmoire": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, get a random prize from the Enchanted Armoire, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsProceed": "هذا كل شيء!",
|
||||
"welcomeToHabit": "أهلاً وسهلاً بك في Habitica!",
|
||||
"welcome1": "صنع شخصية بسيطة",
|
||||
"welcome1notes": "هذه الشخصية ستمثلك و أنت تتقدم.",
|
||||
@@ -164,8 +117,6 @@
|
||||
"welcome2notes": "How well you do on your real-life tasks will control how well you do in the game!",
|
||||
"welcome3": "تقدم في الحياة واللعبة!",
|
||||
"welcome3notes": "As you improve your life, your avatar will level up and unlock pets, quests, equipment, and more!",
|
||||
"welcome4": "تجنب العادات السيئة التي تنقص نقاط الحياة (HP)، و إلا ستموت شخصيتك! ",
|
||||
"welcome5": "Now you'll customize your avatar and set up your tasks...",
|
||||
"imReady": "ادخل Habitica",
|
||||
"limitedOffer": "Available until <%= date %>"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -1,19 +1,6 @@
|
||||
{
|
||||
"rebirthNew": "البعث : مغامرة جديدة قد أتيحت !",
|
||||
"rebirthUnlock": "You've unlocked Rebirth! This special Market item allows you to begin a new game at level 1 while keeping your tasks, achievements, pets, and more. Use it to breathe new life into Habitica if you feel you've achieved it all, or to experience new features with the fresh eyes of a beginning character!",
|
||||
"rebirthBegin": "البعث : إبدأ مغامرة جديدة",
|
||||
"rebirthStartOver": "Rebirth starts your character over from Level 1.",
|
||||
"rebirthAdvList1": "يتم استعادتك إلى الصحة الكاملة.",
|
||||
"rebirthAdvList2": "You have no Experience or Gold.",
|
||||
"rebirthAdvList3": "Your Habits, Dailies, and To-Dos reset to yellow, and streaks reset, except for challenge tasks.",
|
||||
"rebirthAdvList4": "سوف تعود إلى فئة البدء \"المحارب\" حتى تتعلم فئة جديدة.",
|
||||
"rebirthInherit": "شخصيتك الجديد سترث بعض الأشياء من الشخصية السابقه :",
|
||||
"rebirthInList1": "Tasks, history, equipment, and settings remain.",
|
||||
"rebirthInList2": "عضويات التحدي، الرابطة ، والفريق ستبقى كما هي .",
|
||||
"rebirthInList3": "Gems, backer tiers, and contributor levels remain.",
|
||||
"rebirthInList4": "Items obtained from Gems or drops (such as pets and mounts) remain.",
|
||||
"rebirthEarnAchievement": "ستحقق ايضا انجازا لبدء مغامرة جديدة",
|
||||
"beReborn": "أولد من جديد",
|
||||
"rebirthAchievement": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is <%= level %>. To stack this Achievement, begin your next new adventure when you've reached an even higher Level!",
|
||||
"rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!",
|
||||
"rebirthBegan": "إبدأ مغامرة جديدة",
|
||||
@@ -23,7 +10,5 @@
|
||||
"rebirthOrbNoLevel": "Used an Orb of Rebirth to start over.",
|
||||
"rebirthPop": "Instantly restart your character as a Level 1 Warrior while retaining achievements, collectibles, and equipment. Your tasks and their history will remain but they will be reset to yellow. Your streaks will be removed except from challenge tasks. Your Gold, Experience, Mana, and the effects of all Skills will be removed. All of this will take effect immediately. For more information, see the wiki's <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a> page.",
|
||||
"rebirthName": "Orb of Rebirth",
|
||||
"reborn": "Reborn, max level <%= reLevel %>",
|
||||
"confirmReborn": "Are you sure?",
|
||||
"rebirthComplete": "You have been reborn!"
|
||||
}
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"limitedEdition": "Limited Edition",
|
||||
"seasonalEdition": "Seasonal Edition",
|
||||
"winterColors": "Winter Colors",
|
||||
"annoyingFriends": "Annoying Friends",
|
||||
"annoyingFriendsText": "Got snowballed <%= count %> times by party members.",
|
||||
"alarmingFriends": "Alarming Friends",
|
||||
@@ -61,7 +58,6 @@
|
||||
"nye2": "Happy New Year! May you earn many a Perfect Day.",
|
||||
"nye3": "Happy New Year! May your To-Do list stay short and sweet.",
|
||||
"nye4": "Happy New Year! May you not get attacked by a raging Hippogriff.",
|
||||
"holidayCard": "Received a holiday card!",
|
||||
"mightyBunnySet": "Mighty Bunny (Warrior)",
|
||||
"magicMouseSet": "Magic Mouse (Mage)",
|
||||
"lovingPupSet": "Loving Pup (Healer)",
|
||||
|
||||
@@ -3,16 +3,12 @@
|
||||
"earnedRewardForDevotion": "You have earned <%= reward %> for being committed to improving your life.",
|
||||
"nextRewardUnlocksIn": "Check-ins until your next prize: <%= numberOfCheckinsLeft %>",
|
||||
"awesome": "Awesome!",
|
||||
"totalCount": "<%= count %> total count",
|
||||
"countLeft": "Check-ins until next reward: <%= count %>",
|
||||
"incentivesDescription": "When it comes to building habits, consistency is key. Each day you check-in you get closer to a prize.",
|
||||
"totalCheckins": "<%= count %> Check-Ins",
|
||||
"checkinEarned": "Your Check-In Counter went up!",
|
||||
"unlockedCheckInReward": "You unlocked a Check-In Prize!",
|
||||
"totalCheckinsTitle": "Total Check-Ins",
|
||||
"checkinProgressTitle": "Progress until next",
|
||||
"incentiveBackgroundsUnlockedWithCheckins": "Locked Plain Backgrounds will unlock with Daily Check-Ins.",
|
||||
"checkinReceivedAllRewardsMessage": "You have received all the Check-In prizes available! Congratulations!",
|
||||
"oneOfAllPetEggs": "one of each standard Pet Egg",
|
||||
"twoOfAllPetEggs": "two of each standard Pet Egg",
|
||||
"threeOfAllPetEggs": "three of each standard Pet Egg",
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"habiticaBackSoon": "Don't worry, Habitica will be back soon!",
|
||||
"importantMaintenance": "We are doing important maintenance that we estimate will last until 10pm Pacific Time (5am UTC).",
|
||||
"maintenance": "Maintenance",
|
||||
"maintenanceMoreInfo": "Want more information about the maintenance? <%= linkStart %>Check out our info page<%= linkEnd %>.",
|
||||
"noDamageKeepStreaks": "You will NOT take damage or lose streaks!",
|
||||
"thanksForPatience": "Thanks for your patience!",
|
||||
"twitterMaintenanceUpdates": "For the most recent updates, watch our <a href='https://twitter.com/habitica'>Twitter</a>, where we will be posting status information.",
|
||||
"veteranPetAward": "At the end, you will receive a Veteran pet!",
|
||||
|
||||
"maintenanceInfoTitle": "Information about Upcoming Maintenance to Habitica",
|
||||
"maintenanceInfoWhat": "What is happening?",
|
||||
"maintenanceInfoWhatText": "On May 21, Habitica will be down for maintenance for most of the day. You will not take any damage or have your account harmed during that weekend, even if you can’t log in to check off your Dailies in time! We will be working very hard to make the downtime as short as possible, and will be posting regular updates on <a href='https://twitter.com/habitica' target='_blank'>our Twitter account</a>. At the end of the downtime, to thank everyone for their patience, you will all receive a rare pet!",
|
||||
"maintenanceInfoWhy": "Why is this happening?",
|
||||
"maintenanceInfoWhyText": "For the past several months, we have been thoroughly revamping Habitica behind-the-scenes. Specifically, we have rewritten the API. While it may not look much different on the surface, it’s a whole new world underneath. This will allow us WAY more flexibility when we want to build features in the future, and lead to improved performance!",
|
||||
"maintenanceInfoTechDetails": "Want more details on the technical side of the process? Visit <a href='http://devs.habitica.com/' target='_blank'>The Forge, our dev blog</a>.",
|
||||
"maintenanceInfoMore": "More Information",
|
||||
"maintenanceInfoAccountChanges": "What changes will I see to my account after the rewrite is complete?",
|
||||
"maintenanceInfoAccountChangesText": "At first, there won’t be any notable changes aside from performance improvements for features such as Challenges. If you notice any changes that shouldn’t be there, email us at <%= hrefTechAssistanceEmail %> and we will investigate them for you!",
|
||||
"maintenanceInfoAddFeatures": "What kind of features will this allow Habitica to add?",
|
||||
"maintenanceInfoAddFeaturesText": "Completing this rewrite will allow us to start building out improved chat and Guilds, plans for organizations and families, and additional productivity features like Monthlies and the ability to record yesterday’s activity! Those are all involved features on their own, so it will take time to build them, but until we were finished with this rewrite, there was no way we could start them.",
|
||||
"maintenanceInfoHowLong": "How long will the maintenance take?",
|
||||
"maintenanceInfoHowLongText": "We have to migrate tasks and data for all 1.3 million Habitica users -- not an easy task! We anticipate that it will take place between approximately 1pm Pacific Time (8pm UTC) and 10pm Pacific Time (5am UTC). Rest assured that we’re doing everything we can to make it go as quickly as possible! You can follow <a href='https://twitter.com/habitica' target='_blank'>updates on our Twitter</a>.",
|
||||
"maintenanceInfoStatsAffected": "How will my Dailies, Streaks, Buffs, and Quests be affected?",
|
||||
"maintenanceInfoStatsAffectedText1": "You will NOT take any damage or lose any streaks that weekend, but otherwise, your day will reset normally! Dailies that you checked will become unchecked, buffs will reset, etc. If you are in a Collection Quest, you will still find items. If you are in a Boss Battle, you will still deal damage to the Boss, but the Boss will not deal damage to you. (Even monsters need a break!)",
|
||||
"maintenanceInfoStatsAffectedText2": "After a lot of thought, our team concluded that this was the most fair way to handle the fact that many users will not be able to check off their Dailies normally during the maintenance. We’re sorry for any inconvenience this causes!",
|
||||
"maintenanceInfoSeeTasks": "What if I need to see my task list?",
|
||||
"maintenanceInfoSeeTasksText": "If you know that you will need to see your task list on Saturday to remind yourself what you have to do, we recommend that before the maintenance begins, you take a screenshot of your tasks so that you can use it as a reference.",
|
||||
"maintenanceInfoRarePet": "What kind of rare pet will I receive?",
|
||||
"maintenanceInfoRarePetText": "To thank you for your patience during the downtime, everyone will get a rare Veteran Pet. If you’ve never received a Veteran Pet before, you will receive a Veteran Wolf. If you already have a Veteran Wolf, you will receive a Veteran Tiger. And if you already have a Veteran Wolf and a Veteran Tiger, you will receive a never-before-seen Veteran pet! After the migration is completed, it may take several hours for your pet to show up, but never fear, everyone will get one.",
|
||||
"maintenanceInfoWho": "Who worked on this massive project?",
|
||||
"maintenanceInfoWhoText": "We’re glad you asked! It was spearheaded by our amazing contributor paglias, with lots of help from Blade, TheHollidayInn, SabreCat, Victor Pudeyev, TheUnknown, and Alys.",
|
||||
"maintenanceInfoTesting": "The new version was also tirelessly tested by a bunch of our amazing open-source volunteers. Thank you -- we couldn't have done this without you."
|
||||
}
|
||||
@@ -1,20 +1,3 @@
|
||||
{
|
||||
"merch" : "Merchandise",
|
||||
"merchandiseDescription": "Looking for t-shirts, mugs, or stickers to show off your Habitica pride? Click here!",
|
||||
|
||||
"merch-teespring-summary" : "Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-goto" : "Get a Habitica T-shirt",
|
||||
|
||||
"merch-teespring-mug-summary" : "Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-mug-goto" : "Get a Habitica Mug",
|
||||
|
||||
"merch-teespring-eu-summary" : "EUROPEAN VERSION : Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-eu-goto" : "Get a Habitica T-shirt (EU)",
|
||||
|
||||
"merch-teespring-mug-eu-summary" : "EUROPEAN VERSION : Teespring is a platform that makes it easy for anyone to create and sell high-quality products people love, with no cost or risk.",
|
||||
"merch-teespring-mug-eu-goto" : "Get a Habitica Mug (EU)",
|
||||
|
||||
"merch-stickermule-summary" : "Stick proud Melior wherever you (or someone else) need a reminder of both present and future accomplishments!",
|
||||
"merch-stickermule-goto" : "Get Habitica stickers"
|
||||
|
||||
"merch" : "Merchandise"
|
||||
}
|
||||
|
||||
@@ -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,6 +1,6 @@
|
||||
{
|
||||
"jsDisabledHeading": "На жаль, JavaScript у вашым браўзэры адключаны",
|
||||
|
||||
"jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
|
||||
"jsDisabledText": "Habitica can't properly display the site without it!",
|
||||
|
||||
"jsDisabledLink": "Please enable JavaScript to continue!"
|
||||
}
|
||||
@@ -6,7 +6,6 @@
|
||||
"welcomeBack": "Welcome back!",
|
||||
"justin": "Justin",
|
||||
"justinIntroMessage1": "Hello there! You must be new here. My name is <strong>Justin</strong>, and I'll be your guide in Habitica.",
|
||||
"justinIntroMessage2": "To start, you'll need to create an avatar.",
|
||||
"justinIntroMessage3": "Great! Now, what are you interested in working on throughout this journey?",
|
||||
"justinIntroMessageUsername": "Before we begin, let’s figure out what to call you. Below you’ll find a display name and username I’ve generated for you. After you’ve picked a display name and username, we’ll get started by creating an avatar!",
|
||||
"justinIntroMessageAppearance": "So how would you like to look? Don’t worry, you can change this later.",
|
||||
@@ -15,7 +14,6 @@
|
||||
"next": "Next",
|
||||
"randomize": "Randomize",
|
||||
"mattBoch": "Matt Boch",
|
||||
"mattShall": "Shall I bring you your steed, <%= name %>? Once you've fed a pet enough food to turn it into a mount, it will appear here. Click a mount to saddle up!",
|
||||
"mattBochText1": "Welcome to the Stable! I'm Matt, the beast master. Starting at level 3, you will find eggs and potions to hatch pets with. When you hatch a pet in the Market, it will appear here! Click a pet's image to add it to your avatar. Feed them with the food you find after level 3, and they'll grow into hardy mounts.",
|
||||
"welcomeToTavern": "Welcome to The Tavern!",
|
||||
"sleepDescription": "Need a break? Check into Daniel's Inn to pause some of Habitica's more difficult game mechanics:",
|
||||
@@ -28,20 +26,9 @@
|
||||
"staffAndModerators": "Staff and Moderators",
|
||||
"communityGuidelinesIntro": "Habitica tries to create a welcoming environment for users of all ages and backgrounds, especially in public spaces like the Tavern. If you have any questions, please consult our <a href='/static/community-guidelines' target='_blank'>Community Guidelines</a>.",
|
||||
"acceptCommunityGuidelines": "I agree to follow the Community Guidelines",
|
||||
"daniel": "Daniel",
|
||||
"danielText": "Welcome to the Tavern! Stay a while and meet the locals. If you need to rest (vacation? illness?), I'll set you up at the Inn. While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off.",
|
||||
"danielText2": "Be warned: If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies! Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn.",
|
||||
"danielTextBroken": "Welcome to the Tavern... I guess... If you need to rest, I'll set you up at the Inn... While checked-in, your Dailies won't hurt you at the day's end, but you can still check them off... if you have the energy...",
|
||||
"danielText2Broken": "Oh... If you are participating in a boss quest, the boss will still damage you for your party mates' missed Dailies... Also, your own damage to the Boss (or items collected) will not be applied until you check out of the Inn...",
|
||||
"worldBossEvent": "World Boss Event",
|
||||
"worldBossDescription": "World Boss Description",
|
||||
"alexander": "Alexander the Merchant",
|
||||
"welcomeMarket": "Welcome to the Market! Buy hard-to-find eggs and potions! Sell your extras! Commission useful services! Come see what we have to offer.",
|
||||
"welcomeMarketMobile": "Welcome to the Market! Buy hard-to-find eggs and potions! Come see what we have to offer.",
|
||||
"displayItemForGold": "Do you want to sell a <strong><%= itemType %></strong>?",
|
||||
"displayEggForGold": "Do you want to sell a <strong><%= itemType %> Egg</strong>?",
|
||||
"displayPotionForGold": "Do you want to sell a <strong><%= itemType %> Potion</strong>?",
|
||||
"sellForGold": "Sell it for <%= gold %> Gold",
|
||||
"howManyToSell": "How many would you like to sell?",
|
||||
"yourBalance": "Your balance",
|
||||
"sell": "Sell",
|
||||
@@ -72,10 +59,7 @@
|
||||
"unpinnedItem": "You unpinned <%= item %>! It will no longer display in your Rewards column.",
|
||||
"cannotUnpinArmoirPotion": "The Health Potion and Enchanted Armoire cannot be unpinned.",
|
||||
"purchasedItem": "You bought <%= itemName %>",
|
||||
"ian": "Ian",
|
||||
"ianText": "Welcome to the Quest Shop! Here you can use Quest Scrolls to battle monsters with your friends. Be sure to check out our fine array of Quest Scrolls for purchase on the right!",
|
||||
"ianTextMobile": "Can I interest you in some quest scrolls? Activate them to battle monsters with your Party!",
|
||||
"ianBrokenText": "Welcome to the Quest Shop... Here you can use Quest Scrolls to battle monsters with your friends... Be sure to check out our fine array of Quest Scrolls for purchase on the right...",
|
||||
"featuredQuests": "Featured Quests!",
|
||||
"cannotBuyItem": "You can't buy this item.",
|
||||
"mustPurchaseToSet": "Must purchase <%= val %> to set it on <%= key %>.",
|
||||
@@ -97,14 +81,8 @@
|
||||
"newBaileyUpdate": "New Bailey Update!",
|
||||
"tellMeLater": "Tell Me Later",
|
||||
"dismissAlert": "Dismiss This Alert",
|
||||
"donateText1": "Adds 20 Gems to your account. Gems are used to buy special in-game items, such as shirts and hairstyles.",
|
||||
"donateText2": "Help support Habitica",
|
||||
"donateText3": "Habitica is an open source project that depends on our users for support. The money you spend on gems helps us keep the servers running, maintain a small staff, develop new features, and provide incentives for our volunteer programmers. Thank you for your generosity!",
|
||||
"donationDesc": "20 Gems, Donation to Habitica",
|
||||
"payWithCard": "Pay with Card",
|
||||
"payNote": "Note: PayPal sometimes takes a long time to clear. We recommend paying with card.",
|
||||
"card": "Credit Card (using Stripe)",
|
||||
"amazonInstructions": "Click the button to pay using Amazon Payments",
|
||||
"paymentMethods": "Purchase using",
|
||||
"paymentSuccessful": "Your payment was successful!",
|
||||
"paymentYouReceived": "You received:",
|
||||
@@ -114,25 +92,10 @@
|
||||
"success": "Success!",
|
||||
"classGear": "Class Gear",
|
||||
"classGearText": "Congratulations on choosing a class! I've added your new basic weapon to your inventory. Take a look below to equip it!",
|
||||
"classStats": "These are your class's Stats; they affect the game-play. Each time you level up, you get one Point to allocate to a particular Stat. Hover over each Stat for more information.",
|
||||
"autoAllocate": "Auto Allocate",
|
||||
"autoAllocateText": "If 'Automatic Allocation' is selected, your avatar gains Stats automatically based on your tasks' Stats, which you can find in <strong>TASK > Edit > Advanced Settings > Stat Allocation</strong>. Eg, if you hit the gym often, and your 'Gym' Daily is set to 'Strength', you'll gain Strength automatically.",
|
||||
"spells": "Skills",
|
||||
"spellsText": "You can now unlock class-specific skills. You'll see your first at level 11. Your mana replenishes 10 points per day, plus 1 point per completed <a target='_blank' href='http://habitica.wikia.com/wiki/Todos'>To-Do</a>.",
|
||||
"skillsTitle": "Skills",
|
||||
"toDo": "To-Do",
|
||||
"moreClass": "For more information on the class-system, see <a href='http://habitica.wikia.com/wiki/Class_System' target='_blank'>Wikia</a>.",
|
||||
"tourWelcome": "Welcome to Habitica! This is your To-Do list. Check off a task to proceed!",
|
||||
"tourExp": "Great job! Checking off a task gives you Experience and Gold!",
|
||||
"tourDailies": "This column is for Daily tasks. To proceed, enter a task you should do every day! <strong>Sample Dailies</strong>: <strong>Make Bed</strong>, <strong>Floss</strong>, <strong>Check Work Email</strong>",
|
||||
"tourCron": "Splendid! Your Dailies will reset every day.",
|
||||
"tourHP": "Watch out! If you don't complete a Daily by midnight, it will hurt you!",
|
||||
"tourHabits": "This column is for good and bad Habits that you do many times a day! To proceed, click the pencil to edit the names, then click the checkmark to save.",
|
||||
"tourStats": "Good Habits add Experience and Gold! Bad Habits remove health.",
|
||||
"tourGP": "To proceed, buy the Training Sword with the gold you just earned!",
|
||||
"tourAvatar": "<strong>Customize Your Avatar</strong><ul><li>Your avatar represents you.</li><li>Customize now, or return later.</li><li>Your avatar starts plain until you've earned Equipment!</li></ul>",
|
||||
"tourScrollDown": "Be sure to scroll all the way down to see all the options! Click on your avatar again to return to the tasks page.",
|
||||
"tourMuchMore": "When you're done with tasks, you can form a Party with friends, chat in the shared-interest Guilds, join Challenges, and more!",
|
||||
"tourStatsPage": "This is your Stats page! Earn achievements by completing the listed tasks.",
|
||||
"tourTavernPage": "Welcome to the Tavern, an all-ages chat room! You can keep your Dailies from hurting you in case of illness or travel by clicking \"Pause Damage\". Come say hi!",
|
||||
"tourPartyPage": "Your Party will help you stay accountable. Invite friends to unlock a Quest Scroll!",
|
||||
@@ -147,16 +110,6 @@
|
||||
"tourOkay": "Okay!",
|
||||
"tourAwesome": "Awesome!",
|
||||
"tourSplendid": "Splendid!",
|
||||
"tourNifty": "Nifty!",
|
||||
"tourAvatarProceed": "Show me my tasks!",
|
||||
"tourToDosBrief": "<strong>To-Do List</strong><ul><li>Check off To-Dos to earn Gold & Experience!</li><li>To-Dos never make your avatar lose Health.</li></ul>",
|
||||
"tourDailiesBrief": "<strong>Daily Tasks</strong><ul><li>Dailies repeat every day.</li><li>You lose Health if you skip Dailies.</li></ul>",
|
||||
"tourDailiesProceed": "I'll be careful!",
|
||||
"tourHabitsBrief": "<strong>Good & Bad Habits</strong><ul><li>Good Habits award Gold & Experience.</li><li>Bad Habits make you lose Health.</li></ul>",
|
||||
"tourHabitsProceed": "Makes sense!",
|
||||
"tourRewardsBrief": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsArmoire": "<strong>Reward List</strong><ul><li>Spend your hard-earned Gold here!</li><li>Purchase Equipment for your avatar, get a random prize from the Enchanted Armoire, or set custom Rewards.</li></ul>",
|
||||
"tourRewardsProceed": "That's all!",
|
||||
"welcomeToHabit": "Welcome to Habitica!",
|
||||
"welcome1": "Create a basic avatar.",
|
||||
"welcome1notes": "This avatar will represent you as you progress.",
|
||||
@@ -164,8 +117,6 @@
|
||||
"welcome2notes": "How well you do on your real-life tasks will control how well you do in the game!",
|
||||
"welcome3": "Progress in life and the game!",
|
||||
"welcome3notes": "As you improve your life, your avatar will level up and unlock pets, quests, equipment, and more!",
|
||||
"welcome4": "Avoid bad habits that drain Health (HP), or your avatar will die!",
|
||||
"welcome5": "Now you'll customize your avatar and set up your tasks...",
|
||||
"imReady": "Enter Habitica",
|
||||
"limitedOffer": "Available until <%= date %>"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -1,19 +1,6 @@
|
||||
{
|
||||
"rebirthNew": "Rebirth: New Adventure Available!",
|
||||
"rebirthUnlock": "You've unlocked Rebirth! This special Market item allows you to begin a new game at level 1 while keeping your tasks, achievements, pets, and more. Use it to breathe new life into Habitica if you feel you've achieved it all, or to experience new features with the fresh eyes of a beginning character!",
|
||||
"rebirthBegin": "Rebirth: Begin a New Adventure",
|
||||
"rebirthStartOver": "Rebirth starts your character over from Level 1.",
|
||||
"rebirthAdvList1": "You return to full Health.",
|
||||
"rebirthAdvList2": "You have no Experience or Gold.",
|
||||
"rebirthAdvList3": "Your Habits, Dailies, and To-Dos reset to yellow, and streaks reset, except for challenge tasks.",
|
||||
"rebirthAdvList4": "You have the starting class of Warrior until you earn a new class.",
|
||||
"rebirthInherit": "Your new character inherits a few things from their predecessor:",
|
||||
"rebirthInList1": "Tasks, history, equipment, and settings remain.",
|
||||
"rebirthInList2": "Challenge, Guild, and Party memberships remain.",
|
||||
"rebirthInList3": "Gems, backer tiers, and contributor levels remain.",
|
||||
"rebirthInList4": "Items obtained from Gems or drops (such as pets and mounts) remain.",
|
||||
"rebirthEarnAchievement": "You also earn an Achievement for beginning a new adventure!",
|
||||
"beReborn": "Be Reborn",
|
||||
"rebirthAchievement": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is <%= level %>. To stack this Achievement, begin your next new adventure when you've reached an even higher Level!",
|
||||
"rebirthAchievement100": "You've begun a new adventure! This is Rebirth <%= number %> for you, and the highest Level you've attained is 100 or higher. To stack this Achievement, begin your next new adventure when you've reached at least 100!",
|
||||
"rebirthBegan": "Began a New Adventure",
|
||||
@@ -23,7 +10,5 @@
|
||||
"rebirthOrbNoLevel": "Used an Orb of Rebirth to start over.",
|
||||
"rebirthPop": "Instantly restart your character as a Level 1 Warrior while retaining achievements, collectibles, and equipment. Your tasks and their history will remain but they will be reset to yellow. Your streaks will be removed except from challenge tasks. Your Gold, Experience, Mana, and the effects of all Skills will be removed. All of this will take effect immediately. For more information, see the wiki's <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>Orb of Rebirth</a> page.",
|
||||
"rebirthName": "Orb of Rebirth",
|
||||
"reborn": "Reborn, max level <%= reLevel %>",
|
||||
"confirmReborn": "Are you sure?",
|
||||
"rebirthComplete": "You have been reborn!"
|
||||
}
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"limitedEdition": "Ограничена серия",
|
||||
"seasonalEdition": "Сезонно издание",
|
||||
"winterColors": "Зимни цветове",
|
||||
"annoyingFriends": "Досадни приятели",
|
||||
"annoyingFriendsText": "Ударен(а) със снежна топка <%= count %> пъти от членовете на групата.",
|
||||
"alarmingFriends": "Обезпокоителни приятели",
|
||||
@@ -61,7 +58,6 @@
|
||||
"nye2": "Честита Нова Година! С пожелания за много перфектни дни.",
|
||||
"nye3": "Честита Нова Година! Нека списъкът ти със задачи бъде кратък и приятен.",
|
||||
"nye4": "Честита Нова Година! Дано не те нападат разярени хипогрифи.",
|
||||
"holidayCard": "Получихте празнична картичка!",
|
||||
"mightyBunnySet": "Могъщ заек (воин)",
|
||||
"magicMouseSet": "Магическа мишка (магьосник)",
|
||||
"lovingPupSet": "Любящо кученце (лечител)",
|
||||
|
||||
@@ -3,16 +3,12 @@
|
||||
"earnedRewardForDevotion": "Получихте <%= reward %> за усърдието си в подобряването на живота си.",
|
||||
"nextRewardUnlocksIn": "Брой отчитания до следващата награда: <%= numberOfCheckinsLeft %>",
|
||||
"awesome": "Страхотно!",
|
||||
"totalCount": "Общо: <%= count %>",
|
||||
"countLeft": "Брой отчитания до следващата награда: <%= count %>",
|
||||
"incentivesDescription": "Когато става въпрос за изграждане на навици, ключът е в постоянството. Всеки ден, в който се отчетете, Ви доближава до наградата.",
|
||||
"totalCheckins": "<%= count %> отчитания",
|
||||
"checkinEarned": "Броячът на отчитанията Ви се увеличи!",
|
||||
"unlockedCheckInReward": "Отключихте награда за отчитане!",
|
||||
"totalCheckinsTitle": "Общ брой отчитания",
|
||||
"checkinProgressTitle": "Напредък до следващата награда",
|
||||
"incentiveBackgroundsUnlockedWithCheckins": "Заключените едноцветни фонови изображения ще се отключат чрез ежедневните Ви отчитания.",
|
||||
"checkinReceivedAllRewardsMessage": "Получили сте всички награди за отчитане! Поздравления!",
|
||||
"oneOfAllPetEggs": "по един брой от всяко обикновено яйце за любимец",
|
||||
"twoOfAllPetEggs": "по два броя от всяко обикновено яйце за любимец",
|
||||
"threeOfAllPetEggs": "по три броя от всяко обикновено яйце за любимец",
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"habiticaBackSoon": "Не се притеснявайте, Хабитика ще се върне скоро!",
|
||||
"importantMaintenance": "Провеждаме важна профилактика, която би трябвало да приключи до 7ч. източноевропейско време.",
|
||||
"maintenance": "Профилактика",
|
||||
"maintenanceMoreInfo": "Искате повече информация относно профилактиката? <%= linkStart %>Вижте страницата с информацията<%= linkEnd %>.",
|
||||
"noDamageKeepStreaks": "НЯМА да получите щети или да нарушите сериите си!",
|
||||
"thanksForPatience": "Благодарим за търпението Ви!",
|
||||
"twitterMaintenanceUpdates": "За актуална информация, следете нашия <a href='https://twitter.com/habitica'>Туитър</a>, където ще публикуваме всичко важно.",
|
||||
"veteranPetAward": "След края ще получите любимец ветеран!",
|
||||
|
||||
"maintenanceInfoTitle": "Информация относно предстоящата профилактика на Хабитика",
|
||||
"maintenanceInfoWhat": "Какво се случва?",
|
||||
"maintenanceInfoWhatText": "На 21 май Хабитика ще бъде недостъпна почти целия ден поради профилактика. През това време нито ще получавате щети, нито профилът Ви ще бъде наранен, дори и да не можете да влезете, за да отметнете ежедневните си задачи навреме! Ние ще се постараем времето, в което Хабитика е недостъпна, да бъде възможно най-кратко, и ще публикуваме актуална информация за напредъка си в <a href='https://twitter.com/habitica' target='_blank'>нашия профил в Туитър</a>. За да благодарим на всички за търпението, след края на профилактиката всички ще получат рядък любимец!",
|
||||
"maintenanceInfoWhy": "Защо се случва това?",
|
||||
"maintenanceInfoWhyText": "През последните няколко месеца ние извършвахме невидимо за потребителите преустройство на Хабитика. По-специално, пренаписахме своя ППИ. Въпреки че резултатите може да не са видими, вътрешно системата е много по-различна. Това ще ни осигури ОГРОМНА гъвкавост при разработването на нови функционалности в бъдеще, както и ще подобри производителността!",
|
||||
"maintenanceInfoTechDetails": "Искате ли да научите повече относно техническите подробности? Посетете <a href='http://devs.habitica.com/' target='_blank'>„Ковачницата“, нашия блог за разработката</a>.",
|
||||
"maintenanceInfoMore": "Още информация",
|
||||
"maintenanceInfoAccountChanges": "Какви промени ще видя в профила си след като пренаписването приключи?",
|
||||
"maintenanceInfoAccountChangesText": "Отначало няма да има много забележими промени, освен подобренията по производителността на различни функционалности, като например предизвикателствата. Ако забележите промени, които не сте очаквали, моля, пишете ни на <%= hrefTechAssistanceEmail %> и ще проучим нещата!",
|
||||
"maintenanceInfoAddFeatures": "Разработката на какви функционалности в Хабитика ще улесни това?",
|
||||
"maintenanceInfoAddFeaturesText": "След завършването на това пренаписване, ние ще можем да започнем работа по подобряване на чата и гилдиите, да създадем планове за организации и семейства, както и допълнителни функционалности за продуктивност, като ежемесечни задачи и възможността за запис на вчерашната дейност! Това са отделни функционалности, така че всяка от тях ще отнеме време, но преди да приключим с това пренаписване, нямаше как дори да започнем работа по тях.",
|
||||
"maintenanceInfoHowLong": "Колко време ще продължи профилактиката?",
|
||||
"maintenanceInfoHowLongText": "Трябва да прехвърлим данните за 1,3 милиона потребители на Хабитика, а това не е лесна задача! Смятаме, че профилактиката ще продължи от 23 ч. българско време (20 ч. КУВ) до 8 ч. българско време (5 ч. КУВ). Не се притеснявайте, ние ще се постараем да приключим колкото можем по-бързо! Можете да следите <a href='https://twitter.com/habitica' target='_blank'>актуалната информация в Туитър</a>.",
|
||||
"maintenanceInfoStatsAffected": "Как ще повлияе това на моите ежедневни задачи, серии, подсилки и мисии?",
|
||||
"maintenanceInfoStatsAffectedText1": "НЯМА да получите щети, нито ще нарушите сериите си по време на профилактиката, но всичко останало ще работи нормално! Ежедневните задачи, които сте отбелязали като изпълнени, ще бъдат върнати в неизпълнени състояние, подсилките ще бъдат анулирани и т.н. Ако изпълнявате събираческа мисия, пак ще намирате предмети. Ако се биете с главатар, ще му нанасяте щети, но той няма да Ви наранява. (Дори чудовищата се нуждаят от почивка!)",
|
||||
"maintenanceInfoStatsAffectedText2": "След дълго обмисляне, екипът ни реши, че това е най-честният подход към факта, че много потребители няма да могат да отметнат ежедневните си задачи по време на профилактиката. Съжаляваме за неудобствата, които това може да създаде!",
|
||||
"maintenanceInfoSeeTasks": "Ами ако трябва да погледна списъка си със задачи?",
|
||||
"maintenanceInfoSeeTasksText": "Ако знаете, че ще трябва да погледнете списъка си със задачи в събота, за да си припомните какво трябва да направите, препоръчваме Ви преди началото на профилактиката да направите снимка на екрана си, която да ползвате вместо уеб сайта.",
|
||||
"maintenanceInfoRarePet": "Какъв рядък любимец ще получа?",
|
||||
"maintenanceInfoRarePetText": "Като благодарност за търпението Ви по време на профилактиката, всички ще получат рядък любимец ветеран. Ако досега не сте имали такъв, ще получите вълк ветеран. Ако вече имате вълк ветеран, ще получите тигър ветеран. А ако вече имате и двата, ще получите любимец ветеран, който никой не е виждал досега! След като приключи прехвърлянето, може да минат няколко часа, докато получите любимеца си, но не се притеснявайте, всички ще получат такъв.",
|
||||
"maintenanceInfoWho": "Кой е работил по този огромен проект?",
|
||||
"maintenanceInfoWhoText": "Радваме се, че попитахте! Ръководител на този проект беше нашият невероятен сътрудник paglias, с много помощ от Blade, TheHollidayInn, SabreCat, Victor Pudeyev, TheUnknown и Alys.",
|
||||
"maintenanceInfoTesting": "Новата версия също така беше изпитана от много неуморни доброволци от общността ни. Благодарим Ви! Нямаше да се справим без Вас."
|
||||
}
|
||||
@@ -1,20 +1,3 @@
|
||||
{
|
||||
"merch" : "Рекламни материали",
|
||||
"merchandiseDescription": "Търсите тениски, чаши или лепенки, с които да показвате гордостта от постиженията си в Хабитика? Щракнете тук!",
|
||||
|
||||
"merch-teespring-summary" : "„Teespring“ е система, чрез която всеки може лесно да създава и продава висококачествени продукти, които хората ще обикнат, безплатно и без рискове.",
|
||||
"merch-teespring-goto" : "Вземете тениска на Хабитика",
|
||||
|
||||
"merch-teespring-mug-summary" : "„Teespring“ е система, чрез която всеки може лесно да създава и продава висококачествени продукти, които хората ще обикнат, безплатно и без рискове.",
|
||||
"merch-teespring-mug-goto" : "Вземете чаша на Хабитика",
|
||||
|
||||
"merch-teespring-eu-summary" : "ЕВРОПЕЙСКА ВЕРСИЯ : „Teespring“ е система, чрез която всеки може лесно да създава и продава висококачествени продукти, които хората ще обикнат, безплатно и без рискове.",
|
||||
"merch-teespring-eu-goto" : "Вземете тениска на Хабитика (ЕС)",
|
||||
|
||||
"merch-teespring-mug-eu-summary" : "ЕВРОПЕЙСКА ВЕРСИЯ : „Teespring“ е система, чрез която всеки може лесно да създава и продава висококачествени продукти, които хората ще обикнат, безплатно и без рискове.",
|
||||
"merch-teespring-mug-eu-goto" : "Вземете чаша на Хабитика (ЕС)",
|
||||
|
||||
"merch-stickermule-summary" : "Гордо си залепете лепенка, когато имате (или някой друг има) нужда от напомняне на сегашните и бъдещите Ви постижения!",
|
||||
"merch-stickermule-goto" : "Вземете лепенки на Хабитика"
|
||||
|
||||
"merch" : "Рекламни материали"
|
||||
}
|
||||
|
||||
@@ -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": "Идентификаторите на известията са задължителни.",
|
||||
|
||||