Merge branch 'develop' into sabrecat/gems-multi-event

This commit is contained in:
SabreCat
2022-09-21 16:03:57 -05:00
65 changed files with 1359 additions and 842 deletions

1091
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
"main": "./website/server/index.js", "main": "./website/server/index.js",
"dependencies": { "dependencies": {
"@babel/core": "^7.18.13", "@babel/core": "^7.18.13",
"@babel/preset-env": "^7.18.10", "@babel/preset-env": "^7.19.1",
"@babel/register": "^7.18.9", "@babel/register": "^7.18.9",
"@google-cloud/trace-agent": "^5.1.6", "@google-cloud/trace-agent": "^5.1.6",
"@parse/node-apn": "^5.1.3", "@parse/node-apn": "^5.1.3",
@@ -13,7 +13,7 @@
"accepts": "^1.3.8", "accepts": "^1.3.8",
"amazon-payments": "^0.2.9", "amazon-payments": "^0.2.9",
"amplitude": "^6.0.0", "amplitude": "^6.0.0",
"apidoc": "^0.52.0", "apidoc": "^0.53.0",
"apple-auth": "^1.0.7", "apple-auth": "^1.0.7",
"bcrypt": "^5.0.1", "bcrypt": "^5.0.1",
"body-parser": "^1.20.0", "body-parser": "^1.20.0",
@@ -61,7 +61,7 @@
"paypal-rest-sdk": "^1.8.1", "paypal-rest-sdk": "^1.8.1",
"pp-ipn": "^1.1.0", "pp-ipn": "^1.1.0",
"ps-tree": "^1.0.0", "ps-tree": "^1.0.0",
"rate-limiter-flexible": "^2.3.7", "rate-limiter-flexible": "^2.3.10",
"redis": "^3.1.2", "redis": "^3.1.2",
"regenerator-runtime": "^0.13.9", "regenerator-runtime": "^0.13.9",
"remove-markdown": "^0.5.0", "remove-markdown": "^0.5.0",

View File

@@ -13,11 +13,6 @@ function getUser () {
username: 'username', username: 'username',
email: 'email@email', email: 'email@email',
}, },
facebook: {
emails: [{
value: 'email@facebook',
}],
},
google: { google: {
emails: [{ emails: [{
value: 'email@google', value: 'email@google',
@@ -62,30 +57,12 @@ describe('emails', () => {
expect(data).to.have.property('canSend', true); expect(data).to.have.property('canSend', true);
}); });
it('returns correct user data [facebook users]', () => {
const attachEmail = requireAgain(pathToEmailLib);
const { getUserInfo } = attachEmail;
const user = getUser();
delete user.profile.name;
delete user.auth.local.email;
delete user.auth.google.emails;
delete user.auth.apple.emails;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
expect(data).to.have.property('name', user.auth.local.username);
expect(data).to.have.property('email', user.auth.facebook.emails[0].value);
expect(data).to.have.property('_id', user._id);
expect(data).to.have.property('canSend', true);
});
it('returns correct user data [google users]', () => { it('returns correct user data [google users]', () => {
const attachEmail = requireAgain(pathToEmailLib); const attachEmail = requireAgain(pathToEmailLib);
const { getUserInfo } = attachEmail; const { getUserInfo } = attachEmail;
const user = getUser(); const user = getUser();
delete user.profile.name; delete user.profile.name;
delete user.auth.local.email; delete user.auth.local.email;
delete user.auth.facebook.emails;
delete user.auth.apple.emails; delete user.auth.apple.emails;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
@@ -103,7 +80,6 @@ describe('emails', () => {
delete user.profile.name; delete user.profile.name;
delete user.auth.local.email; delete user.auth.local.email;
delete user.auth.google.emails; delete user.auth.google.emails;
delete user.auth.facebook.emails;
const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); const data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
@@ -118,7 +94,6 @@ describe('emails', () => {
const { getUserInfo } = attachEmail; const { getUserInfo } = attachEmail;
const user = getUser(); const user = getUser();
delete user.auth.local.email; delete user.auth.local.email;
delete user.auth.facebook;
delete user.auth.google; delete user.auth.google;
delete user.auth.apple; delete user.auth.apple;

View File

@@ -246,7 +246,7 @@ describe('Password Utilities', () => {
it('returns false if the user has no local auth', async () => { it('returns false if the user has no local auth', async () => {
const user = await generateUser({ const user = await generateUser({
auth: { auth: {
facebook: {}, google: {},
}, },
}); });
const res = await validatePasswordResetCodeAndFindUser(encrypt(JSON.stringify({ const res = await validatePasswordResetCodeAndFindUser(encrypt(JSON.stringify({

View File

@@ -289,45 +289,6 @@ describe('DELETE /user', () => {
}); });
}); });
context('user with Facebook auth', async () => {
beforeEach(async () => {
user = await generateUser({
auth: {
facebook: {
id: 'facebook-id',
},
},
});
});
it('returns an error if confirmation phrase is wrong', async () => {
await expect(user.del('/user', {
password: 'just-do-it',
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('incorrectDeletePhrase', { magicWord: 'DELETE' }),
});
});
it('returns an error if confirmation phrase is not supplied', async () => {
await expect(user.del('/user', {
password: '',
})).to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: t('missingPassword'),
});
});
it('deletes a Facebook user', async () => {
await user.del('/user', {
password: DELETE_CONFIRMATION,
});
await expect(checkExistence('users', user._id)).to.eventually.eql(false);
});
});
context('user with Google auth', async () => { context('user with Google auth', async () => {
beforeEach(async () => { beforeEach(async () => {
user = await generateUser({ user = await generateUser({

View File

@@ -20,44 +20,6 @@ describe('DELETE social registration', () => {
}); });
}); });
context('Facebook', () => {
it('fails if user does not have an alternative registration method', async () => {
await user.update({
'auth.facebook.id': 'some-fb-id',
'auth.local': { ok: true },
});
await expect(user.del('/user/auth/social/facebook')).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('cantDetachSocial'),
});
});
it('succeeds if user has a local registration', async () => {
await user.update({
'auth.facebook.id': 'some-fb-id',
});
const response = await user.del('/user/auth/social/facebook');
expect(response).to.eql({});
await user.sync();
expect(user.auth.facebook).to.be.undefined;
});
it('succeeds if user has a google registration', async () => {
await user.update({
'auth.facebook.id': 'some-fb-id',
'auth.google.id': 'some-google-id',
'auth.local': { ok: true },
});
const response = await user.del('/user/auth/social/facebook');
expect(response).to.eql({});
await user.sync();
expect(user.auth.facebook).to.be.undefined;
});
});
context('Google', () => { context('Google', () => {
it('fails if user does not have an alternative registration method', async () => { it('fails if user does not have an alternative registration method', async () => {
await user.update({ await user.update({
@@ -81,19 +43,6 @@ describe('DELETE social registration', () => {
await user.sync(); await user.sync();
expect(user.auth.google).to.be.undefined; expect(user.auth.google).to.be.undefined;
}); });
it('succeeds if user has a facebook registration', async () => {
await user.update({
'auth.google.id': 'some-google-id',
'auth.facebook.id': 'some-facebook-id',
'auth.local': { ok: true },
});
const response = await user.del('/user/auth/social/google');
expect(response).to.eql({});
await user.sync();
expect(user.auth.goodl).to.be.undefined;
});
}); });
context('Apple', () => { context('Apple', () => {
@@ -119,18 +68,5 @@ describe('DELETE social registration', () => {
await user.sync(); await user.sync();
expect(user.auth.apple).to.be.undefined; expect(user.auth.apple).to.be.undefined;
}); });
it('succeeds if user has a facebook registration', async () => {
await user.update({
'auth.apple.id': 'some-apple-id',
'auth.facebook.id': 'some-facebook-id',
'auth.local': { ok: true },
});
const response = await user.del('/user/auth/social/apple');
expect(response).to.eql({});
await user.sync();
expect(user.auth.goodl).to.be.undefined;
});
}); });
}); });

View File

@@ -12,7 +12,6 @@ describe('POST /user/auth/social', () => {
let user; let user;
const endpoint = '/user/auth/social'; const endpoint = '/user/auth/social';
let randomAccessToken = '123456'; let randomAccessToken = '123456';
let randomFacebookId = 'facebookId';
let randomGoogleId = 'googleId'; let randomGoogleId = 'googleId';
let network = 'NoNetwork'; let network = 'NoNetwork';
@@ -33,146 +32,6 @@ describe('POST /user/auth/social', () => {
}); });
}); });
describe('facebook', () => {
beforeEach(async () => {
randomFacebookId = generateUUID();
const expectedResult = {
id: randomFacebookId,
displayName: 'a facebook user',
emails: [
{ value: `${user.auth.local.username}+facebook@example.com` },
],
};
sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult);
network = 'facebook';
});
afterEach(async () => {
passport._strategies.facebook.userProfile.restore();
});
it('registers a new user', async () => {
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(response.apiToken).to.exist;
expect(response.id).to.exist;
expect(response.newUser).to.be.true;
expect(response.username).to.exist;
await expect(getProperty('users', response.id, 'profile.name')).to.eventually.equal('a facebook user');
await expect(getProperty('users', response.id, 'auth.local.lowerCaseUsername')).to.exist;
await expect(getProperty('users', response.id, 'auth.local.email')).to.eventually.equal(`${user.auth.local.username}+facebook@example.com`);
await expect(getProperty('users', response.id, 'auth.facebook.id')).to.eventually.equal(randomFacebookId);
});
it('logs an existing user in', async () => {
const registerResponse = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(response.apiToken).to.eql(registerResponse.apiToken);
expect(response.id).to.eql(registerResponse.id);
expect(response.newUser).to.be.false;
expect(registerResponse.newUser).to.be.true;
});
it('logs an existing user in if they have local auth with matching email', async () => {
passport._strategies.facebook.userProfile.restore();
const expectedResult = {
id: randomFacebookId,
displayName: 'a facebook user',
emails: [
{ value: user.auth.local.email },
],
};
sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult);
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(response.apiToken).to.eql(user.apiToken);
expect(response.id).to.eql(user._id);
expect(response.newUser).to.be.false;
});
it('logs an existing user into their social account if they have local auth with matching email', async () => {
const registerResponse = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(registerResponse.newUser).to.be.true;
// This is important for existing accounts before the new social handling
passport._strategies.facebook.userProfile.restore();
const expectedResult = {
id: randomFacebookId,
displayName: 'a facebook user',
emails: [
{ value: user.auth.local.email },
],
};
sandbox.stub(passport._strategies.facebook, 'userProfile').yields(null, expectedResult);
const response = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(response.apiToken).to.eql(registerResponse.apiToken);
expect(response.id).to.eql(registerResponse.id);
expect(response.apiToken).not.to.eql(user.apiToken);
expect(response.id).not.to.eql(user._id);
expect(response.newUser).to.be.false;
});
it('add social auth to an existing user', async () => {
const response = await user.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(response.apiToken).to.eql(user.apiToken);
expect(response.id).to.eql(user._id);
expect(response.newUser).to.be.false;
});
it('does not log into other account if social auth already exists', async () => {
const registerResponse = await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
expect(registerResponse.newUser).to.be.true;
await expect(user.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
})).to.eventually.be.rejected.and.eql({
code: 401,
error: 'NotAuthorized',
message: t('socialAlreadyExists'),
});
});
xit('enrolls a new user in an A/B test', async () => {
await api.post(endpoint, {
authResponse: { access_token: randomAccessToken }, // eslint-disable-line camelcase
network,
});
await expect(getProperty('users', user._id, '_ABtests')).to.eventually.be.a('object');
});
});
describe('google', () => { describe('google', () => {
beforeEach(async () => { beforeEach(async () => {
randomGoogleId = generateUUID(); randomGoogleId = generateUUID();

View File

@@ -25,6 +25,19 @@ describe('POST /user/reset-password', async () => {
expect(user.auth.local.hashed_password).to.not.eql(previousPassword); expect(user.auth.local.hashed_password).to.not.eql(previousPassword);
}); });
it('resets password for social users', async () => {
const email = `${user.auth.local.username}+google@example.com`;
await user.update({ 'auth.google.emails': [{ value: email }] });
await user.sync();
const previousPassword = user.auth.local.passwordResetCode;
const response = await user.post(endpoint, {
email,
});
expect(response).to.eql({ data: {}, message: t('passwordReset') });
await user.sync();
expect(user.auth.local.passwordResetCode).to.not.eql(previousPassword);
});
it('same message on error as on success', async () => { it('same message on error as on success', async () => {
const response = await user.post(endpoint, { const response = await user.post(endpoint, {
email: 'nonExistent@email.com', email: 'nonExistent@email.com',

View File

@@ -30,9 +30,9 @@
} }
}, },
"@amplitude/types": { "@amplitude/types": {
"version": "1.10.0", "version": "1.10.2",
"resolved": "https://registry.npmjs.org/@amplitude/types/-/types-1.10.0.tgz", "resolved": "https://registry.npmjs.org/@amplitude/types/-/types-1.10.2.tgz",
"integrity": "sha512-xN0gnhutztv6kqHaZ2bre18anQV5GDmMXOeipTvI670g2VjNbPfOzMwu1LN4p1NadYq+GqYI223UcZrXR+R4Pw==" "integrity": "sha512-I8qenRI7uU6wKNb9LiZrAosSHVoNHziXouKY81CrqxH9xhVTEIJFXeuCV0hbtBr0Al/8ejnGjQRx+S2SvU/pPg=="
}, },
"@amplitude/ua-parser-js": { "@amplitude/ua-parser-js": {
"version": "0.7.31", "version": "0.7.31",
@@ -40,12 +40,19 @@
"integrity": "sha512-+z8UGRaj13Pt5NDzOnkTBy49HE2CX64jeL0ArB86HAtilpnfkPB7oqkigN7Lf2LxscMg4QhFD7mmCfedh3rqTg==" "integrity": "sha512-+z8UGRaj13Pt5NDzOnkTBy49HE2CX64jeL0ArB86HAtilpnfkPB7oqkigN7Lf2LxscMg4QhFD7mmCfedh3rqTg=="
}, },
"@amplitude/utils": { "@amplitude/utils": {
"version": "1.10.0", "version": "1.10.2",
"resolved": "https://registry.npmjs.org/@amplitude/utils/-/utils-1.10.0.tgz", "resolved": "https://registry.npmjs.org/@amplitude/utils/-/utils-1.10.2.tgz",
"integrity": "sha512-/R8j8IzFH0GYfA6ehQDm5IEzt71gIeMdiYYFIzZp6grERQlgJcwNJMAiza0o2JwwTDIruzqdB3c/vLVjuakp+w==", "integrity": "sha512-tVsHXu61jITEtRjB7NugQ5cVDd4QDzne8T3ifmZye7TiJeUfVRvqe44gDtf55A+7VqhDhyEIIXTA1iVcDGqlEw==",
"requires": { "requires": {
"@amplitude/types": "^1.10.0", "@amplitude/types": "^1.10.2",
"tslib": "^1.9.3" "tslib": "^2.0.0"
},
"dependencies": {
"tslib": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
}
} }
}, },
"@babel/code-frame": { "@babel/code-frame": {
@@ -13127,13 +13134,13 @@
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
}, },
"amplitude-js": { "amplitude-js": {
"version": "8.18.5", "version": "8.21.0",
"resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-8.18.5.tgz", "resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-8.21.0.tgz",
"integrity": "sha512-s43q4qKd7kvhYESQhYvyKDKUM1PpyAyoOFFlyMuFfQHRxyeDmZRhcfzrKnOhbrLhFxSWtPc0VEeh9tajJRNe5Q==", "integrity": "sha512-kC01TmmCdDrtms8LhvC/r65FtbmCbNHZ1/jiezXmTH82TsWI/SkN47jKs8CCwjZNakqTBN/hmficiZBUKv4myw==",
"requires": { "requires": {
"@amplitude/analytics-connector": "1.4.4", "@amplitude/analytics-connector": "1.4.4",
"@amplitude/ua-parser-js": "0.7.31", "@amplitude/ua-parser-js": "0.7.31",
"@amplitude/utils": "^1.0.5", "@amplitude/utils": "^1.10.1",
"@babel/runtime": "^7.3.4", "@babel/runtime": "^7.3.4",
"blueimp-md5": "^2.10.0", "blueimp-md5": "^2.10.0",
"query-string": "5" "query-string": "5"
@@ -16812,9 +16819,9 @@
} }
}, },
"dompurify": { "dompurify": {
"version": "2.3.10", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.10.tgz", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz",
"integrity": "sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==" "integrity": "sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA=="
}, },
"domutils": { "domutils": {
"version": "1.7.0", "version": "1.7.0",
@@ -20668,9 +20675,9 @@
} }
}, },
"jquery": { "jquery": {
"version": "3.6.0", "version": "3.6.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
"integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" "integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw=="
}, },
"js-message": { "js-message": {
"version": "1.0.5", "version": "1.0.5",
@@ -28306,23 +28313,23 @@
"integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk="
}, },
"vue": { "vue": {
"version": "2.7.8", "version": "2.7.10",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.7.8.tgz", "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.10.tgz",
"integrity": "sha512-ncwlZx5qOcn754bCu5/tS/IWPhXHopfit79cx+uIlLMyt3vCMGcXai5yCG5y+I6cDmEj4ukRYyZail9FTQh7lQ==", "integrity": "sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg==",
"requires": { "requires": {
"@vue/compiler-sfc": "2.7.8", "@vue/compiler-sfc": "2.7.10",
"csstype": "^3.1.0" "csstype": "^3.1.0"
}, },
"dependencies": { "dependencies": {
"@babel/parser": { "@babel/parser": {
"version": "7.18.9", "version": "7.18.13",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz",
"integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==" "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg=="
}, },
"@vue/compiler-sfc": { "@vue/compiler-sfc": {
"version": "2.7.8", "version": "2.7.10",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.8.tgz", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.10.tgz",
"integrity": "sha512-2DK4YWKfgLnW9VDR9gnju1gcYRk3flKj8UNsms7fsRmFcg35slVTZEkqwBtX+wJBXaamFfn6NxSsZh3h12Ix/Q==", "integrity": "sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q==",
"requires": { "requires": {
"@babel/parser": "^7.18.4", "@babel/parser": "^7.18.4",
"postcss": "^8.4.14", "postcss": "^8.4.14",
@@ -28340,9 +28347,9 @@
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
}, },
"postcss": { "postcss": {
"version": "8.4.14", "version": "8.4.16",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
"integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
"requires": { "requires": {
"nanoid": "^3.3.4", "nanoid": "^3.3.4",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
@@ -28676,9 +28683,9 @@
} }
}, },
"vue-template-compiler": { "vue-template-compiler": {
"version": "2.7.8", "version": "2.7.10",
"resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.8.tgz", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.10.tgz",
"integrity": "sha512-eQqdcUpJKJpBRPDdxCNsqUoT0edNvdt1jFjtVnVS/LPPmr0BU2jWzXlrf6BVMeODtdLewB3j8j3WjNiB+V+giw==", "integrity": "sha512-QO+8R9YRq1Gudm8ZMdo/lImZLJVUIAM8c07Vp84ojdDAf8HmPJc7XB556PcXV218k2AkKznsRz6xB5uOjAC4EQ==",
"requires": { "requires": {
"de-indent": "^1.0.2", "de-indent": "^1.0.2",
"he": "^1.2.0" "he": "^1.2.0"

View File

@@ -25,7 +25,7 @@
"@vue/cli-plugin-unit-mocha": "^4.5.15", "@vue/cli-plugin-unit-mocha": "^4.5.15",
"@vue/cli-service": "^4.5.15", "@vue/cli-service": "^4.5.15",
"@vue/test-utils": "1.0.0-beta.29", "@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^8.18.5", "amplitude-js": "^8.21.0",
"axios": "^0.25.0", "axios": "^0.25.0",
"axios-progress-bar": "^1.2.0", "axios-progress-bar": "^1.2.0",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
@@ -33,7 +33,7 @@
"bootstrap-vue": "^2.22.0", "bootstrap-vue": "^2.22.0",
"chai": "^4.3.6", "chai": "^4.3.6",
"core-js": "^3.24.1", "core-js": "^3.24.1",
"dompurify": "^2.3.10", "dompurify": "^2.4.0",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0", "eslint-config-habitrpg": "^6.2.0",
"eslint-plugin-mocha": "^5.3.0", "eslint-plugin-mocha": "^5.3.0",
@@ -42,7 +42,7 @@
"hellojs": "^1.19.5", "hellojs": "^1.19.5",
"inspectpack": "^4.7.1", "inspectpack": "^4.7.1",
"intro.js": "^5.1.0", "intro.js": "^5.1.0",
"jquery": "^3.6.0", "jquery": "^3.6.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"moment": "^2.29.4", "moment": "^2.29.4",
"nconf": "^0.12.0", "nconf": "^0.12.0",
@@ -55,11 +55,11 @@
"svgo-loader": "^2.2.1", "svgo-loader": "^2.2.1",
"uuid": "^8.3.2", "uuid": "^8.3.2",
"validator": "^13.7.0", "validator": "^13.7.0",
"vue": "^2.7.8", "vue": "^2.7.10",
"vue-cli-plugin-storybook": "2.1.0", "vue-cli-plugin-storybook": "2.1.0",
"vue-mugen-scroll": "^0.2.6", "vue-mugen-scroll": "^0.2.6",
"vue-router": "^3.5.4", "vue-router": "^3.5.4",
"vue-template-compiler": "^2.7.8", "vue-template-compiler": "^2.7.10",
"vuedraggable": "^2.24.3", "vuedraggable": "^2.24.3",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0", "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0",
"webpack": "^4.46.0" "webpack": "^4.46.0"

View File

@@ -22875,6 +22875,26 @@
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.broad_armor_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fall2022Healer.png');
width: 114px;
height: 90px;
}
.broad_armor_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fall2022Mage.png');
width: 114px;
height: 90px;
}
.broad_armor_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fall2022Rogue.png');
width: 114px;
height: 90px;
}
.broad_armor_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fall2022Warrior.png');
width: 114px;
height: 90px;
}
.broad_armor_special_fallHealer { .broad_armor_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_fallHealer.png');
width: 90px; width: 90px;
@@ -23045,6 +23065,26 @@
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.head_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_fall2022Healer.png');
width: 114px;
height: 90px;
}
.head_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_fall2022Mage.png');
width: 114px;
height: 90px;
}
.head_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_fall2022Rogue.png');
width: 114px;
height: 90px;
}
.head_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_fall2022Warrior.png');
width: 114px;
height: 90px;
}
.head_special_fallHealer { .head_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_fallHealer.png');
width: 90px; width: 90px;
@@ -23170,6 +23210,21 @@
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.shield_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_fall2022Healer.png');
width: 114px;
height: 90px;
}
.shield_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_fall2022Rogue.png');
width: 114px;
height: 90px;
}
.shield_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_fall2022Warrior.png');
width: 114px;
height: 90px;
}
.shield_special_fallHealer { .shield_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_fallHealer.png');
width: 90px; width: 90px;
@@ -23325,6 +23380,26 @@
width: 68px; width: 68px;
height: 68px; height: 68px;
} }
.shop_armor_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_fall2022Healer.png');
width: 68px;
height: 68px;
}
.shop_armor_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_fall2022Mage.png');
width: 68px;
height: 68px;
}
.shop_armor_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_fall2022Rogue.png');
width: 68px;
height: 68px;
}
.shop_armor_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_fall2022Warrior.png');
width: 68px;
height: 68px;
}
.shop_armor_special_fallHealer { .shop_armor_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_fallHealer.png');
width: 68px; width: 68px;
@@ -23495,6 +23570,26 @@
width: 68px; width: 68px;
height: 68px; height: 68px;
} }
.shop_head_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_fall2022Healer.png');
width: 68px;
height: 68px;
}
.shop_head_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_fall2022Mage.png');
width: 68px;
height: 68px;
}
.shop_head_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_fall2022Rogue.png');
width: 68px;
height: 68px;
}
.shop_head_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_fall2022Warrior.png');
width: 68px;
height: 68px;
}
.shop_head_special_fallHealer { .shop_head_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_fallHealer.png');
width: 68px; width: 68px;
@@ -23620,6 +23715,21 @@
width: 68px; width: 68px;
height: 68px; height: 68px;
} }
.shop_shield_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_fall2022Healer.png');
width: 68px;
height: 68px;
}
.shop_shield_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_fall2022Rogue.png');
width: 68px;
height: 68px;
}
.shop_shield_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_fall2022Warrior.png');
width: 68px;
height: 68px;
}
.shop_shield_special_fallHealer { .shop_shield_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_fallHealer.png');
width: 68px; width: 68px;
@@ -23775,6 +23885,26 @@
width: 68px; width: 68px;
height: 68px; height: 68px;
} }
.shop_weapon_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_fall2022Healer.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_fall2022Mage.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_fall2022Rogue.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_fall2022Warrior.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_fallHealer { .shop_weapon_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_fallHealer.png');
width: 68px; width: 68px;
@@ -23935,6 +24065,26 @@
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.slim_armor_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_fall2022Healer.png');
width: 114px;
height: 90px;
}
.slim_armor_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_fall2022Mage.png');
width: 114px;
height: 90px;
}
.slim_armor_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_fall2022Rogue.png');
width: 114px;
height: 90px;
}
.slim_armor_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_fall2022Warrior.png');
width: 114px;
height: 90px;
}
.slim_armor_special_fallHealer { .slim_armor_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_fallHealer.png');
width: 90px; width: 90px;
@@ -24095,6 +24245,26 @@
width: 114px; width: 114px;
height: 90px; height: 90px;
} }
.weapon_special_fall2022Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_fall2022Healer.png');
width: 114px;
height: 90px;
}
.weapon_special_fall2022Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_fall2022Mage.png');
width: 114px;
height: 90px;
}
.weapon_special_fall2022Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_fall2022Rogue.png');
width: 114px;
height: 90px;
}
.weapon_special_fall2022Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_fall2022Warrior.png');
width: 114px;
height: 90px;
}
.weapon_special_fallHealer { .weapon_special_fallHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_fallHealer.png'); background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_fallHealer.png');
width: 90px; width: 90px;

View File

@@ -1,21 +1,5 @@
<template> <template>
<div class="form"> <div class="form">
<div class="form-group row text-center">
<div class="col-12">
<div
class="btn btn-secondary social-button"
@click="socialAuth('facebook')"
>
<div
class="svg-icon social-icon"
v-html="icons.facebookIcon"
></div>
<span>{{ registering
? $t('signUpWithSocial', {social: 'Facebook'})
: $t('loginWithSocial', {social: 'Facebook'}) }}</span>
</div>
</div>
</div>
<div class="form-group row text-center"> <div class="form-group row text-center">
<div class="col-12"> <div class="col-12">
<div <div
@@ -243,7 +227,6 @@ import debounce from 'lodash/debounce';
import isEmail from 'validator/lib/isEmail'; import isEmail from 'validator/lib/isEmail';
import { setUpAxios, buildAppleAuthUrl } from '@/libs/auth'; import { setUpAxios, buildAppleAuthUrl } from '@/libs/auth';
import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants'; import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants';
import facebookSquareIcon from '@/assets/svg/facebook-square.svg';
import googleIcon from '@/assets/svg/google.svg'; import googleIcon from '@/assets/svg/google.svg';
import appleIcon from '@/assets/svg/apple_black.svg'; import appleIcon from '@/assets/svg/apple_black.svg';
@@ -260,7 +243,6 @@ export default {
}; };
data.icons = Object.freeze({ data.icons = Object.freeze({
facebookIcon: facebookSquareIcon,
googleIcon, googleIcon,
appleIcon, appleIcon,
}); });
@@ -308,8 +290,6 @@ export default {
}, },
mounted () { mounted () {
hello.init({ hello.init({
facebook: process.env.FACEBOOK_KEY, // eslint-disable-line
// windows: WINDOWS_CLIENT_ID,
google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line
}); });
}, },

View File

@@ -621,7 +621,6 @@ import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants';
import exclamation from '@/assets/svg/exclamation.svg'; import exclamation from '@/assets/svg/exclamation.svg';
import gryphon from '@/assets/svg/gryphon.svg'; import gryphon from '@/assets/svg/gryphon.svg';
import habiticaIcon from '@/assets/svg/habitica-logo.svg'; import habiticaIcon from '@/assets/svg/habitica-logo.svg';
import facebookSquareIcon from '@/assets/svg/facebook-square.svg';
import googleIcon from '@/assets/svg/google.svg'; import googleIcon from '@/assets/svg/google.svg';
import appleIcon from '@/assets/svg/apple_black.svg'; import appleIcon from '@/assets/svg/apple_black.svg';
@@ -644,7 +643,6 @@ export default {
exclamation, exclamation,
gryphon, gryphon,
habiticaIcon, habiticaIcon,
facebookIcon: facebookSquareIcon,
googleIcon, googleIcon,
appleIcon, appleIcon,
}); });
@@ -734,8 +732,6 @@ export default {
}, },
mounted () { mounted () {
hello.init({ hello.init({
facebook: process.env.FACEBOOK_KEY, // eslint-disable-line
// windows: WINDOWS_CLIENT_ID,
google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line
}); });
}, },

View File

@@ -387,9 +387,7 @@
{{ $t('saveAndConfirm') }} {{ $t('saveAndConfirm') }}
</button> </button>
</div> </div>
<h5 <h5 v-if="user.auth.local.has_password">
v-if="user.auth.local.email"
>
{{ $t('changeEmail') }} {{ $t('changeEmail') }}
</h5> </h5>
<div <div

View File

@@ -3,7 +3,7 @@
<div class="container-fluid"> <div class="container-fluid">
<h1>Privacy Notice</h1> <h1>Privacy Notice</h1>
<p class="strong pagemeta"> <p class="strong pagemeta">
Last Updated: December 10, 2021 Last Updated September 19, 2022: Removed reference to Facebook login, which is no longer supported.
</p> </p>
<p> <p>
HabitRPG, Inc. (HabitRPG, we, us, or our) welcomes you. This privacy notice (the Privacy HabitRPG, Inc. (HabitRPG, we, us, or our) welcomes you. This privacy notice (the Privacy
@@ -39,8 +39,8 @@
In connection with the creation of an account on our Platforms, we collect account credentials such as In connection with the creation of an account on our Platforms, we collect account credentials such as
your email, username, and password. We use this account information to create your account, including to your email, username, and password. We use this account information to create your account, including to
verify your identity. We also use this information to manage your account, including your transactions. If verify your identity. We also use this information to manage your account, including your transactions. If
you choose to log into your account through Google, Apple or Facebook, we capture and store the User you choose to log into your account through Google or Apple, we capture and store the User ID and email
ID and email address connected to the respective account, so we can verify your identity when you log in. address connected to the respective account, so we can verify your identity when you log in.
</p> </p>
<h3>User Content</h3> <h3>User Content</h3>
<p> <p>

View File

@@ -23,7 +23,6 @@ const envVars = [
'BASE_URL', 'BASE_URL',
'GA_ID', 'GA_ID',
'STRIPE_PUB_KEY', 'STRIPE_PUB_KEY',
'FACEBOOK_KEY',
'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_ID',
'APPLE_AUTH_CLIENT_ID', 'APPLE_AUTH_CLIENT_ID',
'AMPLITUDE_KEY', 'AMPLITUDE_KEY',

View File

@@ -609,7 +609,7 @@
"questSeaSerpentNotes": "Your streaks have you feeling lucky—its the perfect time for a trip to the seahorse racetrack. You board the submarine at Diligent Docks and settle in for the trip to Dilatory, but youve barely submerged when an impact rocks the sub, sending its occupants tumbling. “Whats going on?” @AriesFaries shouts.<br><br>You glance through a nearby porthole and are shocked by the wall of shimmering scales passing by it. “Sea serpent!” Captain @Witticaster calls through the intercom. “Brace yourselves, its coming round again!” As you grip the arms of your seat, your unfinished tasks flash before your eyes. Maybe if we work together and complete them, you think, we can drive this monster away!", "questSeaSerpentNotes": "Your streaks have you feeling lucky—its the perfect time for a trip to the seahorse racetrack. You board the submarine at Diligent Docks and settle in for the trip to Dilatory, but youve barely submerged when an impact rocks the sub, sending its occupants tumbling. “Whats going on?” @AriesFaries shouts.<br><br>You glance through a nearby porthole and are shocked by the wall of shimmering scales passing by it. “Sea serpent!” Captain @Witticaster calls through the intercom. “Brace yourselves, its coming round again!” As you grip the arms of your seat, your unfinished tasks flash before your eyes. Maybe if we work together and complete them, you think, we can drive this monster away!",
"questSeaSerpentCompletion": "Battered by your commitment, the sea serpent flees, disappearing into the depths. When you arrive in Dilatory, you breathe a sigh of relief before noticing @*~Seraphina~ approaching with three translucent eggs cradled in her arms. “Here, you should have these,” she says. “You know how to handle a sea serpent!” As you accept the eggs, you vow anew to remain steadfast in completing your tasks to ensure that theres not a repeat occurrence.", "questSeaSerpentCompletion": "Battered by your commitment, the sea serpent flees, disappearing into the depths. When you arrive in Dilatory, you breathe a sigh of relief before noticing @*~Seraphina~ approaching with three translucent eggs cradled in her arms. “Here, you should have these,” she says. “You know how to handle a sea serpent!” As you accept the eggs, you vow anew to remain steadfast in completing your tasks to ensure that theres not a repeat occurrence.",
"questSeaSerpentBoss": "The Mighty Sea Serpent", "questSeaSerpentBoss": "The Mighty Sea Serpent",
"questSeaSerpentDropSeaSerpentEgg": "Sea Serpent (Egg)", "questSeaSerpentDropSeaSerpentEgg": "",
"questSeaSerpentUnlockText": "Unlocks purchasable Sea Serpent eggs in the Market", "questSeaSerpentUnlockText": "Unlocks purchasable Sea Serpent eggs in the Market",
"questKangarooText": "Kangaroo Catastrophe", "questKangarooText": "Kangaroo Catastrophe",
"questKangarooNotes": "Maybe you should have finished that last task… you know, the one you keep avoiding, even though it always comes back around? But @Mewrose and @LilithofAlfheim invited you and @stefalupagus to see a rare kangaroo troop hopping through the Sloensteadi Savannah; how could you say no?! As the troop comes into view, something hits you on the back of the head with a mighty <em>whack!</em><br><br>Shaking the stars from your vision, you pick up the responsible object--a dark red boomerang, with the very task you continually push back etched into its surface. A quick glance around confirms the rest of your party met a similar fate. One larger kangaroo looks at you with a smug grin, like shes daring you to face her and that dreaded task once and for all!", "questKangarooNotes": "Maybe you should have finished that last task… you know, the one you keep avoiding, even though it always comes back around? But @Mewrose and @LilithofAlfheim invited you and @stefalupagus to see a rare kangaroo troop hopping through the Sloensteadi Savannah; how could you say no?! As the troop comes into view, something hits you on the back of the head with a mighty <em>whack!</em><br><br>Shaking the stars from your vision, you pick up the responsible object--a dark red boomerang, with the very task you continually push back etched into its surface. A quick glance around confirms the rest of your party met a similar fate. One larger kangaroo looks at you with a smug grin, like shes daring you to face her and that dreaded task once and for all!",

View File

@@ -2014,5 +2014,9 @@
"weaponMystery202102Notes": "Zářivý růžový drahokem v této hůlce dokáže šířit radost a přátelství všude možně! Nepřináší žádné výhody. Předmět pro předplatitele, únor 2021.", "weaponMystery202102Notes": "Zářivý růžový drahokem v této hůlce dokáže šířit radost a přátelství všude možně! Nepřináší žádné výhody. Předmět pro předplatitele, únor 2021.",
"weaponMystery202104Notes": "Tvoji nepřátele by si měli dávat pozor - máš totiž mocnou a pichlavou obranu! Nepřináší žádné výhody. Předmět pro předplatitele duben 2021.", "weaponMystery202104Notes": "Tvoji nepřátele by si měli dávat pozor - máš totiž mocnou a pichlavou obranu! Nepřináší žádné výhody. Předmět pro předplatitele duben 2021.",
"weaponMystery202102Text": "Okouzlující hůlka", "weaponMystery202102Text": "Okouzlující hůlka",
"weaponMystery202104Text": "Hůl trnitého bodláku" "weaponMystery202104Text": "Hůl trnitého bodláku",
"weaponMystery202201Notes": "O silvestrovské půlnoci vypusť oblak zlatého a stříbrného třpytu. Štastný nový rok! Kdo to teď uklidí? Nepřináší žádné výhody. Předmět pro předplatitele leden 2022.",
"weaponMystery202201Text": "Konfetové dělo půlnoci",
"weaponMystery202111Text": "Chronomancerova hůl",
"weaponMystery202111Notes": "Ohýbej tok času s touto tajemnou a mocnou holí. Nepřináší žádné výhody. Předmět pro předplatitele listopad 2021."
} }

View File

@@ -5,12 +5,12 @@
"accept2Terms": "zu, sowie der", "accept2Terms": "zu, sowie der",
"chores": "Hausarbeiten", "chores": "Hausarbeiten",
"clearBrowserData": "Browserdaten löschen", "clearBrowserData": "Browserdaten löschen",
"communityExtensions": "<a href='http://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations' target='_blank'>Add-ons & Erweiterungen</a>", "communityExtensions": "Add-ons & Erweiterungen",
"communityFacebook": "Facebook", "communityFacebook": "Facebook",
"companyAbout": "So funktioniert es", "companyAbout": "So funktioniert es",
"companyBlog": "Blog", "companyBlog": "Blog",
"companyContribute": "Mitwirken", "companyContribute": "Bei Habitica mitwirken",
"companyDonate": "Spenden", "companyDonate": "An Habitica spenden",
"forgotPassword": "Passwort vergessen?", "forgotPassword": "Passwort vergessen?",
"emailNewPass": "Einen Link per E-Mail senden, um das Passwort zurückzusetzen", "emailNewPass": "Einen Link per E-Mail senden, um das Passwort zurückzusetzen",
"forgotPasswordSteps": "Trage Deinen Benutzernamen oder die E-Mail-Adresse ein, mit der Du Deinen Habitica-Account aktiviert hast.", "forgotPasswordSteps": "Trage Deinen Benutzernamen oder die E-Mail-Adresse ein, mit der Du Deinen Habitica-Account aktiviert hast.",
@@ -53,8 +53,8 @@
"marketing4Lead3-1": "Willst Du Dein Leben einmal als Spiel betrachten?", "marketing4Lead3-1": "Willst Du Dein Leben einmal als Spiel betrachten?",
"marketing4Lead3-2": "Willst Du eine Gruppe für Ausbildung, Wohlbefinden usw. leiten?", "marketing4Lead3-2": "Willst Du eine Gruppe für Ausbildung, Wohlbefinden usw. leiten?",
"marketing4Lead3Title": "Mache Alles zum Spiel", "marketing4Lead3Title": "Mache Alles zum Spiel",
"mobileAndroid": "Android", "mobileAndroid": "Android App",
"mobileIOS": "iOS", "mobileIOS": "iOS App",
"oldNews": "Neuigkeiten", "oldNews": "Neuigkeiten",
"newsArchive": "Neuigkeiten-Archiv auf Wikia (mehrsprachig)", "newsArchive": "Neuigkeiten-Archiv auf Wikia (mehrsprachig)",
"setNewPass": "Neues Passwort setzen", "setNewPass": "Neues Passwort setzen",
@@ -187,5 +187,6 @@
"minPasswordLength": "Das Passwort muss mindestens 8 Zeichen haben.", "minPasswordLength": "Das Passwort muss mindestens 8 Zeichen haben.",
"enterHabitica": "Tritt ein in Habitica", "enterHabitica": "Tritt ein in Habitica",
"socialAlreadyExists": "Diese Social-Media-Zugangsdaten sind bereits mit einem schon bestehenden Habitica-Konto verknüpft.", "socialAlreadyExists": "Diese Social-Media-Zugangsdaten sind bereits mit einem schon bestehenden Habitica-Konto verknüpft.",
"emailUsernamePlaceholder": "z.B., habitrabbit oder gryphon@beispiel.com" "emailUsernamePlaceholder": "z.B., habitrabbit oder gryphon@beispiel.com",
"footerProduct": "Produkt"
} }

View File

@@ -163,8 +163,8 @@
"onlyGroupLeaderCanEditTasks": "Nicht berechtigt, Aufgaben zu bearbeiten!", "onlyGroupLeaderCanEditTasks": "Nicht berechtigt, Aufgaben zu bearbeiten!",
"onlyGroupTasksCanBeAssigned": "Nur Team-Aufgaben können verteilt werden", "onlyGroupTasksCanBeAssigned": "Nur Team-Aufgaben können verteilt werden",
"assignedTo": "Zugewiesen an", "assignedTo": "Zugewiesen an",
"assignedToUser": "<strong><%- userName %></strong> zugewiesen", "assignedToUser": "Zugewiesen: <strong>@<%- userName %></strong>",
"assignedToMembers": "<strong><%= userCount %></strong> Mitgliedern zugewiesen", "assignedToMembers": "<%= userCount %> Mitgliedern",
"assignedToYouAndMembers": "Dir und <strong><%= userCount %> Mitliedern</strong> zugewiesen", "assignedToYouAndMembers": "Dir und <strong><%= userCount %> Mitliedern</strong> zugewiesen",
"youAreAssigned": "Dir zugewiesen", "youAreAssigned": "Dir zugewiesen",
"taskIsUnassigned": "Diese Aufgabe ist niemandem zugewiesen", "taskIsUnassigned": "Diese Aufgabe ist niemandem zugewiesen",
@@ -380,5 +380,6 @@
"viewDetails": "Details ansehen", "viewDetails": "Details ansehen",
"upgradeToGroup": "Auf Gruppenplan upgraden", "upgradeToGroup": "Auf Gruppenplan upgraden",
"sendGiftTotal": "Insgesamt:", "sendGiftTotal": "Insgesamt:",
"chatTemporarilyUnavailable": "Chat aktuell nicht verfügbar. Bitte versuche es später erneut." "chatTemporarilyUnavailable": "Chat aktuell nicht verfügbar. Bitte versuche es später erneut.",
"assignTo": "Zugewiesen an"
} }

View File

@@ -81,7 +81,7 @@
"newBaileyUpdate": "Neues Update von Bailey!", "newBaileyUpdate": "Neues Update von Bailey!",
"tellMeLater": "Erzähl es mir später", "tellMeLater": "Erzähl es mir später",
"dismissAlert": "Als gelesen markieren", "dismissAlert": "Als gelesen markieren",
"donateText3": "Als Open-Source-Projekt ist Habitica auf die Hilfe unserer Benutzer angewiesen. Das Geld, was Du für Edelsteine ausgibst, hilft uns dabei unsere Server am Laufen zu halten, ein paar Mitarbeiter zu bezahlen, neue Features zu entwickeln und unseren ehrenamtlichen Programmierern Anreize zu bieten. Vielen Dank für Deine Großzügigkeit!", "donateText3": "Als Open-Source-Projekt ist Habitica auf die Hilfe unserer Benutzer angewiesen. Das Geld, was Du für Edelsteine ausgibst, hilft uns dabei unsere Server am Laufen zu halten, ein paar Mitarbeiter zu bezahlen, neue Features zu entwickeln und unseren ehrenamtlichen Helferlein Anreize zu bieten.",
"card": "Kreditkarte", "card": "Kreditkarte",
"paymentMethods": "Kauf mit", "paymentMethods": "Kauf mit",
"paymentSuccessful": "Die Zahlung war erfolgreich!", "paymentSuccessful": "Die Zahlung war erfolgreich!",
@@ -131,5 +131,6 @@
"limitedAvailabilityHours": "Für <%= days %>t <%= hours %>std und <%= minutes %>min verfügbar", "limitedAvailabilityHours": "Für <%= days %>t <%= hours %>std und <%= minutes %>min verfügbar",
"limitedAvailabilityDays": "Für <%= days %>t <%= hours %>std und <%= minutes %>min verfügbar", "limitedAvailabilityDays": "Für <%= days %>t <%= hours %>std und <%= minutes %>min verfügbar",
"amountExp": "<%= amount %> Exp", "amountExp": "<%= amount %> Exp",
"newStuffPostedOn": "Veröffentlicht am <%= publishDate %> um <%= publishTime %>" "newStuffPostedOn": "Veröffentlicht am <%= publishDate %> um <%= publishTime %>",
"helpSupportHabitica": "Hilf Habitica zu unterstützen"
} }

View File

@@ -184,7 +184,7 @@
"questTRexCompletion": "Der wilde Dinosaurier hört endlich zu toben und zu randalieren auf, setzt sich ruhig hin und fängt an sich mit den riesigen Hähnen anzufreunden. @Urse strahlt ihn an. \"Sie sind doch gar keine so schlimmen Haustiere! Sie brauchen einfach nur ein bisschen Disziplin. Hier, nimm Dir ein paar Tyrannosaurus-Eier mit!\"", "questTRexCompletion": "Der wilde Dinosaurier hört endlich zu toben und zu randalieren auf, setzt sich ruhig hin und fängt an sich mit den riesigen Hähnen anzufreunden. @Urse strahlt ihn an. \"Sie sind doch gar keine so schlimmen Haustiere! Sie brauchen einfach nur ein bisschen Disziplin. Hier, nimm Dir ein paar Tyrannosaurus-Eier mit!\"",
"questTRexBoss": "Fleischerner Tyrannosaurus", "questTRexBoss": "Fleischerner Tyrannosaurus",
"questTRexUndeadText": "Der Dinosaurier aus den Tiefen der Erde", "questTRexUndeadText": "Der Dinosaurier aus den Tiefen der Erde",
"questTRexUndeadNotes": "Während die uralten Dinosaurier der Stoïstillen Steppen durch HabitCity wandern, hört man auf ein mal einen angstvollen Schrei aus Richtung des Grand Museums. @Baconsaur ruft: \"Das Tyrannosaurus-Skelett im Museum fängt an sich zu bewegen! Es muss die Anwesenheit seiner Artgenossen gewittert haben!\" Das knöcherne Biest bleckt seine monströsen Zähne und klappert auf Dich zu. Wie wirst Du in der Lage sein eine Kreatur zu besiegen, die bereits tot ist? Du wirst schnell zuschlagen müssen, bevor sie sich selbst heilt!", "questTRexUndeadNotes": "Während die uralten Dinosaurier der Stoïstillen Steppen durch Habit City wandern, hört man auf ein mal einen angstvollen Schrei aus Richtung des Grand Museums. @Baconsaur ruft: \"Das Tyrannosaurus-Skelett im Museum fängt an sich zu bewegen! Es muss die Anwesenheit seiner Artgenossen gewittert haben!\" Das knöcherne Biest bleckt seine monströsen Zähne und klappert auf Dich zu. Wie wirst Du in der Lage sein eine Kreatur zu besiegen, die bereits tot ist? Du wirst schnell zuschlagen müssen, bevor sie sich selbst heilt!",
"questTRexUndeadCompletion": "Die glühenden Augen des Tyrannosaurus werden dunkel und trüb und er begibt sich zurück zu seinem Sockel. Alle atmen vor Erleichterung auf. \"Seht nur!\", sagt @Baconsaur, \"einige der versteinerten Eier sind plötzlich wie neu! Vielleicht werden sie ja für Dich ausschlüpfen.\"", "questTRexUndeadCompletion": "Die glühenden Augen des Tyrannosaurus werden dunkel und trüb und er begibt sich zurück zu seinem Sockel. Alle atmen vor Erleichterung auf. \"Seht nur!\", sagt @Baconsaur, \"einige der versteinerten Eier sind plötzlich wie neu! Vielleicht werden sie ja für Dich ausschlüpfen.\"",
"questTRexUndeadBoss": "Skelettierter Tyrannosaurus", "questTRexUndeadBoss": "Skelettierter Tyrannosaurus",
"questTRexUndeadRageTitle": "Knöcherne Heilung", "questTRexUndeadRageTitle": "Knöcherne Heilung",
@@ -513,7 +513,7 @@
"questHippoDropHippoEgg": "Nilpferd (Ei)", "questHippoDropHippoEgg": "Nilpferd (Ei)",
"questHippoUnlockText": "Schaltet den Kauf von Nilpferdeiern auf dem Marktplatz frei", "questHippoUnlockText": "Schaltet den Kauf von Nilpferdeiern auf dem Marktplatz frei",
"farmFriendsText": "\"Farmfreunde\" Quest-Paket", "farmFriendsText": "\"Farmfreunde\" Quest-Paket",
"farmFriendsNotes": "Beinhaltet 'Die Muhtantische Kuh', 'Reite die Nacht-Mähre', und 'Der Donner-Bock'. Verfügbar bis zum 31. August.", "farmFriendsNotes": "Beinhaltet 'Die Muhtantische Kuh', 'Reite die Nacht-Mähre', und 'Der Donner-Bock'. Verfügbar bis zum 30. September.",
"witchyFamiliarsText": "\"Hexenhafte Haustiere\" Quest-Paket", "witchyFamiliarsText": "\"Hexenhafte Haustiere\" Quest-Paket",
"witchyFamiliarsNotes": "Beinhaltet 'Der Rattenkönig', 'Die eisige Arachnoide', und 'Sumpf des Chaos-Froschs'. Verfügbar bis zum 31. Oktober.", "witchyFamiliarsNotes": "Beinhaltet 'Der Rattenkönig', 'Die eisige Arachnoide', und 'Sumpf des Chaos-Froschs'. Verfügbar bis zum 31. Oktober.",
"questGroupLostMasterclasser": "Geheimnis der Klassenmeister", "questGroupLostMasterclasser": "Geheimnis der Klassenmeister",

View File

@@ -120,7 +120,7 @@
"paypalCanceled": "Dein Abonnement wurde gekündigt", "paypalCanceled": "Dein Abonnement wurde gekündigt",
"choosePaymentMethod": "Wähle Deine Zahlungsmethode", "choosePaymentMethod": "Wähle Deine Zahlungsmethode",
"buyGemsSupportsDevs": "Der Kauf von Edelsteinen unterstützt die Entwickler und hilft Habitica am Laufen zu halten", "buyGemsSupportsDevs": "Der Kauf von Edelsteinen unterstützt die Entwickler und hilft Habitica am Laufen zu halten",
"support": "HILFE", "support": "Hilfe",
"gemBenefitLeadin": "Was kann man mit Edelsteinen kaufen?", "gemBenefitLeadin": "Was kann man mit Edelsteinen kaufen?",
"gemBenefit1": "Einzigartige und modische Verkleidungen für Deinen Avatar.", "gemBenefit1": "Einzigartige und modische Verkleidungen für Deinen Avatar.",
"gemBenefit2": "Hintergründe, die Deinen Avatar in die Welt von Habitica eintauchen lassen!", "gemBenefit2": "Hintergründe, die Deinen Avatar in die Welt von Habitica eintauchen lassen!",

View File

@@ -447,6 +447,15 @@
"weaponSpecialSpring2022HealerText": "Peridot Wand", "weaponSpecialSpring2022HealerText": "Peridot Wand",
"weaponSpecialSpring2022HealerNotes": "Use this wand to tap into peridots healing properties, whether it be to bring calm, positivity, or kindheartedness. Increases Intelligence by <%= int %>. Limited Edition 2022 Spring Gear.", "weaponSpecialSpring2022HealerNotes": "Use this wand to tap into peridots healing properties, whether it be to bring calm, positivity, or kindheartedness. Increases Intelligence by <%= int %>. Limited Edition 2022 Spring Gear.",
"weaponSpecialFall2022RogueText": "Cucumber Blade",
"weaponSpecialFall2022RogueNotes": "Not only can you defend yourself with this cucumber, it also makes for a tasty meal. Increases Strength by <%= str %>. Limited Edition 2022 Fall Gear.",
"weaponSpecialFall2022WarriorText": "Orcish Ripsword",
"weaponSpecialFall2022WarriorNotes": "Maybe more suited for cutting logs or crusty loaves of bread than enemy armor, but RAWR! It sure looks fearsome! Increases Strength by <%= str %>. Limited Edition 2022 Fall Gear.",
"weaponSpecialFall2022MageText": "Wind Blasts",
"weaponSpecialFall2022MageNotes": "These mighty gusts remain in your wake as you take off toward the skies. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2022 Fall Gear.",
"weaponSpecialFall2022HealerText": "Right Peeker Eye",
"weaponSpecialFall2022HealerNotes": "To claim victory, hold it forth and utter the words of command: 'Eye One!' Increases Intelligence by <%= int %>. Limited Edition 2022 Fall Gear.",
"weaponMystery201411Text": "Pitchfork of Feasting", "weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.", "weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth", "weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -1083,6 +1092,15 @@
"armorSpecialSummer2022HealerText": "Angelfish Tail", "armorSpecialSummer2022HealerText": "Angelfish Tail",
"armorSpecialSummer2022HealerNotes": "Use your colorful fins to scoot about the reef and help those in need of rest and healing. Increases Constitution by <%= con %>. Limited Edition 2022 Summer Gear.", "armorSpecialSummer2022HealerNotes": "Use your colorful fins to scoot about the reef and help those in need of rest and healing. Increases Constitution by <%= con %>. Limited Edition 2022 Summer Gear.",
"armorSpecialFall2022RogueText": "Kappa Armor",
"armorSpecialFall2022RogueNotes": "Whether youre swimming, sneaking, or wrestling, you will be safe in this armor. Increases Perception by <%= per %>. Limited Edition 2022 Fall Gear.",
"armorSpecialFall2022WarriorText": "Orcish Armor",
"armorSpecialFall2022WarriorNotes": "RAWR! BIG SHOULDERS mean you are BIG STRONG! Increases Constitution by <%= con %>. Limited Edition 2022 Fall Gear.",
"armorSpecialFall2022MageText": "Harpy Armor",
"armorSpecialFall2022MageNotes": "Fly as fast as the wind with these wonderful wings and hold what you care most about tight in these terrifying talons. Increases Intelligence by <%= int %>. Limited Edition 2022 Fall Gear.",
"armorSpecialFall2022HealerText": "Profusion of Peeker Pods",
"armorSpecialFall2022HealerNotes": "How many peeps could a Peeker peep, if a Peeker could peep peeps? Increases Constitution by <%= con %>. Limited Edition 2022 Fall Gear.",
"armorMystery201402Text": "Messenger Robes", "armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.", "armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor", "armorMystery201403Text": "Forest Walker Armor",
@@ -1793,6 +1811,15 @@
"headSpecialSpring2022HealerText": "Peridot Helmet", "headSpecialSpring2022HealerText": "Peridot Helmet",
"headSpecialSpring2022HealerNotes": "This mysterious helmet preserves your privacy as you tackle your tasks. Increases Intelligence by <%= int %>. Limited Edition 2022 Spring Gear.", "headSpecialSpring2022HealerNotes": "This mysterious helmet preserves your privacy as you tackle your tasks. Increases Intelligence by <%= int %>. Limited Edition 2022 Spring Gear.",
"headSpecialFall2022RogueText": "Kappa Mask",
"headSpecialFall2022RogueNotes": "With this metal cap upon your head, you will have extra protection when you venture onto land. Increases Perception by <%= per %>. Limited Edition 2022 Fall Gear.",
"headSpecialFall2022WarriorText": "Orc Mask",
"headSpecialFall2022WarriorNotes": "Tusks tough and sharp enough to pierce pumpkins! RAWR! Increases Strength by <%= str %>. Limited Edition 2022 Fall Gear.",
"headSpecialFall2022MageText": "Harpy Mask",
"headSpecialFall2022MageNotes": "Entrance and lure others close with this magical maiden mask. Increases Perception by <%= per %>. Limited Edition 2022 Fall Gear.",
"headSpecialFall2022HealerText": "Peeker Mask",
"headSpecialFall2022HealerNotes": "Beauty is in there. Somewhere! Increases Intelligence by <%= int %>. Limited Edition 2022 Fall Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm", "headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.", "headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -2345,6 +2372,11 @@
"shieldSpecialSummer2022HealerText": "Remedial Ripples", "shieldSpecialSummer2022HealerText": "Remedial Ripples",
"shieldSpecialSummer2022HealerNotes": "Send out restorative magic in gentle ripples through the reef. Increases Constitution by <%= con %>. Limited Edition 2022 Summer Gear.", "shieldSpecialSummer2022HealerNotes": "Send out restorative magic in gentle ripples through the reef. Increases Constitution by <%= con %>. Limited Edition 2022 Summer Gear.",
"shieldSpecialFall2022WarriorText": "Orc Shield",
"shieldSpecialFall2022WarriorNotes": "RAWR or TREAT! Increases Constitution by <%= con %>. Limited Edition 2022 Fall Gear.",
"shieldSpecialFall2022HealerText": "Left Peeker Eye",
"shieldSpecialFall2022HealerNotes": "Eye Two, look upon this costume and tremble. Increases Constitution by <%= con %>. Limited Edition 2022 Fall Gear.",
"shieldMystery201601Text": "Resolution Slayer", "shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.", "shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield", "shieldMystery201701Text": "Time-Freezer Shield",

View File

@@ -187,6 +187,10 @@
"summer2022WaterspoutWarriorSet": "Waterspout (Warrior)", "summer2022WaterspoutWarriorSet": "Waterspout (Warrior)",
"summer2022MantaRayMageSet": "Manta Ray (Mage)", "summer2022MantaRayMageSet": "Manta Ray (Mage)",
"summer2022AngelfishHealerSet": "Angelfish (Healer)", "summer2022AngelfishHealerSet": "Angelfish (Healer)",
"fall2022KappaRogueSet": "Kappa (Rogue)",
"fall2022OrcWarriorSet": "Orc (Warrior)",
"fall2022HarpyMageSet": "Harpy (Mage)",
"fall2022WatcherHealerSet": "Watcher (Healer)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailability": "Available for purchase until <%= date(locale) %>.",
"eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.", "eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.",
"dateEndJanuary": "January 31", "dateEndJanuary": "January 31",

View File

@@ -1021,23 +1021,23 @@
"headSpecialSummer2017RogueText": "Yelmo de Dragón Marino", "headSpecialSummer2017RogueText": "Yelmo de Dragón Marino",
"headSpecialSummer2017RogueNotes": "Este yelmo cambia de color ayudándote a camuflarte con el entorno. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de verano 2017.", "headSpecialSummer2017RogueNotes": "Este yelmo cambia de color ayudándote a camuflarte con el entorno. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de verano 2017.",
"headSpecialSummer2017WarriorText": "Yelmo Castilloarena", "headSpecialSummer2017WarriorText": "Yelmo Castilloarena",
"headSpecialSummer2017WarriorNotes": "El más fino yelmo que podrías esperar vestir... al menos, hasta que suba la marea. Aumenta la Fuerza en <%= str %>. Equipo de Edición Limitada Verano 2017.", "headSpecialSummer2017WarriorNotes": "El más fino yelmo que podrías esperar vestir... al menos, hasta que suba la marea. Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de verano 2017.",
"headSpecialSummer2017MageText": "Sombrero Torbellino", "headSpecialSummer2017MageText": "Sombrero Torbellino",
"headSpecialSummer2017MageNotes": "Este sombre está compuesto enteramente por un giratorio torbellino invertido. Aumenta la Percepción en <%= per %>. Equipo de Edición Limitada Verano 2017.", "headSpecialSummer2017MageNotes": "Este sombre está compuesto enteramente por un giratorio torbellino invertido. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de verano 2017.",
"headSpecialSummer2017HealerText": "Corona de Criaturas Marinas", "headSpecialSummer2017HealerText": "Corona de Criaturas Marinas",
"headSpecialSummer2017HealerNotes": "Este yelmo está hecho de amistosas criaturas marinas que estás descansando temporalmente sobre tu cabeza, dándote sabios consejos. Aumenta la Inteligencia en <%= int %>. Equipo de Edición Limitada Verano 2017.", "headSpecialSummer2017HealerNotes": "Este yelmo está hecho de amistosas criaturas marinas que estás descansando temporalmente sobre tu cabeza, dándote sabios consejos. Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada de verano 2017.",
"headSpecialFall2017RogueText": "Casco de Calabaza", "headSpecialFall2017RogueText": "Casco de Calabaza",
"headSpecialFall2017RogueNotes": "¿Preparado para tratos? ¡Hora de ponerse este festivo y brillante casco! Aumenta la Percepción en <%= per %>. Edición Limitada 2017 del Equipamiento de Otoño.", "headSpecialFall2017RogueNotes": "¿Preparado para tratos? ¡Hora de ponerse este festivo y brillante casco! Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de otoño 2017.",
"headSpecialFall2017WarriorText": "Casco de Golosinas de Maíz", "headSpecialFall2017WarriorText": "Casco de Golosinas de Maíz",
"headSpecialFall2017WarriorNotes": "Este casco puede parecer una delicia, ¡pero a las tareas pendientes obstinadas no les parecerá tan dulce! Aumenta la Fuerza en un <%= str %>. Equipamiento de Otoño de Edición Limitada del 2017.", "headSpecialFall2017WarriorNotes": "Este casco puede parecer una delicia, ¡pero a las tareas pendientes obstinadas no les parecerá tan dulce! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de otoño 2017.",
"headSpecialFall2017MageText": "Casco del Baile de Máscaras", "headSpecialFall2017MageText": "Casco del Baile de Máscaras",
"headSpecialFall2017MageNotes": "¡Cuando aparezcas con este sombrero emplumado, todos se quedarán preguntándose la identidad del mágico extraño de la sala! Aumenta la Percepción en un <%= per %>. Equipamiento de Otoño de Edición Limitada del 2017.", "headSpecialFall2017MageNotes": "¡Cuando aparezcas con este sombrero emplumado, todos se quedarán preguntándose la identidad del mágico extraño de la sala! Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de otoño 2017.",
"headSpecialFall2017HealerText": "Casco de Casa Encantada", "headSpecialFall2017HealerText": "Casco de Casa Encantada",
"headSpecialFall2017HealerNotes": "¡Invita a espíritus espeluznantes y a criaturas afables a buscar tus poderes curativos al llevar este casco! Aumenta la Inteligencia en un <%= int %>. Equipamiento de Otoño de Edición Limitada del 2017.", "headSpecialFall2017HealerNotes": "¡Invita a espíritus espeluznantes y a criaturas afables a buscar tus poderes curativos al llevar este casco! Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada de otoño 2017.",
"headSpecialNye2017Text": "Sombrero Festivo Rocambolesco", "headSpecialNye2017Text": "Sombrero Festivo Rocambolesco",
"headSpecialNye2017Notes": "¡Has recibido un Sombrero Festivo Rocambolesco! ¡Llévalo con orgullo mientras resuena en Año Nuevo! No otorga ningún beneficio.", "headSpecialNye2017Notes": "¡Has recibido un Sombrero Festivo Rocambolesco! ¡Llévalo con orgullo mientras resuena en Año Nuevo! No otorga ningún beneficio.",
"headSpecialWinter2018RogueText": "Casco de Reno", "headSpecialWinter2018RogueText": "Casco de Reno",
"headSpecialWinter2018RogueNotes": "¡El disfraz festivo perfecto, con un foco delantero incorporado! Aumenta la Percepción en un <%= per %>. Equipamiento de Invierno de Edición Limitada del 2017-2018.", "headSpecialWinter2018RogueNotes": "¡El disfraz festivo perfecto, con un foco delantero incorporado! Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de invierno 2017-2018.",
"headSpecialWinter2018WarriorText": "Casco Caja de Regalo", "headSpecialWinter2018WarriorText": "Casco Caja de Regalo",
"headSpecialWinter2018WarriorNotes": "La superficie y el lazo de esta desenfadada caja no solo son festivos, sino bastante robustos también. Aumenta la Fuerza en un <%= str %>. Armamento de Invierno de Edición Limitada del 2017-2018.", "headSpecialWinter2018WarriorNotes": "La superficie y el lazo de esta desenfadada caja no solo son festivos, sino bastante robustos también. Aumenta la Fuerza en un <%= str %>. Armamento de Invierno de Edición Limitada del 2017-2018.",
"headSpecialWinter2018MageText": "Sombrero de Copa Centelleante", "headSpecialWinter2018MageText": "Sombrero de Copa Centelleante",

View File

@@ -661,8 +661,8 @@
"backgroundFrozenPolarWatersNotes": "Esplora le ghiacciate acque polari.", "backgroundFrozenPolarWatersNotes": "Esplora le ghiacciate acque polari.",
"backgrounds122021": "SET 91: Rilasciato a dicembre 2021", "backgrounds122021": "SET 91: Rilasciato a dicembre 2021",
"backgroundIcePalaceShopNotes": "Regna in un palazzo di ghiaccio.", "backgroundIcePalaceShopNotes": "Regna in un palazzo di ghiaccio.",
"backgroundWinterCanyonText": "Forra invernale", "backgroundWinterCanyonText": "Canyon Invernale",
"backgroundWinterCanyonNotes": "Avventurati in una forra invernale!", "backgroundWinterCanyonNotes": "Avventurati in un Canyon Invernale!",
"backgroundIcePalaceText": "Palazzo di ghiaccio", "backgroundIcePalaceText": "Palazzo di ghiaccio",
"backgroundIcePalaceNotes": "Regna in un palazzo di ghiaccio.", "backgroundIcePalaceNotes": "Regna in un palazzo di ghiaccio.",
"backgrounds012022": "SET 92: Rilasciato Gennaio 2022", "backgrounds012022": "SET 92: Rilasciato Gennaio 2022",

View File

@@ -5,12 +5,12 @@
"accept2Terms": "e l'", "accept2Terms": "e l'",
"chores": "Faccende di casa", "chores": "Faccende di casa",
"clearBrowserData": "Pulizia dati del browser", "clearBrowserData": "Pulizia dati del browser",
"communityExtensions": "<a href='https://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations' target='_blank'>Add-on ed estensioni</a>", "communityExtensions": "Add-on ed Estensioni",
"communityFacebook": "Facebook", "communityFacebook": "Facebook",
"companyAbout": "Come funziona", "companyAbout": "Come funziona",
"companyBlog": "Blog", "companyBlog": "Blog",
"companyContribute": "Contribuisci", "companyContribute": "Contribuire ad Habitica",
"companyDonate": "Fai una donazione", "companyDonate": "Fai una donazione ad Habitica",
"forgotPassword": "Password dimenticata?", "forgotPassword": "Password dimenticata?",
"emailNewPass": "Ricevi per e-mail il link per reimpostare la password", "emailNewPass": "Ricevi per e-mail il link per reimpostare la password",
"forgotPasswordSteps": "Inserisci il tuo nome utente o l'indirizzo e-mail che hai usato per registrare il tuo account Habitica.", "forgotPasswordSteps": "Inserisci il tuo nome utente o l'indirizzo e-mail che hai usato per registrare il tuo account Habitica.",
@@ -53,8 +53,8 @@
"marketing4Lead3-1": "Vuoi vivere la tua vita come in un gioco?", "marketing4Lead3-1": "Vuoi vivere la tua vita come in un gioco?",
"marketing4Lead3-2": "Sei interessato a gestire un gruppo nel settore dell'educazione, del benessere e in altri settori?", "marketing4Lead3-2": "Sei interessato a gestire un gruppo nel settore dell'educazione, del benessere e in altri settori?",
"marketing4Lead3Title": "Trasforma tutto in gioco", "marketing4Lead3Title": "Trasforma tutto in gioco",
"mobileAndroid": "Android", "mobileAndroid": "App su Android",
"mobileIOS": "iOS", "mobileIOS": "App su iOS",
"oldNews": "Novità", "oldNews": "Novità",
"newsArchive": "Archivio delle notizie su Wikia (multilingua)", "newsArchive": "Archivio delle notizie su Wikia (multilingua)",
"setNewPass": "Imposta nuova password", "setNewPass": "Imposta nuova password",
@@ -187,5 +187,6 @@
"minPasswordLength": "La password deve essere di almeno 8 caratteri.", "minPasswordLength": "La password deve essere di almeno 8 caratteri.",
"enterHabitica": "Entra in Habitica", "enterHabitica": "Entra in Habitica",
"socialAlreadyExists": "Questo social è già collegato ad un account di Habitica.", "socialAlreadyExists": "Questo social è già collegato ad un account di Habitica.",
"emailUsernamePlaceholder": "es. habitrabbit oppure grifone@example.com" "emailUsernamePlaceholder": "es. habitrabbit oppure grifone@example.com",
"footerProduct": "Prodotto"
} }

View File

@@ -81,7 +81,7 @@
"newBaileyUpdate": "Nuovo aggiornamento da Bailey!", "newBaileyUpdate": "Nuovo aggiornamento da Bailey!",
"tellMeLater": "Ricordamelo più tardi", "tellMeLater": "Ricordamelo più tardi",
"dismissAlert": "Nascondi questo annuncio", "dismissAlert": "Nascondi questo annuncio",
"donateText3": "Habitica è un progetto open-source che dipende dal supporto degli utenti. I soldi che spendi in Gemme ci aiutano a tenere accesi i nostri server, mantenere un piccolo staff, sviluppare nuove funzionalità e dare degli incentivi ai volontari programmatori. Grazie per la tua generosità!", "donateText3": "Habitica è un progetto open-source che dipende dal supporto degli utenti. I soldi che spendi in Gemme ci aiutano a tenere accesi i nostri server, mantenere un piccolo staff, sviluppare nuove funzionalità e dare degli incentivi ai nostri volontari",
"card": "Carta di credito", "card": "Carta di credito",
"paymentMethods": "Paga utilizzando", "paymentMethods": "Paga utilizzando",
"paymentSuccessful": "Il tuo pagamento ha avuto successo!", "paymentSuccessful": "Il tuo pagamento ha avuto successo!",
@@ -130,5 +130,6 @@
"limitedAvailabilityMinutes": "Disponibile per <%= minutes %> minuti e <%= seconds %> secondi", "limitedAvailabilityMinutes": "Disponibile per <%= minutes %> minuti e <%= seconds %> secondi",
"limitedAvailabilityDays": "Disponibile per <%= days %> giorni, <%= hours %> ore e <%= minutes %> minuti", "limitedAvailabilityDays": "Disponibile per <%= days %> giorni, <%= hours %> ore e <%= minutes %> minuti",
"limitedAvailabilityHours": "Disponibile per <%= hours %> ore e <%= minutes %> minuti", "limitedAvailabilityHours": "Disponibile per <%= hours %> ore e <%= minutes %> minuti",
"amountExp": "<%= amount %> Exp" "amountExp": "<%= amount %> Exp",
"helpSupportHabitica": "Aiutare a Supportare Habitica"
} }

View File

@@ -513,7 +513,7 @@
"questHippoDropHippoEgg": "Ippopotamo (Uovo)", "questHippoDropHippoEgg": "Ippopotamo (Uovo)",
"questHippoUnlockText": "Sblocca le uova di Ippopotamo acquistabili nel Mercato", "questHippoUnlockText": "Sblocca le uova di Ippopotamo acquistabili nel Mercato",
"farmFriendsText": "Pacchetto missioni Amici della Fattoria", "farmFriendsText": "Pacchetto missioni Amici della Fattoria",
"farmFriendsNotes": "Contiente \"La Mucca Muutante\", \"Cavalca il Destriero dell'Incubo\", e \"L'Ariete Tuonante\". Disponibile fino al 31 agosto.", "farmFriendsNotes": "Contiene \"La Mucca Muutante\", \"Cavalca il Destriero dell'Incubo\", e \"L'Ariete Tuonante\". Disponibile fino al 30 settembre.",
"witchyFamiliarsText": "Pacchetto di Missioni dei Familiari Stregati", "witchyFamiliarsText": "Pacchetto di Missioni dei Familiari Stregati",
"witchyFamiliarsNotes": "Contiene 'Il Re dei Ratti', 'L'Aracnide Ghiacciato', 'Palude della Rana del Disordine'. Disponibile fino al 31 Ottobre.", "witchyFamiliarsNotes": "Contiene 'Il Re dei Ratti', 'L'Aracnide Ghiacciato', 'Palude della Rana del Disordine'. Disponibile fino al 31 Ottobre.",
"questGroupLostMasterclasser": "Mistero dei Masterclasser", "questGroupLostMasterclasser": "Mistero dei Masterclasser",

View File

@@ -120,7 +120,7 @@
"paypalCanceled": "Il tuo abbonameno è stato disdetto", "paypalCanceled": "Il tuo abbonameno è stato disdetto",
"choosePaymentMethod": "Scegli il metodo di pagamento", "choosePaymentMethod": "Scegli il metodo di pagamento",
"buyGemsSupportsDevs": "Comprare Gemme supporta gli sviluppatori e aiuta Habitica a continuare a funzionare", "buyGemsSupportsDevs": "Comprare Gemme supporta gli sviluppatori e aiuta Habitica a continuare a funzionare",
"support": "SUPPORTA", "support": "Supporta",
"gemBenefitLeadin": "Cosa puoi comprare con le Gemme?", "gemBenefitLeadin": "Cosa puoi comprare con le Gemme?",
"gemBenefit1": "Costumi unici e alla moda per il tuo avatar.", "gemBenefit1": "Costumi unici e alla moda per il tuo avatar.",
"gemBenefit2": "Sfondi per immergere il tuo avatar nel mondi di Habitica!", "gemBenefit2": "Sfondi per immergere il tuo avatar nel mondi di Habitica!",

View File

@@ -5,7 +5,7 @@
"accept2Terms": "そして", "accept2Terms": "そして",
"chores": "雑用", "chores": "雑用",
"clearBrowserData": "ブラウザデータを削除する", "clearBrowserData": "ブラウザデータを削除する",
"communityExtensions": "<a href='https://habitica.fandom.com/ja/wiki/拡張機能・アドオン・カスタマイズ' target='_blank'>アドオンと拡張機能</a>", "communityExtensions": "アドオンと拡張機能",
"communityFacebook": "Facebook", "communityFacebook": "Facebook",
"companyAbout": "機能説明", "companyAbout": "機能説明",
"companyBlog": "ブログ", "companyBlog": "ブログ",

View File

@@ -2696,7 +2696,7 @@
"shieldMystery202209Notes": "魔術の知識を身につけるには多くの本を読まなければいけませんが、その過程はきっと楽しいはず。効果なし。2022年9月有料会員アイテム。", "shieldMystery202209Notes": "魔術の知識を身につけるには多くの本を読まなければいけませんが、その過程はきっと楽しいはず。効果なし。2022年9月有料会員アイテム。",
"shieldMystery202209Text": "山積みの魔法書", "shieldMystery202209Text": "山積みの魔法書",
"eyewearArmoireComedyMaskText": "喜劇の仮面", "eyewearArmoireComedyMaskText": "喜劇の仮面",
"eyewearArmoireComedyMaskNotes": "さあ陽気に!この古風な仮面は、汝の幸せな心のためにある。その陽気さと賑わいを演じ、歓待し、舞台の上で表現しう。体質が<%= con %>上がります。ラッキー宝箱演劇の仮面セット2個中1個目のアイテム。", "eyewearArmoireComedyMaskNotes": "さあ陽気に!この古風な仮面は、汝の幸せな心のためにある。その陽気さと賑わいを演じ、歓待し、舞台の上で表現しましょう。体質が<%= con %>上がります。ラッキー宝箱演劇の仮面セット2個中1個目のアイテム。",
"eyewearArmoireTragedyMaskText": "悲劇の仮面", "eyewearArmoireTragedyMaskText": "悲劇の仮面",
"eyewearArmoireTragedyMaskNotes": "何たる悲しみ!ここにあるのは重厚な仮面。汝は哀れを演じる者。舞台上で気取って歩き、頭を抱え、苦悩と悲痛を表現しう。知能が<%= int %>上がります。ラッキー宝箱演劇の仮面セット2個中2個目のアイテム。" "eyewearArmoireTragedyMaskNotes": "何たる悲しみ!ここにあるのは重厚な仮面。汝は哀れを演じる者。舞台上で気取って歩き、頭を抱え、苦悩と悲痛を表現しましょう。知能が<%= int %>上がります。ラッキー宝箱演劇の仮面セット2個中2個目のアイテム。"
} }

View File

@@ -513,7 +513,7 @@
"questHippoDropHippoEgg": "カバ(たまご)", "questHippoDropHippoEgg": "カバ(たまご)",
"questHippoUnlockText": "市場でカバのたまごを買えるようになります", "questHippoUnlockText": "市場でカバのたまごを買えるようになります",
"farmFriendsText": "「まきばの友達」クエストセット", "farmFriendsText": "「まきばの友達」クエストセット",
"farmFriendsNotes": "「モー変異した牛」「悪夢を乗りこなせ」「雷雄羊」のセット。8月31日まで購入できます。", "farmFriendsNotes": "「モー変異した牛」「悪夢を乗りこなせ」「雷雄羊」のセット。9月30日まで購入できます。",
"witchyFamiliarsText": "「魔女の使い魔」クエストセット", "witchyFamiliarsText": "「魔女の使い魔」クエストセット",
"witchyFamiliarsNotes": "「ネズミ王」「氷のクモ」「散らかしカエルの沼」のセット。10月31日まで購入できます。", "witchyFamiliarsNotes": "「ネズミ王」「氷のクモ」「散らかしカエルの沼」のセット。10月31日まで購入できます。",
"questGroupLostMasterclasser": "クラス・マスターの謎", "questGroupLostMasterclasser": "クラス・マスターの謎",

View File

@@ -5,12 +5,12 @@
"accept2Terms": "e com a", "accept2Terms": "e com a",
"chores": "Afazeres", "chores": "Afazeres",
"clearBrowserData": "Limpar Dados do Navegador", "clearBrowserData": "Limpar Dados do Navegador",
"communityExtensions": "<a href='https://habitica.fandom.com/pt-br/wiki/Extens%C3%B5es,_Add-ons_e_Personaliza%C3%A7%C3%B5es' target='_blank'>Add-ons e Extensões</a>", "communityExtensions": "Complementos e Extensões",
"communityFacebook": "Facebook", "communityFacebook": "Facebook",
"companyAbout": "Como funciona", "companyAbout": "Como funciona",
"companyBlog": "Blog", "companyBlog": "Blog",
"companyContribute": "Contribuir", "companyContribute": "Contribuindo para o Habitica",
"companyDonate": "Doar", "companyDonate": "Doar para o Habitica",
"forgotPassword": "Esqueceu a senha?", "forgotPassword": "Esqueceu a senha?",
"emailNewPass": "Enviar por Email uma Nova Senha", "emailNewPass": "Enviar por Email uma Nova Senha",
"forgotPasswordSteps": "Digite seu nome de usuário ou o endereço de e-mail que você usou para registrar sua conta no Habitica.", "forgotPasswordSteps": "Digite seu nome de usuário ou o endereço de e-mail que você usou para registrar sua conta no Habitica.",
@@ -53,8 +53,8 @@
"marketing4Lead3-1": "Quer gamificar sua vida?", "marketing4Lead3-1": "Quer gamificar sua vida?",
"marketing4Lead3-2": "Interessado em coordenar um grupo em educação, bem-estar e outros?", "marketing4Lead3-2": "Interessado em coordenar um grupo em educação, bem-estar e outros?",
"marketing4Lead3Title": "Gamifique Tudo", "marketing4Lead3Title": "Gamifique Tudo",
"mobileAndroid": "Android", "mobileAndroid": "Aplicativo Android",
"mobileIOS": "iOS", "mobileIOS": "Aplicativo iOS",
"oldNews": "Notícias", "oldNews": "Notícias",
"newsArchive": "Arquivo de notícias na Wikia (multilíngue)", "newsArchive": "Arquivo de notícias na Wikia (multilíngue)",
"setNewPass": "Defina a Nova Senha", "setNewPass": "Defina a Nova Senha",
@@ -187,5 +187,6 @@
"minPasswordLength": "Senhas devem possuir 8 caracteres ou mais.", "minPasswordLength": "Senhas devem possuir 8 caracteres ou mais.",
"enterHabitica": "Entrar no Habitica", "enterHabitica": "Entrar no Habitica",
"emailUsernamePlaceholder": "Ex: habitilebre ou grifo@exemplo.com", "emailUsernamePlaceholder": "Ex: habitilebre ou grifo@exemplo.com",
"socialAlreadyExists": "Este login já está vinculado a uma conta existente do Habitica." "socialAlreadyExists": "Este login já está vinculado a uma conta existente do Habitica.",
"footerProduct": "Produto"
} }

View File

@@ -125,9 +125,9 @@
"weaponSpecialSpringRogueText": "Garras de Gancho", "weaponSpecialSpringRogueText": "Garras de Gancho",
"weaponSpecialSpringRogueNotes": "Ótimo para escalar altos prédios, e também para rasgar carpetes. Aumenta Força em <%= str %>. Equipamento Edição Limitada de Primavera 2014.", "weaponSpecialSpringRogueNotes": "Ótimo para escalar altos prédios, e também para rasgar carpetes. Aumenta Força em <%= str %>. Equipamento Edição Limitada de Primavera 2014.",
"weaponSpecialSpringWarriorText": "Espada de Cenoura", "weaponSpecialSpringWarriorText": "Espada de Cenoura",
"weaponSpecialSpringWarriorNotes": "Essa poderosa espada pode cortar inimigos com facilidade! Também serve como um delicioso lanche no meio das batalhas. Aumenta Força em <%= str %>. Equipamento Edição Limitada de Primavera 2014.", "weaponSpecialSpringWarriorNotes": "Essa poderosa espada pode cortar inimigos com facilidade! Também serve como um delicioso lanche no meio das batalhas. Aumenta Força em <%= str %>. Equipamento de Edição Limitada da Primavera de 2014.",
"weaponSpecialSpringMageText": "Cajado de Queijo-Suíço", "weaponSpecialSpringMageText": "Cajado de Queijo-Suíço",
"weaponSpecialSpringMageNotes": "Apenas os roedores mais poderosos podem confrontar sua fome para empunhar esse potente cajado. Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento Edição Limitada de Primavera 2014.", "weaponSpecialSpringMageNotes": "Apenas os roedores mais poderosos podem confrontar sua fome para empunhar esse potente cajado. Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2014.",
"weaponSpecialSpringHealerText": "Osso Encantador", "weaponSpecialSpringHealerText": "Osso Encantador",
"weaponSpecialSpringHealerNotes": "PEGA! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2014.", "weaponSpecialSpringHealerNotes": "PEGA! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2014.",
"weaponSpecialSummerRogueText": "Cutelo de Pirata", "weaponSpecialSummerRogueText": "Cutelo de Pirata",
@@ -159,9 +159,9 @@
"weaponSpecialSpring2015WarriorText": "Clava de Osso", "weaponSpecialSpring2015WarriorText": "Clava de Osso",
"weaponSpecialSpring2015WarriorNotes": "É uma legítima clava de osso para cachorrinhos super ferozes e definitivamente não um brinquedo de mastigar que a Feiticeira Sazonal te deu porque quem é um bom garoto? Queeem é um bom garoto?? Você!!! Você é um bom garoto!!! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2015.", "weaponSpecialSpring2015WarriorNotes": "É uma legítima clava de osso para cachorrinhos super ferozes e definitivamente não um brinquedo de mastigar que a Feiticeira Sazonal te deu porque quem é um bom garoto? Queeem é um bom garoto?? Você!!! Você é um bom garoto!!! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2015.",
"weaponSpecialSpring2015MageText": "Varinha de Mágico", "weaponSpecialSpring2015MageText": "Varinha de Mágico",
"weaponSpecialSpring2015MageNotes": "Invoque uma cenoura para si mesmo com essa elegante varinha. Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2015.", "weaponSpecialSpring2015MageNotes": "Invoque uma cenoura para si mesmo com essa elegante varinha. Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2015.",
"weaponSpecialSpring2015HealerText": "Matraca de Gato", "weaponSpecialSpring2015HealerText": "Matraca de Gato",
"weaponSpecialSpring2015HealerNotes": "Quando você a sacode, faz um clique-claque fascinante que manteria QUALQUER UM entretido por horas. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2015.", "weaponSpecialSpring2015HealerNotes": "Quando você a sacode, faz um clique-claque fascinante que manteria QUALQUER UM entretido por horas. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2015.",
"weaponSpecialSummer2015RogueText": "Coral Atirador", "weaponSpecialSummer2015RogueText": "Coral Atirador",
"weaponSpecialSummer2015RogueNotes": "Este parente do coral de fogo tem a habilidade de expelir seu veneno através da água. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Verão de 2015.", "weaponSpecialSummer2015RogueNotes": "Este parente do coral de fogo tem a habilidade de expelir seu veneno através da água. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Verão de 2015.",
"weaponSpecialSummer2015WarriorText": "Peixe-Espada Solar", "weaponSpecialSummer2015WarriorText": "Peixe-Espada Solar",
@@ -187,11 +187,11 @@
"weaponSpecialWinter2016HealerText": "Canhão de Confetes", "weaponSpecialWinter2016HealerText": "Canhão de Confetes",
"weaponSpecialWinter2016HealerNotes": "ÊEEEEEEEEEEE!!!!!!! QUE COMECEM AS MARAVILHAS DE INVERNO!!!!!!!! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Inverno de 2015 e 2016.", "weaponSpecialWinter2016HealerNotes": "ÊEEEEEEEEEEE!!!!!!! QUE COMECEM AS MARAVILHAS DE INVERNO!!!!!!!! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Inverno de 2015 e 2016.",
"weaponSpecialSpring2016RogueText": "Bolas de Fogo", "weaponSpecialSpring2016RogueText": "Bolas de Fogo",
"weaponSpecialSpring2016RogueNotes": "Você dominou a bola, a clava e a faca. Agora avance para malabarismo com fogo! Uhuul! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.", "weaponSpecialSpring2016RogueNotes": "Você dominou a bola, a clava e a faca. Agora avance para malabarismo com fogo! Uhuul! Aumenta Força em <%= str %>. Equipamento de Edição Limitada da Primavera de 2016.",
"weaponSpecialSpring2016WarriorText": "Marreta de Queijo", "weaponSpecialSpring2016WarriorText": "Marreta de Queijo",
"weaponSpecialSpring2016WarriorNotes": "Ninguém tem tantos amigos quanto o rato com queijo mussarela. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.", "weaponSpecialSpring2016WarriorNotes": "Ninguém tem tantos amigos quanto o rato com queijo mussarela. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.",
"weaponSpecialSpring2016MageText": "Cajado de Sinos", "weaponSpecialSpring2016MageText": "Cajado de Sinos",
"weaponSpecialSpring2016MageNotes": "Abra-Ga-ta-Bra! Tão deslumbrante, você poderia se hipnotizar! Ooh... Ele brilha... Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2016.", "weaponSpecialSpring2016MageNotes": "Abra-Ga-ta-Bra! Tão deslumbrante, você poderia se hipnotizar! Ooh... Ele brilha... Aumenta Inteligência em <%= int %> e Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2016.",
"weaponSpecialSpring2016HealerText": "Varinha de Flor da Primavera", "weaponSpecialSpring2016HealerText": "Varinha de Flor da Primavera",
"weaponSpecialSpring2016HealerNotes": "Com um aceno e uma piscada, você faz florestas e campos florescerem! Ou acerta ratos problemáticos na cabeça. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2016.", "weaponSpecialSpring2016HealerNotes": "Com um aceno e uma piscada, você faz florestas e campos florescerem! Ou acerta ratos problemáticos na cabeça. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2016.",
"weaponSpecialSummer2016RogueText": "Varinha Elétrica", "weaponSpecialSummer2016RogueText": "Varinha Elétrica",
@@ -219,7 +219,7 @@
"weaponSpecialWinter2017HealerText": "Varinha Açucarada", "weaponSpecialWinter2017HealerText": "Varinha Açucarada",
"weaponSpecialWinter2017HealerNotes": "Esta varinha pode atingir seus sonhos e te trazer visões de bombons dançantes. Aumenta a inteligência em <%= int %>. Equipamento de inverno da edição limitada 2016-2017.", "weaponSpecialWinter2017HealerNotes": "Esta varinha pode atingir seus sonhos e te trazer visões de bombons dançantes. Aumenta a inteligência em <%= int %>. Equipamento de inverno da edição limitada 2016-2017.",
"weaponSpecialSpring2017RogueText": "Cenouspada", "weaponSpecialSpring2017RogueText": "Cenouspada",
"weaponSpecialSpring2017RogueNotes": "Essas lâminas farão das tarefas algo fácil. E também servem para cortar vegetais! Yum! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2017.", "weaponSpecialSpring2017RogueNotes": "Essas lâminas farão das tarefas algo fácil. E também servem para cortar vegetais! Yum! Aumenta Força em <%= str %>. Equipamento de Edição Limitada da Primavera de 2017.",
"weaponSpecialSpring2017WarriorText": "Chicote Emplumado", "weaponSpecialSpring2017WarriorText": "Chicote Emplumado",
"weaponSpecialSpring2017WarriorNotes": "Esse poderoso chicote servirá para dominar a tarefa mais difícil de todas. Mas... ela também é... muito DIVERTIDA E DISPERSANTE!! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2017.", "weaponSpecialSpring2017WarriorNotes": "Esse poderoso chicote servirá para dominar a tarefa mais difícil de todas. Mas... ela também é... muito DIVERTIDA E DISPERSANTE!! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2017.",
"weaponSpecialSpring2017MageText": "Varinha Mágica Elegante", "weaponSpecialSpring2017MageText": "Varinha Mágica Elegante",
@@ -477,11 +477,11 @@
"armorSpecialGaymerxText": "Armadura do Guerreiro Arco-Íris", "armorSpecialGaymerxText": "Armadura do Guerreiro Arco-Íris",
"armorSpecialGaymerxNotes": "Para celebrar a Conferência GaymerX, esta armadura especial foi decorada com uma colorida e radiante estampa arco-íris! A GaymerX é uma conferência de games que celebra a comunidade LGBT e jogos e é aberta para todos.", "armorSpecialGaymerxNotes": "Para celebrar a Conferência GaymerX, esta armadura especial foi decorada com uma colorida e radiante estampa arco-íris! A GaymerX é uma conferência de games que celebra a comunidade LGBT e jogos e é aberta para todos.",
"armorSpecialSpringRogueText": "Traje Elegante de Gato", "armorSpecialSpringRogueText": "Traje Elegante de Gato",
"armorSpecialSpringRogueNotes": "Impecavelmente arrumado. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2014.", "armorSpecialSpringRogueNotes": "Impecavelmente arrumado. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2014.",
"armorSpecialSpringWarriorText": "Armadura de Trevo Metálico", "armorSpecialSpringWarriorText": "Armadura de Trevo Metálico",
"armorSpecialSpringWarriorNotes": "Suave como um trevo, forte como aço! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2014.", "armorSpecialSpringWarriorNotes": "Suave como um trevo, forte como aço! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2014.",
"armorSpecialSpringMageText": "Túnica de Roedor", "armorSpecialSpringMageText": "Túnica de Roedor",
"armorSpecialSpringMageNotes": "Ratos são um barato! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2014.", "armorSpecialSpringMageNotes": "Ratos são um barato! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2014.",
"armorSpecialSpringHealerText": "Túnica de Filhote Felpudo", "armorSpecialSpringHealerText": "Túnica de Filhote Felpudo",
"armorSpecialSpringHealerNotes": "Quente e confortável, mas protege seu dono do perigo. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2014.", "armorSpecialSpringHealerNotes": "Quente e confortável, mas protege seu dono do perigo. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2014.",
"armorSpecialSummerRogueText": "Túnica de Pirata", "armorSpecialSummerRogueText": "Túnica de Pirata",
@@ -511,9 +511,9 @@
"armorSpecialSpring2015RogueText": "Túnicas Guinchantes", "armorSpecialSpring2015RogueText": "Túnicas Guinchantes",
"armorSpecialSpring2015RogueNotes": "Peludo, macio e definitivamente não inflamável. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2015.", "armorSpecialSpring2015RogueNotes": "Peludo, macio e definitivamente não inflamável. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2015.",
"armorSpecialSpring2015WarriorText": "Cuidado: Armadura", "armorSpecialSpring2015WarriorText": "Cuidado: Armadura",
"armorSpecialSpring2015WarriorNotes": "Apenas o cachorinho mais feroz pode ser tão peludo. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2015.", "armorSpecialSpring2015WarriorNotes": "Apenas o cachorinho mais feroz pode ser tão peludo. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2015.",
"armorSpecialSpring2015MageText": "Fantasia de Coelho do Mágico", "armorSpecialSpring2015MageText": "Fantasia de Coelho do Mágico",
"armorSpecialSpring2015MageNotes": "O seu casaco combina com seu rabinho! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2015.", "armorSpecialSpring2015MageNotes": "O seu casaco combina com seu rabinho! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2015.",
"armorSpecialSpring2015HealerText": "Fantasia Confortante de Gato", "armorSpecialSpring2015HealerText": "Fantasia Confortante de Gato",
"armorSpecialSpring2015HealerNotes": "Essa macia fantasia de gato é confortável e reconfortante como chá de menta. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2015.", "armorSpecialSpring2015HealerNotes": "Essa macia fantasia de gato é confortável e reconfortante como chá de menta. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2015.",
"armorSpecialSummer2015RogueText": "Cauda de Rubi", "armorSpecialSummer2015RogueText": "Cauda de Rubi",
@@ -541,13 +541,13 @@
"armorSpecialWinter2016HealerText": "Manto de Fada Festivo", "armorSpecialWinter2016HealerText": "Manto de Fada Festivo",
"armorSpecialWinter2016HealerNotes": "Fadas Festivas enrolam suas asas do corpo em torno de si mesmas para proteção enquanto usam as asas da cabeça para pegar ventos contrários e voar por Habitica a velocidades de até 160 km/h, entregando presentes e pulverizando todos com confetes. Que divertido. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Inverno de 2015 e 2016.", "armorSpecialWinter2016HealerNotes": "Fadas Festivas enrolam suas asas do corpo em torno de si mesmas para proteção enquanto usam as asas da cabeça para pegar ventos contrários e voar por Habitica a velocidades de até 160 km/h, entregando presentes e pulverizando todos com confetes. Que divertido. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Inverno de 2015 e 2016.",
"armorSpecialSpring2016RogueText": "Traje Camuflado Canino", "armorSpecialSpring2016RogueText": "Traje Camuflado Canino",
"armorSpecialSpring2016RogueNotes": "Um pequeno filhote sabe escolher um disfarce colorido para se esconder quando tudo é verde e vibrante. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2016.", "armorSpecialSpring2016RogueNotes": "Um pequeno filhote sabe escolher um disfarce colorido para se esconder quando tudo é verde e vibrante. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2016.",
"armorSpecialSpring2016WarriorText": "Armadura Poderosa", "armorSpecialSpring2016WarriorText": "Armadura Poderosa",
"armorSpecialSpring2016WarriorNotes": "Embora pequeno, você é feroz! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2016.", "armorSpecialSpring2016WarriorNotes": "Embora pequeno, você é feroz! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2016.",
"armorSpecialSpring2016MageText": "Túnica do Imponente Malkin", "armorSpecialSpring2016MageText": "Túnica do Imponente Malkin",
"armorSpecialSpring2016MageNotes": "Brilhantemente colorido, para que você não seja confundido com um nec-ratomante. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2016.", "armorSpecialSpring2016MageNotes": "Brilhantemente colorido, para que você não seja confundido com um nec-ratomante. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2016.",
"armorSpecialSpring2016HealerText": "Calções de Coelhinho Fofinho", "armorSpecialSpring2016HealerText": "Calções de Coelhinho Fofinho",
"armorSpecialSpring2016HealerNotes": "Saltando por ai! De colina a colina, curando aqueles que precisam. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2016.", "armorSpecialSpring2016HealerNotes": "Saltando por ai! De colina a colina, curando aqueles que precisam. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2016.",
"armorSpecialSummer2016RogueText": "Cauda de Enguia", "armorSpecialSummer2016RogueText": "Cauda de Enguia",
"armorSpecialSummer2016RogueNotes": "Essas eletrificantes vestes transformam seu usuário em um verdadeiro Gatuno Enguia! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Verão de 2016.", "armorSpecialSummer2016RogueNotes": "Essas eletrificantes vestes transformam seu usuário em um verdadeiro Gatuno Enguia! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Verão de 2016.",
"armorSpecialSummer2016WarriorText": "Cauda de Tubarão", "armorSpecialSummer2016WarriorText": "Cauda de Tubarão",
@@ -577,9 +577,9 @@
"armorSpecialSpring2017WarriorText": "Armadura Fofincrível", "armorSpecialSpring2017WarriorText": "Armadura Fofincrível",
"armorSpecialSpring2017WarriorNotes": "Essa armadura extravagante é tão brilhante quanto seu melhor casaco, mas com resistência aumentada a ataques. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2017.", "armorSpecialSpring2017WarriorNotes": "Essa armadura extravagante é tão brilhante quanto seu melhor casaco, mas com resistência aumentada a ataques. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2017.",
"armorSpecialSpring2017MageText": "Túnicas de Ilusionista Canino", "armorSpecialSpring2017MageText": "Túnicas de Ilusionista Canino",
"armorSpecialSpring2017MageNotes": "Mágica pelo design, fofa por opção. Aumenta Inteligência em <%= int %>. Equipamento Edição Limitada 2017.", "armorSpecialSpring2017MageNotes": "Mágica pelo design, fofa por opção. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2017.",
"armorSpecialSpring2017HealerText": "Túnica do Descanso", "armorSpecialSpring2017HealerText": "Túnica do Descanso",
"armorSpecialSpring2017HealerNotes": "A suavidade dessa túnica conforta você assim como qualquer pessoa que precisa da sua ajuda de cura! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2017.", "armorSpecialSpring2017HealerNotes": "A suavidade dessa túnica conforta você assim como qualquer pessoa que precisa da sua ajuda de cura! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2017.",
"armorSpecialSummer2017RogueText": "Cauda de Dragão do Mar", "armorSpecialSummer2017RogueText": "Cauda de Dragão do Mar",
"armorSpecialSummer2017RogueNotes": "Esta capa colorida transforma o utilizador num Dragão do Mar de verdade! Aumenta Percepção em <%= per %>. Equipamento Edição Limitada, Verão de 2017.", "armorSpecialSummer2017RogueNotes": "Esta capa colorida transforma o utilizador num Dragão do Mar de verdade! Aumenta Percepção em <%= per %>. Equipamento Edição Limitada, Verão de 2017.",
"armorSpecialSummer2017WarriorText": "Armadura de Areia", "armorSpecialSummer2017WarriorText": "Armadura de Areia",
@@ -911,11 +911,11 @@
"headSpecialSpringRogueText": "Máscara Furtiva de Gatinho", "headSpecialSpringRogueText": "Máscara Furtiva de Gatinho",
"headSpecialSpringRogueNotes": "Ninguém NUNCA adivinhará que você é um gatuno! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2014.", "headSpecialSpringRogueNotes": "Ninguém NUNCA adivinhará que você é um gatuno! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2014.",
"headSpecialSpringWarriorText": "Capacete de Trevo Metálico", "headSpecialSpringWarriorText": "Capacete de Trevo Metálico",
"headSpecialSpringWarriorNotes": "Soldado a partir de belos trevos do campo, esse capacete resiste até mesmo aos mais poderosos golpes. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2014.", "headSpecialSpringWarriorNotes": "Soldado a partir de belos trevos do campo, esse capacete resiste até mesmo aos mais poderosos golpes. Aumenta Força em <%= str %>. Equipamento de Edição Limitada da Primavera de 2014.",
"headSpecialSpringMageText": "Chapéu de Queijo-Suíço", "headSpecialSpringMageText": "Chapéu de Queijo-Suíço",
"headSpecialSpringMageNotes": "Esse chapéu possui muito poder mágico! Tente não mordê-lo. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2014.", "headSpecialSpringMageNotes": "Esse chapéu possui muito poder mágico! Tente não mordê-lo. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2014.",
"headSpecialSpringHealerText": "Coroa da Amizade", "headSpecialSpringHealerText": "Coroa da Amizade",
"headSpecialSpringHealerNotes": "Essa coroa simboliza lealdade e companheirismo. Afinal, um cachorro é o melhor amigo de um aventureiro! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2014.", "headSpecialSpringHealerNotes": "Essa coroa simboliza lealdade e companheirismo. Afinal, um cachorro é o melhor amigo de um aventureiro! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2014.",
"headSpecialSummerRogueText": "Chapéu de Pirata", "headSpecialSummerRogueText": "Chapéu de Pirata",
"headSpecialSummerRogueNotes": "Apenas os mais produtivos piratas podem usar este belo chapéu. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Verão de 2014.", "headSpecialSummerRogueNotes": "Apenas os mais produtivos piratas podem usar este belo chapéu. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Verão de 2014.",
"headSpecialSummerWarriorText": "Bandana de Marujo", "headSpecialSummerWarriorText": "Bandana de Marujo",
@@ -945,9 +945,9 @@
"headSpecialSpring2015RogueText": "Elmo à Prova de Fogo", "headSpecialSpring2015RogueText": "Elmo à Prova de Fogo",
"headSpecialSpring2015RogueNotes": "Fogo? HA! Você guincha ferozmente na cara do fogo! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2015.", "headSpecialSpring2015RogueNotes": "Fogo? HA! Você guincha ferozmente na cara do fogo! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2015.",
"headSpecialSpring2015WarriorText": "Cuidado: Elmo", "headSpecialSpring2015WarriorText": "Cuidado: Elmo",
"headSpecialSpring2015WarriorNotes": "Cuidado com o Elmo! Só um cachorrinho feroz pode usá-lo. Pare de rir. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2015.", "headSpecialSpring2015WarriorNotes": "Cuidado com o Elmo! Só um cachorrinho feroz pode usá-lo. Pare de rir. Aumenta Força em <%= str %>. Equipamento de Edição Limitada da Primavera de 2015.",
"headSpecialSpring2015MageText": "Chapéu de Ilusionista", "headSpecialSpring2015MageText": "Chapéu de Ilusionista",
"headSpecialSpring2015MageNotes": "O que veio primeiro, o coelhinho ou o chapéu? Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2015.", "headSpecialSpring2015MageNotes": "O que veio primeiro, o coelhinho ou o chapéu? Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2015.",
"headSpecialSpring2015HealerText": "Coroa Confortante", "headSpecialSpring2015HealerText": "Coroa Confortante",
"headSpecialSpring2015HealerNotes": "A pérola no centro dessa coroa acalma e conforta aqueles ao seu redor. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2015.", "headSpecialSpring2015HealerNotes": "A pérola no centro dessa coroa acalma e conforta aqueles ao seu redor. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2015.",
"headSpecialSummer2015RogueText": "Chapéu dos Renegados", "headSpecialSummer2015RogueText": "Chapéu dos Renegados",
@@ -977,13 +977,13 @@
"headSpecialWinter2016HealerText": "Elmo Alado de Fada", "headSpecialWinter2016HealerText": "Elmo Alado de Fada",
"headSpecialWinter2016HealerNotes": "Essasasasbatemtãorápidoquenãodápraver! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Inverno de 2015 e 2016.", "headSpecialWinter2016HealerNotes": "Essasasasbatemtãorápidoquenãodápraver! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Inverno de 2015 e 2016.",
"headSpecialSpring2016RogueText": "Máscara de Cachorrinho Bonitinho", "headSpecialSpring2016RogueText": "Máscara de Cachorrinho Bonitinho",
"headSpecialSpring2016RogueNotes": "Ooun, que cachorrinho fofo! Venha aqui e me deixe fazer carinho em você. ...Ei, onde todo meu Ouro foi parar? Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2016.", "headSpecialSpring2016RogueNotes": "Ooun, que cachorrinho fofo! Venha aqui e me deixe fazer carinho em você. ...Ei, onde todo meu Ouro foi parar? Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2016.",
"headSpecialSpring2016WarriorText": "Elmo de Rato Guarda", "headSpecialSpring2016WarriorText": "Elmo de Rato Guarda",
"headSpecialSpring2016WarriorNotes": "Nunca mais você será acertado na cabeça! Deixe-os tentarem! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.", "headSpecialSpring2016WarriorNotes": "Nunca mais você será acertado na cabeça! Deixe-os tentarem! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.",
"headSpecialSpring2016MageText": "Grande Chapéu de Malkin", "headSpecialSpring2016MageText": "Grande Chapéu de Malkin",
"headSpecialSpring2016MageNotes": "Vestimenta para colocar você acima dos meros magos simples do mundo. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2016.", "headSpecialSpring2016MageNotes": "Vestimenta para colocar você acima dos meros magos simples do mundo. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2016.",
"headSpecialSpring2016HealerText": "Diadema de Flores", "headSpecialSpring2016HealerText": "Diadema de Flores",
"headSpecialSpring2016HealerNotes": "Ele cintila com o potencial de uma nova vida pronta para florescer. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Primavera de 2016.", "headSpecialSpring2016HealerNotes": "Ele cintila com o potencial de uma nova vida pronta para florescer. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2016.",
"headSpecialSummer2016RogueText": "Capacete de Enguia", "headSpecialSummer2016RogueText": "Capacete de Enguia",
"headSpecialSummer2016RogueNotes": "Espie por frestas de rochas enquanto estiver usando esse elmo discreto. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Verão 2016.", "headSpecialSummer2016RogueNotes": "Espie por frestas de rochas enquanto estiver usando esse elmo discreto. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Verão 2016.",
"headSpecialSummer2016WarriorText": "Capacete de Tubarão", "headSpecialSummer2016WarriorText": "Capacete de Tubarão",
@@ -1011,13 +1011,13 @@
"headSpecialWinter2017HealerText": "Elmo Champagne", "headSpecialWinter2017HealerText": "Elmo Champagne",
"headSpecialWinter2017HealerNotes": "Essas pétalas cintilantes concentram sua capacidade intelectual! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Inverno de 2016 e 2017.", "headSpecialWinter2017HealerNotes": "Essas pétalas cintilantes concentram sua capacidade intelectual! Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada. Inverno de 2016 e 2017.",
"headSpecialSpring2017RogueText": "Elmo de Coelhinho Sorrateiro", "headSpecialSpring2017RogueText": "Elmo de Coelhinho Sorrateiro",
"headSpecialSpring2017RogueNotes": "Essa máscara vai evitar que a sua fofura te entregue quando você estiver se esgueirando para atacar Tarefas (ou trevos)! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2017.", "headSpecialSpring2017RogueNotes": "Essa máscara vai evitar que a sua fofura te entregue quando você estiver se esgueirando para atacar Tarefas (ou trevos)! Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada da Primavera de 2017.",
"headSpecialSpring2017WarriorText": "Elmo Felino", "headSpecialSpring2017WarriorText": "Elmo Felino",
"headSpecialSpring2017WarriorNotes": "Proteja sua adorável e macia cabeça com este elmo finamente decorado. Aumenta Força em <%= str %>. Equipamento de Edição Limitada, Primavera de 2017.", "headSpecialSpring2017WarriorNotes": "Proteja sua adorável e macia cabeça com este elmo finamente decorado. Aumenta Força em <%= str %>. Equipamento de Edição Limitada da Primavera de 2017.",
"headSpecialSpring2017MageText": "Chapéu de Conjurador Canino", "headSpecialSpring2017MageText": "Chapéu de Conjurador Canino",
"headSpecialSpring2017MageNotes": "Este chapéu pode te ajudar a conjurar poderosos feitiços... Ou você pode usá-lo apenas para invocar bolas de tênis. Você escolhe. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2017.", "headSpecialSpring2017MageNotes": "Este chapéu pode te ajudar a conjurar poderosos feitiços... Ou você pode usá-lo apenas para invocar bolas de tênis. Você escolhe. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada. Primavera de 2017.",
"headSpecialSpring2017HealerText": "Tiara de Pétalas", "headSpecialSpring2017HealerText": "Tiara de Pétalas",
"headSpecialSpring2017HealerNotes": "Essa coroa delicada emite o confortante cheiro da Primavera. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada, Primavera de 2017.", "headSpecialSpring2017HealerNotes": "Essa coroa delicada emite o confortante cheiro da Primavera. Aumenta Inteligência em <%= int %>. Equipamento de Edição Limitada da Primavera de 2017.",
"headSpecialSummer2017RogueText": "Elmo de Dragão do Mar", "headSpecialSummer2017RogueText": "Elmo de Dragão do Mar",
"headSpecialSummer2017RogueNotes": "Esse elmo muda de cor para te ajudar a se misturar com seus arredores. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada, Verão de 2017.", "headSpecialSummer2017RogueNotes": "Esse elmo muda de cor para te ajudar a se misturar com seus arredores. Aumenta Percepção em <%= per %>. Equipamento de Edição Limitada, Verão de 2017.",
"headSpecialSummer2017WarriorText": "Elmo do Castelo de Areia", "headSpecialSummer2017WarriorText": "Elmo do Castelo de Areia",
@@ -1321,7 +1321,7 @@
"shieldSpecialSpringRogueText": "Garras de Gancho", "shieldSpecialSpringRogueText": "Garras de Gancho",
"shieldSpecialSpringRogueNotes": "Ótimo para escalar altos prédios e também para rasgar carpetes. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2014.", "shieldSpecialSpringRogueNotes": "Ótimo para escalar altos prédios e também para rasgar carpetes. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2014.",
"shieldSpecialSpringWarriorText": "Escudo de Ovo", "shieldSpecialSpringWarriorText": "Escudo de Ovo",
"shieldSpecialSpringWarriorNotes": "Esse escudo nunca racha, não importa o quão forte você bata nele! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2014.", "shieldSpecialSpringWarriorNotes": "Esse escudo nunca racha, não importa o quão forte você bata nele! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2014.",
"shieldSpecialSpringHealerText": "Bola Barulhenta da Proteção Final", "shieldSpecialSpringHealerText": "Bola Barulhenta da Proteção Final",
"shieldSpecialSpringHealerNotes": "Libera um barulho desagradável e contínuo quando mordida, afastando os inimigos para longe. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2014.", "shieldSpecialSpringHealerNotes": "Libera um barulho desagradável e contínuo quando mordida, afastando os inimigos para longe. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2014.",
"shieldSpecialSummerRogueText": "Cutelo de Pirata", "shieldSpecialSummerRogueText": "Cutelo de Pirata",
@@ -1345,9 +1345,9 @@
"shieldSpecialSpring2015RogueText": "Guinchado Explosivo", "shieldSpecialSpring2015RogueText": "Guinchado Explosivo",
"shieldSpecialSpring2015RogueNotes": "Não deixe o som te enganar - esses explosivos são fortes. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2015.", "shieldSpecialSpring2015RogueNotes": "Não deixe o som te enganar - esses explosivos são fortes. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2015.",
"shieldSpecialSpring2015WarriorText": "Disco de Prato", "shieldSpecialSpring2015WarriorText": "Disco de Prato",
"shieldSpecialSpring2015WarriorNotes": "Jogue nos seus inimigos... ou só segure, porque vai se encher de ração gostosa na hora da janta. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2015.", "shieldSpecialSpring2015WarriorNotes": "Jogue nos seus inimigos... ou só segure, porque vai se encher de ração gostosa na hora da janta. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2015.",
"shieldSpecialSpring2015HealerText": "Travesseiro Estampado", "shieldSpecialSpring2015HealerText": "Travesseiro Estampado",
"shieldSpecialSpring2015HealerNotes": "Você pode descansar a cabeça neste travesseiro macio, ou você pode lutar contra ele com suas temíveis garras. Rawr! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2015.", "shieldSpecialSpring2015HealerNotes": "Você pode descansar a cabeça neste travesseiro macio, ou você pode lutar contra ele com suas temíveis garras. Rawr! Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2015.",
"shieldSpecialSummer2015RogueText": "Coral Atirador", "shieldSpecialSummer2015RogueText": "Coral Atirador",
"shieldSpecialSummer2015RogueNotes": "Este parente do coral de fogo tem a habilidade de expelir seu veneno através da água. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Verão de 2015.", "shieldSpecialSummer2015RogueNotes": "Este parente do coral de fogo tem a habilidade de expelir seu veneno através da água. Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Verão de 2015.",
"shieldSpecialSummer2015WarriorText": "Escudo de Peixe Sol", "shieldSpecialSummer2015WarriorText": "Escudo de Peixe Sol",
@@ -1369,9 +1369,9 @@
"shieldSpecialSpring2016RogueText": "Bolas de Fogo", "shieldSpecialSpring2016RogueText": "Bolas de Fogo",
"shieldSpecialSpring2016RogueNotes": "Você dominou a bola, a clava e a faca. Agora avance para malabarismo com fogo! Uhuul! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.", "shieldSpecialSpring2016RogueNotes": "Você dominou a bola, a clava e a faca. Agora avance para malabarismo com fogo! Uhuul! Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Primavera de 2016.",
"shieldSpecialSpring2016WarriorText": "Roda de Queijo", "shieldSpecialSpring2016WarriorText": "Roda de Queijo",
"shieldSpecialSpring2016WarriorNotes": "Você enfrentou diabólicas armadilhas para obter essa comida que aumenta defesa. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2016.", "shieldSpecialSpring2016WarriorNotes": "Você enfrentou diabólicas armadilhas para obter essa comida que aumenta defesa. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2016.",
"shieldSpecialSpring2016HealerText": "Broquel Floral", "shieldSpecialSpring2016HealerText": "Broquel Floral",
"shieldSpecialSpring2016HealerNotes": "O Primeiro de Abril diz que este pequeno escudo bloqueará Sementes Brilhantes. Não acredite nele. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2016.", "shieldSpecialSpring2016HealerNotes": "O Primeiro de Abril diz que este pequeno escudo bloqueará Sementes Brilhantes. Não acredite nele. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2016.",
"shieldSpecialSummer2016RogueText": "Varinha Elétrica", "shieldSpecialSummer2016RogueText": "Varinha Elétrica",
"shieldSpecialSummer2016RogueNotes": "Qualquer um que batalhe com você terá uma surpresa chocante... Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Verão de 2016.", "shieldSpecialSummer2016RogueNotes": "Qualquer um que batalhe com você terá uma surpresa chocante... Aumenta Força em <%= str %>. Equipamento de Edição Limitada. Verão de 2016.",
"shieldSpecialSummer2016WarriorText": "Dente de Tubarão", "shieldSpecialSummer2016WarriorText": "Dente de Tubarão",
@@ -1393,7 +1393,7 @@
"shieldSpecialSpring2017RogueText": "Karrotana", "shieldSpecialSpring2017RogueText": "Karrotana",
"shieldSpecialSpring2017RogueNotes": "Essas lâminas irão resolver rápido as tarefas, mas também são úteis para cortar vegetais! Uhmmm! Aumenta Força em <%= str %>. Equipamento de Edição Limitada, Primavera de 2017.", "shieldSpecialSpring2017RogueNotes": "Essas lâminas irão resolver rápido as tarefas, mas também são úteis para cortar vegetais! Uhmmm! Aumenta Força em <%= str %>. Equipamento de Edição Limitada, Primavera de 2017.",
"shieldSpecialSpring2017WarriorText": "Escudo de Lã", "shieldSpecialSpring2017WarriorText": "Escudo de Lã",
"shieldSpecialSpring2017WarriorNotes": "Toda fibra deste escudo é trançado com feitiços protetores! Tente não brincar (demais) com ele. Aumenta Constituição em <%= con %>. Equipamento de Primavera de 2017 Edição Limitada.", "shieldSpecialSpring2017WarriorNotes": "Toda fibra deste escudo é trançado com feitiços protetores! Tente não brincar (demais) com ele. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada da Primavera de 2017.",
"shieldSpecialSpring2017HealerText": "Escudo de Cesta", "shieldSpecialSpring2017HealerText": "Escudo de Cesta",
"shieldSpecialSpring2017HealerNotes": "Protetor e também útil para guardar suas várias ervas de cura e acessórios. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2017.", "shieldSpecialSpring2017HealerNotes": "Protetor e também útil para guardar suas várias ervas de cura e acessórios. Aumenta Constituição em <%= con %>. Equipamento de Edição Limitada. Primavera de 2017.",
"shieldSpecialSummer2017RogueText": "Nadadeiras de Dragão Marinho", "shieldSpecialSummer2017RogueText": "Nadadeiras de Dragão Marinho",
@@ -1618,37 +1618,37 @@
"headAccessoryBase0Text": "Sem Acessório de Cabeça", "headAccessoryBase0Text": "Sem Acessório de Cabeça",
"headAccessoryBase0Notes": "Sem Acessório de Cabeça.", "headAccessoryBase0Notes": "Sem Acessório de Cabeça.",
"headAccessorySpecialSpringRogueText": "Orelhas Roxas de Gatinho", "headAccessorySpecialSpringRogueText": "Orelhas Roxas de Gatinho",
"headAccessorySpecialSpringRogueNotes": "Essas orelhas felinas se contraem para detectar ameaças iminentes. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2014.", "headAccessorySpecialSpringRogueNotes": "Essas orelhas felinas se contraem para detectar ameaças iminentes. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2014.",
"headAccessorySpecialSpringWarriorText": "Orelhas Verdes de Coelhinho", "headAccessorySpecialSpringWarriorText": "Orelhas Verdes de Coelhinho",
"headAccessorySpecialSpringWarriorNotes": "Orelhas de coelho aguçadas, que detectam cada mordida em uma cenoura. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2014.", "headAccessorySpecialSpringWarriorNotes": "Orelhas de coelho aguçadas, que detectam cada mordida em uma cenoura. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2014.",
"headAccessorySpecialSpringMageText": "Orelhas Azuis de Ratinho", "headAccessorySpecialSpringMageText": "Orelhas Azuis de Ratinho",
"headAccessorySpecialSpringMageNotes": "Essas orelhas de rato redondas são macias como seda. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2014.", "headAccessorySpecialSpringMageNotes": "Essas orelhas de rato redondas são macias como seda. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2014.",
"headAccessorySpecialSpringHealerText": "Orelhas Amarelas de Cachorrinho", "headAccessorySpecialSpringHealerText": "Orelhas Amarelas de Cachorrinho",
"headAccessorySpecialSpringHealerNotes": "De abano e fofas. Quer brincar? Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2014.", "headAccessorySpecialSpringHealerNotes": "De abano e fofas. Quer brincar? Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2014.",
"headAccessorySpecialSpring2015RogueText": "Orelhas Amarelas de Ratinho", "headAccessorySpecialSpring2015RogueText": "Orelhas Amarelas de Ratinho",
"headAccessorySpecialSpring2015RogueNotes": "Essas orelhas se protegem do som de explosões. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2015.", "headAccessorySpecialSpring2015RogueNotes": "Essas orelhas se protegem do som de explosões. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2015.",
"headAccessorySpecialSpring2015WarriorText": "Orelhas Roxas de Cachorrinho", "headAccessorySpecialSpring2015WarriorText": "Orelhas Roxas de Cachorrinho",
"headAccessorySpecialSpring2015WarriorNotes": "São roxas. São orelhas de cachorro. Não desperdice seu tempo com mais bobagens. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2015.", "headAccessorySpecialSpring2015WarriorNotes": "São roxas. São orelhas de cachorro. Não desperdice seu tempo com mais bobagens. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2015.",
"headAccessorySpecialSpring2015MageText": "Orelhas Azuis de Coelhinho", "headAccessorySpecialSpring2015MageText": "Orelhas Azuis de Coelhinho",
"headAccessorySpecialSpring2015MageNotes": "Essas orelhas escutam atentamente, caso em algum lugar um mágico esteja revelando segredos. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2015.", "headAccessorySpecialSpring2015MageNotes": "Essas orelhas escutam atentamente, caso em algum lugar um mágico esteja revelando segredos. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2015.",
"headAccessorySpecialSpring2015HealerText": "Orelhas Verdes de Gatinho", "headAccessorySpecialSpring2015HealerText": "Orelhas Verdes de Gatinho",
"headAccessorySpecialSpring2015HealerNotes": "Essas adoráveis orelhas de gatinho vão deixar os outro verdes de inveja. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2015.", "headAccessorySpecialSpring2015HealerNotes": "Essas adoráveis orelhas de gatinho vão deixar os outro verdes de inveja. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2015.",
"headAccessorySpecialSpring2016RogueText": "Orelhas Verdes de Cachorrinho", "headAccessorySpecialSpring2016RogueText": "Orelhas Verdes de Cachorrinho",
"headAccessorySpecialSpring2016RogueNotes": "Com isto, você pode observar Magos astutos até mesmo quando estão invisíveis! Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2016.", "headAccessorySpecialSpring2016RogueNotes": "Com isto, você pode observar Magos astutos até mesmo quando estão invisíveis! Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2016.",
"headAccessorySpecialSpring2016WarriorText": "Orelhas Vermelhas de Ratinho", "headAccessorySpecialSpring2016WarriorText": "Orelhas Vermelhas de Ratinho",
"headAccessorySpecialSpring2016WarriorNotes": "Para melhor escutar sua canção tema pelos clamorosos campos de batalha. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2016.", "headAccessorySpecialSpring2016WarriorNotes": "Para melhor escutar sua canção tema pelos clamorosos campos de batalha. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2016.",
"headAccessorySpecialSpring2016MageText": "Orelhas Amarelas de Gatinho", "headAccessorySpecialSpring2016MageText": "Orelhas Amarelas de Gatinho",
"headAccessorySpecialSpring2016MageNotes": "Estas orelhas afiadas podem detectar o murmurar da Mana no ambiente, ou as passadas silenciosas de um Gatuno. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2016.", "headAccessorySpecialSpring2016MageNotes": "Estas orelhas afiadas podem detectar o murmurar da Mana no ambiente, ou as passadas silenciosas de um Gatuno. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2016.",
"headAccessorySpecialSpring2016HealerText": "Orelhas Roxas de Coelhinho", "headAccessorySpecialSpring2016HealerText": "Orelhas Roxas de Coelhinho",
"headAccessorySpecialSpring2016HealerNotes": "Eles levantam como bandeiras sobre a briga, deixando os outros saberem onde correr por ajuda. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2016.", "headAccessorySpecialSpring2016HealerNotes": "Eles levantam como bandeiras sobre a briga, deixando os outros saberem onde correr por ajuda. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2016.",
"headAccessorySpecialSpring2017RogueText": "Orelhas Vermelhas de Coelhinho", "headAccessorySpecialSpring2017RogueText": "Orelhas Vermelhas de Coelhinho",
"headAccessorySpecialSpring2017RogueNotes": "Nenhum som irá escapá-lo graças a essas orelhas. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2017.", "headAccessorySpecialSpring2017RogueNotes": "Nenhum som irá escapá-lo graças a essas orelhas. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2017.",
"headAccessorySpecialSpring2017WarriorText": "Orelhas Azuis de Gatinho", "headAccessorySpecialSpring2017WarriorText": "Orelhas Azuis de Gatinho",
"headAccessorySpecialSpring2017WarriorNotes": "Essas orelhas podem ouvir uma cesta de petiscos felinos ser aberta mesmo no momento mais estrépido de batalha! Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2017.", "headAccessorySpecialSpring2017WarriorNotes": "Essas orelhas podem ouvir uma cesta de petiscos felinos ser aberta mesmo no momento mais estrépido de batalha! Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2017.",
"headAccessorySpecialSpring2017MageText": "Orelhas Verde-Azuladas de Cachorrinho", "headAccessorySpecialSpring2017MageText": "Orelhas Verde-Azuladas de Cachorrinho",
"headAccessorySpecialSpring2017MageNotes": "Você pode ouvir a mágica no ar! Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2017.", "headAccessorySpecialSpring2017MageNotes": "Você pode ouvir a mágica no ar! Não confere benefícios. Equipamento de Edição Limitada. Primavera de 2017.",
"headAccessorySpecialSpring2017HealerText": "Orelhas Roxas de Ratinho", "headAccessorySpecialSpring2017HealerText": "Orelhas Roxas de Ratinho",
"headAccessorySpecialSpring2017HealerNotes": "Essas orelhas irão ajudar você a ouvir segredos curadores. Não concede benefícios. Equipamento de Edição Limitada. Primavera de 2017.", "headAccessorySpecialSpring2017HealerNotes": "Essas orelhas irão ajudar você a ouvir segredos curadores. Não confere benefícios. Equipamento de Edição Limitada da Primavera de 2017.",
"headAccessoryBearEarsText": "Orelhas de Urso", "headAccessoryBearEarsText": "Orelhas de Urso",
"headAccessoryBearEarsNotes": "Estas orelhas te fazem parecer com um corajoso urso! Não concede benefícios.", "headAccessoryBearEarsNotes": "Estas orelhas te fazem parecer com um corajoso urso! Não concede benefícios.",
"headAccessoryCactusEarsText": "Orelhas de Cacto", "headAccessoryCactusEarsText": "Orelhas de Cacto",

View File

@@ -2,7 +2,7 @@
"annoyingFriends": "Amigos(as) Irritantes", "annoyingFriends": "Amigos(as) Irritantes",
"annoyingFriendsText": "Foi atingido(a) por bolas de neve <%= count %> vezes por membros do grupo.", "annoyingFriendsText": "Foi atingido(a) por bolas de neve <%= count %> vezes por membros do grupo.",
"alarmingFriends": "Amigos Alarmantes", "alarmingFriends": "Amigos Alarmantes",
"alarmingFriendsText": "Foi atingido(a) por bolas de neve <%= count %> vezes pelos membros do grupo.", "alarmingFriendsText": "Foi transformado(a) em fantasma <%= count %> vezes pelos membros do grupo.",
"agriculturalFriends": "Amigos do Campo", "agriculturalFriends": "Amigos do Campo",
"agriculturalFriendsText": "Foi transformado(a) em flor <%= count %> vezes pelos membros do grupo.", "agriculturalFriendsText": "Foi transformado(a) em flor <%= count %> vezes pelos membros do grupo.",
"aquaticFriends": "Amigos Aquáticos", "aquaticFriends": "Amigos Aquáticos",

View File

@@ -81,7 +81,7 @@
"newBaileyUpdate": "Nova atualização da Bailey!", "newBaileyUpdate": "Nova atualização da Bailey!",
"tellMeLater": "Lembrar mais tarde", "tellMeLater": "Lembrar mais tarde",
"dismissAlert": "Dispensar este alerta", "dismissAlert": "Dispensar este alerta",
"donateText3": "Habitica é um projeto de código aberto que depende do suporte dos nossos usuários. O dinheiro que você gasta em gemas nos ajuda a manter os servidores funcionando, manter uma pequena equipe, desenvolver novas funcionalidades e oferecer incentivos para os nossos programadores voluntários. Obrigado pela sua generosidade!", "donateText3": "Habitica é um projeto de código aberto que depende do suporte dos nossos usuários. O dinheiro que você gasta em gemas nos ajuda a manter os servidores funcionando, manter uma pequena equipe, desenvolver novas funcionalidades e oferecer incentivos para os nossos voluntários.",
"card": "Cartão de crédito", "card": "Cartão de crédito",
"paymentMethods": "Comprar usando", "paymentMethods": "Comprar usando",
"paymentSuccessful": "Seu pagamento foi efetuado com sucesso!", "paymentSuccessful": "Seu pagamento foi efetuado com sucesso!",
@@ -130,5 +130,6 @@
"limitedAvailabilityDays": "Disponível por <%= days %>d <%= hours %>h <%= minutes %>m", "limitedAvailabilityDays": "Disponível por <%= days %>d <%= hours %>h <%= minutes %>m",
"limitedAvailabilityHours": "Disponível por <%= hours %>h <%= minutes %>m", "limitedAvailabilityHours": "Disponível por <%= hours %>h <%= minutes %>m",
"limitedAvailabilityMinutes": "Disponível por <%= minutes %>m <%= seconds %>s", "limitedAvailabilityMinutes": "Disponível por <%= minutes %>m <%= seconds %>s",
"amountExp": "<%= amount %> de EXP" "amountExp": "<%= amount %> de EXP",
"helpSupportHabitica": "Ajude Apoiando o Habitica"
} }

View File

@@ -513,7 +513,7 @@
"questHippoDropHippoEgg": "Hipopótamo (Ovo)", "questHippoDropHippoEgg": "Hipopótamo (Ovo)",
"questHippoUnlockText": "Desbloqueia Ovos de Hipopótamo para compra no mercado", "questHippoUnlockText": "Desbloqueia Ovos de Hipopótamo para compra no mercado",
"farmFriendsText": "Pacote de Missões Amigos da Fazenda", "farmFriendsText": "Pacote de Missões Amigos da Fazenda",
"farmFriendsNotes": "Contém 'A Vaca Muutante', 'Cavalgue o Pesadelo' e 'O Carneiro do Trovão'. Disponível até 31 de Agosto.", "farmFriendsNotes": "Contém 'A Vaca Muutante', 'Cavalgue o Pesadelo' e 'O Carneiro do Trovão'. Disponível até 30 de setembro.",
"witchyFamiliarsText": "Pacote de Missões Familiares Bruxos", "witchyFamiliarsText": "Pacote de Missões Familiares Bruxos",
"witchyFamiliarsNotes": "Contém \"O Rei Rato\", \"O Aracnídeo de Gelo\" e \"Pântano do Sapo Bagunceiro\". Disponível até 31 de outubro.", "witchyFamiliarsNotes": "Contém \"O Rei Rato\", \"O Aracnídeo de Gelo\" e \"Pântano do Sapo Bagunceiro\". Disponível até 31 de outubro.",
"questGroupLostMasterclasser": "Mistério dos Mestres de Classe", "questGroupLostMasterclasser": "Mistério dos Mestres de Classe",

View File

@@ -120,7 +120,7 @@
"paypalCanceled": "Sua assinatura foi cancelada", "paypalCanceled": "Sua assinatura foi cancelada",
"choosePaymentMethod": "Escolha seu método de pagamento", "choosePaymentMethod": "Escolha seu método de pagamento",
"buyGemsSupportsDevs": "A compra de Gemas dá o apoio necessário para os desenvolvedores continuarem movimentando o Habitica", "buyGemsSupportsDevs": "A compra de Gemas dá o apoio necessário para os desenvolvedores continuarem movimentando o Habitica",
"support": "SUPORTE", "support": "Suporte",
"gemBenefitLeadin": "O que você pode comprar com Gemas?", "gemBenefitLeadin": "O que você pode comprar com Gemas?",
"gemBenefit1": "Trajes únicos e elegantes para o seu avatar.", "gemBenefit1": "Trajes únicos e elegantes para o seu avatar.",
"gemBenefit2": "Cenários para a imersão do seu avatar no mundo do Habitica!", "gemBenefit2": "Cenários para a imersão do seu avatar no mundo do Habitica!",

View File

@@ -55,5 +55,5 @@
"iosFaqStillNeedHelp": "Если у вас есть вопрос, которого нет в этом списке или в [ЧаВо на Вики](https://habitica.fandom.com/ru/wiki/ЧаВО), задайте его в чате Таверны через Меню > Таверна! Мы с радостью поможем вам.", "iosFaqStillNeedHelp": "Если у вас есть вопрос, которого нет в этом списке или в [ЧаВо на Вики](https://habitica.fandom.com/ru/wiki/ЧаВО), задайте его в чате Таверны через Меню > Таверна! Мы с радостью поможем вам.",
"androidFaqStillNeedHelp": "Если у вас есть вопрос, которого нет в этом списке или в [ЧаВо на Вики](https://habitica.fandom.com/ru/wiki/ЧаВо), задайте его в чате Таверны через Меню > Таверна! Мы с радостью поможем вам.", "androidFaqStillNeedHelp": "Если у вас есть вопрос, которого нет в этом списке или в [ЧаВо на Вики](https://habitica.fandom.com/ru/wiki/ЧаВо), задайте его в чате Таверны через Меню > Таверна! Мы с радостью поможем вам.",
"webFaqStillNeedHelp": "Если у вас есть вопрос, которого нет в этом списке или в [ЧаВо на Вики](https://habitica.fandom.com/ru/wiki/ЧаВО), задайте его в [Гильдии новичков](https://habitica.com/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! Мы с радостью поможем вам.", "webFaqStillNeedHelp": "Если у вас есть вопрос, которого нет в этом списке или в [ЧаВо на Вики](https://habitica.fandom.com/ru/wiki/ЧаВО), задайте его в [Гильдии новичков](https://habitica.com/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! Мы с радостью поможем вам.",
"faqQuestion13": "Что такое групповые тарифы?" "faqQuestion13": "Что такое групповые планы?"
} }

View File

@@ -5,11 +5,11 @@
"accept2Terms": "и", "accept2Terms": "и",
"chores": "Домашние дела", "chores": "Домашние дела",
"clearBrowserData": "Очистить данные браузера", "clearBrowserData": "Очистить данные браузера",
"communityExtensions": "<a href='https://habitica.fandom.com/ru/wiki/Персонализация' target='_blank'>Персонализация</a>", "communityExtensions": "Персонализация",
"communityFacebook": "Facebook", "communityFacebook": "Facebook",
"companyAbout": "Как это работает", "companyAbout": "Как это работает",
"companyBlog": "Блог", "companyBlog": "Блог",
"companyContribute": "Сделать вклад", "companyContribute": "Вклад в Habitica",
"companyDonate": "Пожертвования", "companyDonate": "Пожертвования",
"forgotPassword": "Забыли пароль?", "forgotPassword": "Забыли пароль?",
"emailNewPass": "Отправьте мне ссылку на сброс пароля", "emailNewPass": "Отправьте мне ссылку на сброс пароля",
@@ -53,8 +53,8 @@
"marketing4Lead3-1": "Хотите жить играючи?", "marketing4Lead3-1": "Хотите жить играючи?",
"marketing4Lead3-2": "Заинтересованы в создании группы в сферах образования, здоровья или других?", "marketing4Lead3-2": "Заинтересованы в создании группы в сферах образования, здоровья или других?",
"marketing4Lead3Title": "Игра во всём", "marketing4Lead3Title": "Игра во всём",
"mobileAndroid": "Android", "mobileAndroid": "Приложение для Android",
"mobileIOS": "iOS", "mobileIOS": "Приложение для iOS",
"oldNews": "Новости", "oldNews": "Новости",
"newsArchive": "Архив новостей на вики (мультиязычный)", "newsArchive": "Архив новостей на вики (мультиязычный)",
"setNewPass": "Введите новый пароль", "setNewPass": "Введите новый пароль",
@@ -187,5 +187,6 @@
"minPasswordLength": "Пароль должен состоять из 8 или более символов.", "minPasswordLength": "Пароль должен состоять из 8 или более символов.",
"enterHabitica": "Войти в Habitica", "enterHabitica": "Войти в Habitica",
"emailUsernamePlaceholder": "Например, habitrabbit или gryphon@example.com", "emailUsernamePlaceholder": "Например, habitrabbit или gryphon@example.com",
"socialAlreadyExists": "Этот логин социальной сети уже привязан к существующему аккаунту Хабитики." "socialAlreadyExists": "Этот логин социальной сети уже привязан к существующему аккаунту Хабитики.",
"footerProduct": "Продукт"
} }

View File

@@ -2688,5 +2688,14 @@
"weaponMystery202209Text": "Руководство по магии", "weaponMystery202209Text": "Руководство по магии",
"weaponMystery202209Notes": "Эта книга станет вашим путеводителем на пути к созданию магии. Бонусов не дает. Подарок подписчикам сентября 2022.", "weaponMystery202209Notes": "Эта книга станет вашим путеводителем на пути к созданию магии. Бонусов не дает. Подарок подписчикам сентября 2022.",
"shieldMystery202209Notes": "Чтобы приобрести знания в области колдовства, нужно много читать, но вы непременно будете наслаждаться учёбой. Бонусов не дает. Подарок подписчикам сентября 2022.", "shieldMystery202209Notes": "Чтобы приобрести знания в области колдовства, нужно много читать, но вы непременно будете наслаждаться учёбой. Бонусов не дает. Подарок подписчикам сентября 2022.",
"shieldMystery202209Text": "Гора волшебных книг" "shieldMystery202209Text": "Гора волшебных книг",
"headSpecialSpring2022RogueNotes": "Надев эту маску, вы станете умным, как сорока. Возможно вы даже сможете иммитировать ее стрекотание. Увеличивает восприятие на <%= per %>. Ограниченный выпуск весны 2022.",
"eyewearMystery202204BNotes": "Какое у вас сегодня настроение? Выражайте себя с помощью этих забавных экранов! Бонусов не дает. Подарок подписчикам апреля 2022.",
"eyewearArmoireComedyMaskText": "Комедийная Маска",
"eyewearArmoireComedyMaskNotes": "Весело! Вот причудливая маска для твоего счастливого сердца, возвещающая радость, выражающая веселье и счастье на сцене. Увеличивает телосложение на <%= con %>. Зачарованный сундук: Набор театральных масок (предмет 1 из 2).",
"eyewearArmoireTragedyMaskText": "Трагическая маска",
"eyewearMystery202204ANotes": "Какое у вас сегодня настроение? Выражайте себя с помощью этих забавных экранов! Бонусов не дает. Подарок подписчикам апреля 2022.",
"eyewearArmoireTragedyMaskNotes": "Увы! Здесь лежит грузная маска для твоего бедного актера, который мечется, выражая горе и печаль на сцене. Увеличивает интеллект на <%= int %>. Зачарованный сундук: Набор театральных масок (предмет 2 из 2).",
"headMystery202207Text": "Желейный шлем",
"armorMystery202207Text": "Желейная броня"
} }

View File

@@ -394,5 +394,12 @@
"lastCompleted": "Последнее выполненное", "lastCompleted": "Последнее выполненное",
"newGroupsBullet06": "Просмотр статуса задания позволяет быстро увидеть, кто его выполнил", "newGroupsBullet06": "Просмотр статуса задания позволяет быстро увидеть, кто его выполнил",
"newGroupsBullet07": "Включите функцию отображения общих задач на вашей персональной доске задач", "newGroupsBullet07": "Включите функцию отображения общих задач на вашей персональной доске задач",
"newGroupsBullet08": "Лидер группы и менеджеры могут быстро добавлять задачи из верхней части столбцов задач" "newGroupsBullet08": "Лидер группы и менеджеры могут быстро добавлять задачи из верхней части столбцов задач",
"newGroupsBullet09": "Общую задачу можно вернуть в работу, чтобы показать, что она еще нуждается в доработке",
"newGroupsBullet10": "Статус назначения определяет условие выполнения:",
"newGroupsBullet10a": "<strong>Оставьте задачу неназначенной</strong>, если любой из участников может ее выполнить",
"newGroupsBullet10b": "<strong>Назначьте задачу одному участнику</strong>, чтобы только он мог ее выполнить",
"newGroupsBullet10c": "<strong>Назначьте задачу нескольким участникам</strong>, если им всем нужно её выполнить",
"newGroupsVisitFAQ": "Посетите <a href='/static/faq#group-plans' target='_blank'>ЧаВо</a> из выпадающего меню \"Помощь\" для получения дополнительной информации.",
"newGroupsEnjoy": "Надеемся вам понравиться опыт работы с новыми групповым планами!"
} }

View File

@@ -81,7 +81,7 @@
"newBaileyUpdate": "Обновление от Бэйли!", "newBaileyUpdate": "Обновление от Бэйли!",
"tellMeLater": "Напомнить позже", "tellMeLater": "Напомнить позже",
"dismissAlert": "Скрыть эти вести", "dismissAlert": "Скрыть эти вести",
"donateText3": "Habitica это проект с открытым исходным кодом, зависящий от поддержки своих пользователей. Деньги, которые вы тратите на покупку самоцветов, помогают нам поддерживать сервера в рабочем состоянии, сохранять небольшой штат сотрудников, разрабатывать новые функции и давать стимул нашим программистам-добровольцам. Благодарим вас за щедрость!", "donateText3": "Habitica это проект с открытым исходным кодом, зависящий от поддержки своих пользователей. Деньги, которые вы тратите на покупку самоцветов, помогают нам поддерживать сервера в рабочем состоянии, сохранять небольшой штат сотрудников, разрабатывать новые функции и давать стимул нашим волонтерам.",
"card": "Пластиковой карточкой", "card": "Пластиковой карточкой",
"paymentMethods": "Приобрести с использованием", "paymentMethods": "Приобрести с использованием",
"paymentSuccessful": "Платеж прошел успешно!", "paymentSuccessful": "Платеж прошел успешно!",

View File

@@ -513,7 +513,7 @@
"questHippoDropHippoEgg": "Бегемот (яйцо)", "questHippoDropHippoEgg": "Бегемот (яйцо)",
"questHippoUnlockText": "Позволяет покупать на рынке бегемота в яйце", "questHippoUnlockText": "Позволяет покупать на рынке бегемота в яйце",
"farmFriendsText": "Набор квестов «Друзья фермера»", "farmFriendsText": "Набор квестов «Друзья фермера»",
"farmFriendsNotes": "Содержит квесты «Корова-муутант», «Прокатись на Лошмаре!» и «Грозовой баран». Доступен до 31 августа.", "farmFriendsNotes": "Содержит квесты «Корова-муутант», «Прокатись на Лошмаре!» и «Грозовой баран». Доступен до 30 сентября.",
"witchyFamiliarsText": "Набор квестов «Фамильяры колдуньи»", "witchyFamiliarsText": "Набор квестов «Фамильяры колдуньи»",
"witchyFamiliarsNotes": "Содержит квесты «Крысиный король», Ледяной Арахнид» и «Болото Лягушки Беспорядка». Доступен до 31 октября.", "witchyFamiliarsNotes": "Содержит квесты «Крысиный король», Ледяной Арахнид» и «Болото Лягушки Беспорядка». Доступен до 31 октября.",
"questGroupLostMasterclasser": "Тайна ордена Мастеров", "questGroupLostMasterclasser": "Тайна ордена Мастеров",

View File

@@ -11,7 +11,7 @@
"exclusiveJackalopePet": "Эксклюзивный питомец", "exclusiveJackalopePet": "Эксклюзивный питомец",
"giftSubscription": "Хотите подарить преимущества подписки кому-то?", "giftSubscription": "Хотите подарить преимущества подписки кому-то?",
"giftSubscriptionText4": "Спасибо за поддержку Habitica!", "giftSubscriptionText4": "Спасибо за поддержку Habitica!",
"groupPlans": "Групповые тарифы", "groupPlans": "Групповые планы",
"subscribe": "Подписка", "subscribe": "Подписка",
"nowSubscribed": "Вы оформили подписку на Habitica!", "nowSubscribed": "Вы оформили подписку на Habitica!",
"cancelSub": "Отмена подписки", "cancelSub": "Отмена подписки",

View File

@@ -31,7 +31,7 @@
"commGuidePara029": "<strong>Публічні ґільдії дуже схожі на таверну, за винятком того, що замість того, щоб бути спілкуватись на загальні теми, вони мають конкретну</strong>. Чат публічної ґільдії має зосередитися на цій темі. Наприклад, члени ґільдії \"Майстри слова\" можуть бути розчаровані, якщо розмова раптом зосередиться на садівництві, а не на письмі, а ґільдія \"Любителі драконів\" може не виявляти інтересу до розшифровки стародавніх рун. Деякі ґільдії ставляться до цього більш толерантно, ніж інші, але загалом <strong>намагайтеся залишатися в темі</strong>!", "commGuidePara029": "<strong>Публічні ґільдії дуже схожі на таверну, за винятком того, що замість того, щоб бути спілкуватись на загальні теми, вони мають конкретну</strong>. Чат публічної ґільдії має зосередитися на цій темі. Наприклад, члени ґільдії \"Майстри слова\" можуть бути розчаровані, якщо розмова раптом зосередиться на садівництві, а не на письмі, а ґільдія \"Любителі драконів\" може не виявляти інтересу до розшифровки стародавніх рун. Деякі ґільдії ставляться до цього більш толерантно, ніж інші, але загалом <strong>намагайтеся залишатися в темі</strong>!",
"commGuidePara031": "Деякі публічні ґільдії міститимуть делікатні теми, такі як депресія, релігія, політика тощо. Це нормально, якщо розмови в них не порушують жодних положень та умов чи Правил публічного простору, і якщо вони залишаються на темі.", "commGuidePara031": "Деякі публічні ґільдії міститимуть делікатні теми, такі як депресія, релігія, політика тощо. Це нормально, якщо розмови в них не порушують жодних положень та умов чи Правил публічного простору, і якщо вони залишаються на темі.",
"commGuidePara033": "<strong>Публічні ґільдії НЕ можуть містити вміст для аудиторії віком понад 18 років. Якщо вони планують регулярно обговорювати чутливу інформацію, вони повинні вказати це в описі ґільдії</strong>. Це робиться для того, щоб Habitica була безпечною та комфортною для всіх.", "commGuidePara033": "<strong>Публічні ґільдії НЕ можуть містити вміст для аудиторії віком понад 18 років. Якщо вони планують регулярно обговорювати чутливу інформацію, вони повинні вказати це в описі ґільдії</strong>. Це робиться для того, щоб Habitica була безпечною та комфортною для всіх.",
"commGuidePara035": "<strong>Якщо у ґільдії, про яку йдеться, є різні чутливі питання, з повагою до ваших співвітчизників-габітян слід розмістити свій коментар за попередженням (наприклад, \"Попередження: посилання на самоушкодження\")</strong>. Вони можуть бути охарактеризовані як попередження про тригер та/або примітки щодо вмісту, і ґільдії можуть мати власні правила на додаток до наведених тут. Якщо можливо, скористайтеся <a href='https://habitica.fandom.com/wiki/Markdown_Cheat_Sheet' target='_blank'>markdown</a>, щоб приховати потенційно конфіденційний вміст під розривами рядків, щоб усі бажаючі щоб уникнути читання, можна прокрутити його, не побачивши вмісту. Співробітники та модератори Habitica можуть видаляти цей матеріал на свій розсуд.", "commGuidePara035": "<strong>Якщо у ґільдії, про яку йдеться, є різні чутливі питання, з повагою до ваших співвітчизників-габітиканців слід розмістити свій коментар за попередженням (наприклад, \"Попередження: посилання на самоушкодження\")</strong>. Вони можуть бути охарактеризовані як попередження про тригер та/або примітки щодо вмісту, і ґільдії можуть мати власні правила на додаток до наведених тут. Якщо можливо, скористайтеся <a href='https://habitica.fandom.com/wiki/Markdown_Cheat_Sheet' target='_blank'>markdown</a>, щоб приховати потенційно конфіденційний вміст під розривами рядків, щоб усі бажаючі щоб уникнути читання, можна прокрутити його, не побачивши вмісту. Співробітники та модератори Habitica можуть видаляти цей матеріал на свій розсуд.",
"commGuidePara036": "Крім того, делікатний матеріал має бути актуальним згадування про самоушкодження в ґільдії, зосередженій на боротьбі з депресією, може мати сенс, але, мабуть, менш доречно в музичній ґільдії. Якщо ви бачите, що хтось неодноразово порушує ці правила, особливо після кількох запитів, повідомте про ці публікації.", "commGuidePara036": "Крім того, делікатний матеріал має бути актуальним згадування про самоушкодження в ґільдії, зосередженій на боротьбі з депресією, може мати сенс, але, мабуть, менш доречно в музичній ґільдії. Якщо ви бачите, що хтось неодноразово порушує ці правила, особливо після кількох запитів, повідомте про ці публікації.",
"commGuidePara037": "<strong>Жодні ґільдії, публічні чи приватні, не повинні створюватися з метою нападу на будь-яку групу чи особу</strong>. Створення такої гільдії є підставою для миттєвого бану. Боріться зі шкідливими звичками, а не з іншими шукачами пригод!", "commGuidePara037": "<strong>Жодні ґільдії, публічні чи приватні, не повинні створюватися з метою нападу на будь-яку групу чи особу</strong>. Створення такої гільдії є підставою для миттєвого бану. Боріться зі шкідливими звичками, а не з іншими шукачами пригод!",
"commGuidePara038": "<strong>Усі випробування таверни та публічних ґільдії також мають відповідати цим правилам</strong>.", "commGuidePara038": "<strong>Усі випробування таверни та публічних ґільдії також мають відповідати цим правилам</strong>.",
@@ -109,7 +109,7 @@
"commGuidePara013": "У такій великій спільноті, як Habitica, користувачі приходять і йдуть, і іноді співробітнику чи модератору потрібно скласти свою благородну мантію та розслабитися. Нижче наведено почесних працівників і модераторів. Вони більше не мають повноважень співробітника чи модератора, але ми все одно хочемо вшанувати їхню роботу!", "commGuidePara013": "У такій великій спільноті, як Habitica, користувачі приходять і йдуть, і іноді співробітнику чи модератору потрібно скласти свою благородну мантію та розслабитися. Нижче наведено почесних працівників і модераторів. Вони більше не мають повноважень співробітника чи модератора, але ми все одно хочемо вшанувати їхню роботу!",
"commGuidePara014": "Почесні співробітники та модератори:", "commGuidePara014": "Почесні співробітники та модератори:",
"commGuideHeadingFinal": "Завершальна секція", "commGuideHeadingFinal": "Завершальна секція",
"commGuidePara067": "Отже, відважний габітітиканцю, Правила спільноти! Витріть піт зі свого чола та отримайте досвід, прочитавши все це. Якщо у вас виникли запитання чи сумніви щодо Правил спільноти, зв’яжіться з нами за адресою <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>, ми завжди раді допомогти прояснити речі.", "commGuidePara067": "Отже, відважний габітиканцю, Правила спільноти! Витріть піт зі свого чола та отримайте досвід, прочитавши все це. Якщо у вас виникли запитання чи сумніви щодо Правил спільноти, зв’яжіться з нами за адресою <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>, ми завжди раді допомогти прояснити речі.",
"commGuidePara068": "А тепер іди вперед, відважний шукаче пригод, і впорайся з декількома щоденками!", "commGuidePara068": "А тепер іди вперед, відважний шукаче пригод, і впорайся з декількома щоденками!",
"commGuideHeadingLinks": "Корисні посилання", "commGuideHeadingLinks": "Корисні посилання",
"commGuideLink01": "<a href='/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a' target='_blank'>Habitica Help: Ask a Question</a>: Ґільдія, де користувачі можуть ставити запитання!", "commGuideLink01": "<a href='/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a' target='_blank'>Habitica Help: Ask a Question</a>: Ґільдія, де користувачі можуть ставити запитання!",

View File

@@ -1,5 +1,5 @@
{ {
"playerTiersDesc": "Кольорові імена користувачів, які ви бачите в чаті, представляють рівень учасника. Чим вище рівень, тим більше людина внесла свій внесок у Хабітіка за допомогою мистецтва, коду, спільноти тощо!", "playerTiersDesc": "Кольорові імена користувачів, які ви бачите в чаті, представляють рівень учасника. Чим вище рівень, тим більший людина зробила внесок в Habitica за допомогою мистецтва, коду чи допомоги спільноті тощо!",
"tier1": "Рівень 1 (друг)", "tier1": "Рівень 1 (друг)",
"tier2": "Рівень 2 (друг)", "tier2": "Рівень 2 (друг)",
"tier3": "Рівень 3 (елітний)", "tier3": "Рівень 3 (елітний)",

View File

@@ -1747,7 +1747,7 @@
"eyewearArmoirePlagueDoctorMaskNotes": "", "eyewearArmoirePlagueDoctorMaskNotes": "",
"eyewearArmoireGoofyGlassesText": "", "eyewearArmoireGoofyGlassesText": "",
"eyewearArmoireGoofyGlassesNotes": "", "eyewearArmoireGoofyGlassesNotes": "",
"twoHandedItem": "", "twoHandedItem": "Дворучна зброя.",
"weaponSpecialKS2019Text": "Глефа міфічного грифона", "weaponSpecialKS2019Text": "Глефа міфічного грифона",
"weaponSpecialKS2019Notes": "Зігнута, немов дзьоб та кігті грифона, ця пишна древкова зброя надає енергію, коли завдання здаються страшними. Збільшує силу на <%= str %>.", "weaponSpecialKS2019Notes": "Зігнута, немов дзьоб та кігті грифона, ця пишна древкова зброя надає енергію, коли завдання здаються страшними. Збільшує силу на <%= str %>.",
"weaponSpecialSpring2019RogueText": "Блискавка", "weaponSpecialSpring2019RogueText": "Блискавка",
@@ -1923,7 +1923,7 @@
"weaponArmoireJugglingBallsText": "Жонглювання м'ячами", "weaponArmoireJugglingBallsText": "Жонглювання м'ячами",
"armorSpecialSummer2020HealerNotes": "Ви терплячі, як океан, сильні, як течії, такі ж надійні, як і припливи. Збільшує статуру на <%= con %>. Обмежена серія 2020 літнього спорядження.", "armorSpecialSummer2020HealerNotes": "Ви терплячі, як океан, сильні, як течії, такі ж надійні, як і припливи. Збільшує статуру на <%= con %>. Обмежена серія 2020 літнього спорядження.",
"armorMystery202103Notes": "Ці м’які та вітряні халати ідеально підходять для чаювання під ефектними весняними деревами. Ніякої вигоди не приносить. Березень 2021 предмет підписки.", "armorMystery202103Notes": "Ці м’які та вітряні халати ідеально підходять для чаювання під ефектними весняними деревами. Ніякої вигоди не приносить. Березень 2021 предмет підписки.",
"weaponArmoireJugglingBallsNotes": "Хабітікани-майстри багатозадачності, тому у вас не повинно виникнути проблем із утриманням усіх цих кульок у повітрі! Збільшує інтелект на <%= int %>. Зачарована шафа: незалежний предмет.", "weaponArmoireJugglingBallsNotes": "Габітиканці - майстри багатозадачності, тому у вас не повинно виникнути проблем із утриманням усіх цих кульок у повітрі! Збільшує інтелект на <%= int %>. Зачарована шафа: незалежний предмет.",
"armorArmoireBoxArmorText": "Броня коробка", "armorArmoireBoxArmorText": "Броня коробка",
"weaponArmoireHappyBannerText": "Щасливий банер", "weaponArmoireHappyBannerText": "Щасливий банер",
"armorSpecialWinter2020HealerText": "Сукня з апельсинової шкірки", "armorSpecialWinter2020HealerText": "Сукня з апельсинової шкірки",
@@ -1961,7 +1961,7 @@
"armorSpecialFall2019MageNotes": "Його тезку спіткала жахлива доля. Але вас не так просто обдурити! Одягніться в цю мантію легенд, і ніхто вас не перевершить. Збільшує інтелект на <%= int %>. Обмежена серія 2019 осіннього спорядження.", "armorSpecialFall2019MageNotes": "Його тезку спіткала жахлива доля. Але вас не так просто обдурити! Одягніться в цю мантію легенд, і ніхто вас не перевершить. Збільшує інтелект на <%= int %>. Обмежена серія 2019 осіннього спорядження.",
"armorMystery202103Text": "Халати для перегляду цвіту", "armorMystery202103Text": "Халати для перегляду цвіту",
"weaponArmoireClubOfClubsText": "Клуб... Клуби", "weaponArmoireClubOfClubsText": "Клуб... Клуби",
"armorSpecialBirthday2020Notes": "З днем народження, Хабітіка! Одягніть ці епатажні партійні халати, щоб відсвяткувати цей чудовий день. Ніякої вигоди не приносить.", "armorSpecialBirthday2020Notes": "З днем народження, Habitica! Одягніть ці епатажні святкові халати, щоб весело провести цей чудовий день. Не дає жодних бонусів.",
"armorMystery202007Notes": "Плавайте, перевертайтесь, пірнайте та бігайте з цим красивим і потужним хвостом! Ніякої вигоди не приносить. Предмет підписки за липень 2020 року.", "armorMystery202007Notes": "Плавайте, перевертайтесь, пірнайте та бігайте з цим красивим і потужним хвостом! Ніякої вигоди не приносить. Предмет підписки за липень 2020 року.",
"weaponArmoireJadeGlaiveNotes": "Діапазон цієї гліви убереже вас від ваших ворогів! Крім того, ви можете збити речі з високих полиць. Збільшує силу на <%= str %>. Зачарована шафа: набір воїнів з нефриту (предмет 3 із 3).", "weaponArmoireJadeGlaiveNotes": "Діапазон цієї гліви убереже вас від ваших ворогів! Крім того, ви можете збити речі з високих полиць. Збільшує силу на <%= str %>. Зачарована шафа: набір воїнів з нефриту (предмет 3 із 3).",
"armorArmoireDuffleCoatNotes": "Подорожуйте стильним морозним царством із цим затишним вовняним пальто. Збільшує статуру та сприйняття на <%= attrs %> кожен. Зачарована шафа: набір дамських пальто (предмет 1 з 2).", "armorArmoireDuffleCoatNotes": "Подорожуйте стильним морозним царством із цим затишним вовняним пальто. Збільшує статуру та сприйняття на <%= attrs %> кожен. Зачарована шафа: набір дамських пальто (предмет 1 з 2).",
@@ -1987,8 +1987,8 @@
"weaponArmoireAlchemistsDistillerText": "Дистилятор алхіміка", "weaponArmoireAlchemistsDistillerText": "Дистилятор алхіміка",
"armorSpecialBirthday2020Text": "Епатажні халати для вечірок", "armorSpecialBirthday2020Text": "Епатажні халати для вечірок",
"armorArmoireAlchemistsRobeText": "Халат алхіміка", "armorArmoireAlchemistsRobeText": "Халат алхіміка",
"armorArmoireShadowMastersRobeNotes": "Тканина цього стрункого халата виткана з найтемніших тіней у найглибших печерах Хабітіки. Збільшує статуру на <%= con %>. Зачарована шафа: набір майстрів тіней (предмет 1 з 4).", "armorArmoireShadowMastersRobeNotes": "Тканина цього стрункого халата виткана з найтемніших тіней у найглибших печерах Habitica. Збільшує витривалість yf <%= con %>. Зачарована шафа: набір майстрів тіней (предмет 1 з 4).",
"armorSpecialBirthday2021Notes": "З днем народження, Хабітіка! Одягніть ці екстравагантні халати для святкування цього чудового дня. Ніякої вигоди не приносить.", "armorSpecialBirthday2021Notes": "З днем народження, Habitica! Одягніть ці екстравагантні халати для святкування цього чудового дня. Ніякої вигоди не приносить.",
"weaponArmoireFiddlersBowText": "Скрипальний лук", "weaponArmoireFiddlersBowText": "Скрипальний лук",
"armorMystery201910Notes": "Ця загадкова броня захистить вас від видимих і невидимих жахів. Ніякої вигоди не приносить. Предмет підписки за жовтень 2019.", "armorMystery201910Notes": "Ця загадкова броня захистить вас від видимих і невидимих жахів. Ніякої вигоди не приносить. Предмет підписки за жовтень 2019.",
"armorArmoireMatchMakersApronText": "Фартух сірника", "armorArmoireMatchMakersApronText": "Фартух сірника",

View File

@@ -41,7 +41,7 @@
"sendChat": "Надіслати", "sendChat": "Надіслати",
"group": "Спільнота", "group": "Спільнота",
"groupName": "Назва ватаги", "groupName": "Назва ватаги",
"groupLeader": "Лідер групи", "groupLeader": "Лідер команди",
"groupID": "ID групи", "groupID": "ID групи",
"members": "Учасники", "members": "Учасники",
"memberList": "Список учасників", "memberList": "Список учасників",
@@ -346,7 +346,7 @@
"PMCanNotReply": "Ви не можете відповісти на цю розмову", "PMCanNotReply": "Ви не можете відповісти на цю розмову",
"PMUserDoesNotReceiveMessages": "Цей користувач більше не отримує приватних повідомлень", "PMUserDoesNotReceiveMessages": "Цей користувач більше не отримує приватних повідомлень",
"PMDisabled": "Вимкніть приватні повідомлення", "PMDisabled": "Вимкніть приватні повідомлення",
"editParty": "Редагувати вечірку", "editParty": "Редагувати команду",
"joinGuild": "Приєднатись до ґільдії", "joinGuild": "Приєднатись до ґільдії",
"editGuild": "Редагувати ґільдію", "editGuild": "Редагувати ґільдію",
"viewDetails": "Переглянути деталі", "viewDetails": "Переглянути деталі",

View File

@@ -58,7 +58,7 @@
"noActiveQuestToAbort": "Немає активних квестів для їх переривання.", "noActiveQuestToAbort": "Немає активних квестів для їх переривання.",
"onlyLeaderAbortQuest": "Тільки лідер групи або квесту може перервати його.", "onlyLeaderAbortQuest": "Тільки лідер групи або квесту може перервати його.",
"questAlreadyRejected": "Ви вже відхилили запрошення на квест.", "questAlreadyRejected": "Ви вже відхилили запрошення на квест.",
"cantCancelActiveQuest": "Ви не можете відмінити активний квест, використайте функцію переривання.", "cantCancelActiveQuest": "Ви не можете скасувати активний квест, використайте функцію переривання.",
"onlyLeaderCancelQuest": "Тільки лідер групи або квесту може відміняти його.", "onlyLeaderCancelQuest": "Тільки лідер групи або квесту може відміняти його.",
"questNotPending": "Немає квесту, котрий можна було б розпочати.", "questNotPending": "Немає квесту, котрий можна було б розпочати.",
"questOrGroupLeaderOnlyStartQuest": "Тільки лідер групи або квесту може почати його", "questOrGroupLeaderOnlyStartQuest": "Тільки лідер групи або квесту може почати його",
@@ -73,7 +73,7 @@
"bossRage": "<%= currentRage %> / <%= maxRage %> Лють", "bossRage": "<%= currentRage %> / <%= maxRage %> Лють",
"rageStrikes": "Удари люті", "rageStrikes": "Удари люті",
"questOwner": "Лідер квесту", "questOwner": "Лідер квесту",
"cancelQuest": "Відмінити квест", "cancelQuest": "Скасувати квест",
"backToSelection": "Назад до вибору квесту", "backToSelection": "Назад до вибору квесту",
"yourQuests": "Ваші квести", "yourQuests": "Ваші квести",
"selectQuestModal": "Оберіть квест", "selectQuestModal": "Оберіть квест",

View File

@@ -20,25 +20,25 @@
"questHedgehogNotes": "Їжаки - веселі тваринки. Вони є одними з найбільш ласкавих домашніх улюбленців, які можуть бути у габітиканців. Але подейкують, якщо погодувати їх молоком після опівночі, вони стають досить дратівливими. І в п’ятдесят разів більшими. На жаль, <strong>InspectorCaracal</strong> зробив саме це. Ой-йой.", "questHedgehogNotes": "Їжаки - веселі тваринки. Вони є одними з найбільш ласкавих домашніх улюбленців, які можуть бути у габітиканців. Але подейкують, якщо погодувати їх молоком після опівночі, вони стають досить дратівливими. І в п’ятдесят разів більшими. На жаль, <strong>InspectorCaracal</strong> зробив саме це. Ой-йой.",
"questHedgehogCompletion": "Ваш гурт успішно заспокоїв Їжачиху! Вона зменшилася до нормального розміру та пошкутильгала до своїх яєць. Вона щось пищить та викочує деякі свої яйця до Вашого гурту. Будемо сподіватися, що ці їжачки полюблять молочко!", "questHedgehogCompletion": "Ваш гурт успішно заспокоїв Їжачиху! Вона зменшилася до нормального розміру та пошкутильгала до своїх яєць. Вона щось пищить та викочує деякі свої яйця до Вашого гурту. Будемо сподіватися, що ці їжачки полюблять молочко!",
"questHedgehogBoss": "Тинозвір", "questHedgehogBoss": "Тинозвір",
"questHedgehogDropHedgehogEgg": "Яйце їжака", "questHedgehogDropHedgehogEgg": "Яйце з їжаком",
"questHedgehogUnlockText": "Розблоковує яйця їжака для придбання на ринку", "questHedgehogUnlockText": "Розблоковує придбання на ринку яєць з їжаком",
"questGhostStagText": "Дух весни", "questGhostStagText": "Дух весни",
"questGhostStagNotes": "(глибокий вдих) Ах, весна. Пора року, коли колір знову починає наповнювати ландшафт. Зникли холодні засніжені горби зими. Там, де колись стояв мороз, місце займає яскраве життя рослин. Соковито зелене листя заливає дерева, трава повертається до колишнього яскравого відтінку, веселка квітів здіймається вздовж рівнини, а білий містичний туман вкриває землю! ... Зачекайте. Містичний туман? «Ні, — з побоюванням каже <strong>@InspectorCaracal</strong>, — здається, що причиною цього туману є якийсь дух. О, ні. Він мчить прямо на вас».", "questGhostStagNotes": "(глибокий вдих) Ах, весна. Пора року, коли колір знову починає наповнювати ландшафт. Зникли холодні засніжені горби зими. Там, де колись стояв мороз, місце займає яскраве життя рослин. Соковито зелене листя заливає дерева, трава повертається до колишнього яскравого відтінку, веселка квітів здіймається вздовж рівнини, а білий містичний туман вкриває землю! ... Зачекайте. Містичний туман? «Ні, — з побоюванням каже <strong>@InspectorCaracal</strong>, — здається, що причиною цього туману є якийсь дух. О, ні. Він мчить прямо на вас».",
"questGhostStagCompletion": "Дух, здається, був здоровий, потім він почав принюхуватися до землі. Спокійний голос огортає Ваш гурт. „Даруйте за мою неґречність. Я тільки-но прокинувся від свого сну, і ще не всі клепки повернулись на свої місця. Будь ласка, візьміть це на знак мого вибачення. Купка яєць з'являється на траві перед духом. Без жодного слова дух утікає далі до лісу, а у місцях, де він пробігає, оживають квіти.", "questGhostStagCompletion": "Дух, здається, зовсім не ушкоджений, починає принюхуватися до землі. Спокійним голос він звертається до вашої команди. \"Даруйте за мою неґречність. Я тільки-но прокинувся від свого сну, і ще не всі клепки повернулись на свої місця. Будь ласка, візьміть це на знак мого вибачення\". Купка яєць з'являється на траві перед ним. Без жодного слова дух біжить до лісу, а у місцях, де він пробігає, проростають квіти.",
"questGhostStagBoss": "Олень-Привид", "questGhostStagBoss": "Олень-Привид",
"questGhostStagDropDeerEgg": "Яйце оленя", "questGhostStagDropDeerEgg": "Яйце з оленем",
"questGhostStagUnlockText": "Розблоковує оленячі яйця для придбання на ринку", "questGhostStagUnlockText": "Розблоковує придбання на ринку яєць з оленем",
"questRatText": "Щурячий король", "questRatText": "Щурячий король",
"questRatNotes": "Сміття! Величезні купи невиконаних щоденок лежать по всій Габітиці. Проблема стала настільки серйозною, що натовпи пацюків тепер можна побачити повсюди. Ви помітили, як @Pandah ніжно гладить одного з них. Вона пояснює, що щури — це ніжні істоти, які харчуються невиконаними щоденками. Справжня проблема полягає в тому, що щоденки впали в каналізацію, утворивши небезпечний затор, який потрібно розчистити. Коли ви спускаєтесь у каналізацію, величезний щур із криваво-червоними очима та кривими жовтими зубами нападає на вас, захищаючи свою гору сміття. Чи вистачить вам сміливості, щоб зіткнутись з легендарним Щурячим королем?", "questRatNotes": "Сміття! Величезні купи невиконаних щоденок лежать по всій Габітиці. Проблема стала настільки серйозною, що натовпи пацюків тепер можна побачити повсюди. Ви помітили, як @Pandah ніжно гладить одного з них. Вона пояснює, що щури — це ніжні істоти, які харчуються невиконаними щоденками. Справжня проблема полягає в тому, що щоденки впали в каналізацію, утворивши небезпечний затор, який потрібно розчистити. Коли ви спускаєтесь у каналізацію, величезний щур із криваво-червоними очима та кривими жовтими зубами нападає на вас, захищаючи свою гору сміття. Чи вистачить вам сміливості, щоб зіткнутись з легендарним Щурячим королем?",
"questRatCompletion": "Ваш останній удар позбавив гігантського щура сили, його очі стали тьмяно-сірими. Звір розпадається на безліч крихітних мишенят, які злякано тікають геть. Ви помічаєте @Pandah, яка стоїть позаду вас і дивиться на колись могутню істоту. Вона пояснює, що жителі Habitica надихнулися вашою мужністю і швидко виконують усі свої щоденки. Вона попереджає вас, що ми повинні бути пильними, бо якщо ми ослабимо пильність, Щурячий король повернеться. В якості оплати @Pandah пропонує вам кілька щурячих яєць. Помітивши ваш неспокійний вираз обличчя, вона посміхається: «З них вилупляться чудові домашні тварини».", "questRatCompletion": "Ваш останній удар позбавив гігантського щура сили, його очі стали тьмяно-сірими. Звір розпадається на безліч крихітних мишенят, які злякано тікають геть. Ви помічаєте @Pandah, яка стоїть позаду вас і дивиться на колись могутню істоту. Вона пояснює, що жителі Habitica надихнулися вашою мужністю і швидко виконують усі свої щоденки. Вона попереджає вас, що ми повинні бути пильними, бо якщо ми ослабимо пильність, Щурячий король повернеться. В якості оплати @Pandah пропонує вам кілька яєць зі щуром. Помітивши ваш неспокійний вираз обличчя, вона посміхається: «З них вилупляться чудові домашні улюбленці».",
"questRatBoss": "Щурячий король", "questRatBoss": "Щурячий король",
"questRatDropRatEgg": "Яйце щура", "questRatDropRatEgg": "Яйце зі щуром",
"questRatUnlockText": "Розблоковує щурячі яйця для придбання на ринку", "questRatUnlockText": "Розблоковує придбання на ринку яєць зі щуром",
"questOctopusText": "Поклик Октотулу", "questOctopusText": "Поклик Октотулу",
"questOctopusNotes": "@Urse, банькатий молодий писар, попрохав вас допомогти з оглядом таємничої печери на морському узбережжі. Серед напівтемних припливних озерцят стоїть величезна брама зі сталактитів та сталагмітів. Коли ви підходите ближче, унизу воріт починає кружляти темний вир. Ви з подивом дивитесь, як звідти вилазить спрутоподібний дракон. „Липке чадо зірок прокинулося“, — несамовито реве @Urse. „Через вігинтильйони років великий Октотулу знову вільний і спраглий до насолод!“", "questOctopusNotes": "@Urse, банькатий молодий писар, попрохав вас допомогти з оглядом таємничої печери на морському узбережжі. Серед напівтемних припливних озерцят стоїть величезна брама зі сталактитів та сталагмітів. Коли ви підходите ближче, унизу воріт починає кружляти темний вир. Ви з подивом дивитесь, як звідти вилазить спрутоподібний дракон. „Липке чадо зірок прокинулося“, — несамовито реве @Urse. „Через вігинтильйони років великий Октотулу знову вільний і спраглий до насолод!“",
"questOctopusCompletion": "З останнім ударом істота вислизає у вир, з якого вона прийшла. Ви не можете сказати, чи @Urse радий вашій перемозі чи засмучений тим, що звір йде. Ваш напарник без слів показує на три слизькі гігантські яйця в сусідній ямі, покладені в гніздо із золотими монетами. «Мабуть, це яйця восьминога», — нервово кажете ви. Коли ви повертаєтеся додому, @Urse несамовито строчить у щоденнику, і ви підозрюєте, що це не востаннє, коли ви чуєте про великого Октотулу.", "questOctopusCompletion": "З останнім ударом істота вислизає у вир, з якого вона прийшла. Ви не можете сказати, чи @Urse радий вашій перемозі чи засмучений тим, що звір йде. Ваш напарник без слів показує на три слизькі гігантські яйця в сусідній ямі, покладені в гніздо із золотими монетами. «Мабуть, це яйця з восьминогами», — нервово кажете ви. Коли ви повертаєтеся додому, @Urse несамовито строчить щось у щоденнику, і ви підозрюєте, що це не востаннє, коли ви чуєте про великого Октотулу.",
"questOctopusBoss": "Октотулу", "questOctopusBoss": "Октотулу",
"questOctopusDropOctopusEgg": "Яйце спрута", "questOctopusDropOctopusEgg": "Яйце зі спрутом",
"questOctopusUnlockText": "Відкриває покупні яйця восьминогів на ринку", "questOctopusUnlockText": "Відкриває покупні яйця восьминогів на ринку",
"questHarpyText": "Рятуйте! Гарпія!", "questHarpyText": "Рятуйте! Гарпія!",
"questHarpyNotes": "У лісі зник відважний шукач пригод @UncommonCriminal, який вистежував крилате чудовисько, бачене кілька днів тому. Ви вже налаштувалися на пошуки, аж на вашу руку присів зранений папуга, красиве пір'я якого зіпсував незугарний шрам. До його лапки була прикріплена поспіхом нашкрябана записка, у якій повідомлялося, що, захищаючи папуг, @UncommonCriminal був схоплений злою гарпією і дуже потребує вашої допомоги. Ви підете за птахом і здолаєте гарпію, щоб визволити @UncommonCriminal?", "questHarpyNotes": "У лісі зник відважний шукач пригод @UncommonCriminal, який вистежував крилате чудовисько, бачене кілька днів тому. Ви вже налаштувалися на пошуки, аж на вашу руку присів зранений папуга, красиве пір'я якого зіпсував незугарний шрам. До його лапки була прикріплена поспіхом нашкрябана записка, у якій повідомлялося, що, захищаючи папуг, @UncommonCriminal був схоплений злою гарпією і дуже потребує вашої допомоги. Ви підете за птахом і здолаєте гарпію, щоб визволити @UncommonCriminal?",
@@ -53,7 +53,7 @@
"questRoosterDropRoosterEgg": "Яйце півня", "questRoosterDropRoosterEgg": "Яйце півня",
"questRoosterUnlockText": "Розблоковує купівлю півнячих яєць на ринку", "questRoosterUnlockText": "Розблоковує купівлю півнячих яєць на ринку",
"questSpiderText": "Льодяний Арахнід", "questSpiderText": "Льодяний Арахнід",
"questSpiderNotes": "Як тільки наступили холода, легенький іній почав з'являтись у хабітчанських вікнах у вигляді кружева павутинь... окрім Аркосінових, чиї вікна є повністю заморожені Морозяним Павуком, який зараз вирішує поселитись в його домі.", "questSpiderNotes": "Помалу надворі холоднішає, легенький іній починає з'являтись у вікнах габітиканців, розписуючиї їх красивими візерунками... Окрім вікон @Arcosine, бо вони повністю заморожені Морозним павуком, який вирішив поселитись в його домі.",
"questSpiderCompletion": "Морозний павук падає, залишаючи за собою невелику купу інею та кілька зачарованих яєць. @Arcosine пропонує їх вам як нагороду — можливо, ви можете виростити небезпечних павуків як домашніх тварин?", "questSpiderCompletion": "Морозний павук падає, залишаючи за собою невелику купу інею та кілька зачарованих яєць. @Arcosine пропонує їх вам як нагороду — можливо, ви можете виростити небезпечних павуків як домашніх тварин?",
"questSpiderBoss": "Павук", "questSpiderBoss": "Павук",
"questSpiderDropSpiderEgg": "Яйце павука", "questSpiderDropSpiderEgg": "Яйце павука",
@@ -393,7 +393,7 @@
"questTaskwoodsTerror3DropStrawberry": "Полуниця (їжа)", "questTaskwoodsTerror3DropStrawberry": "Полуниця (їжа)",
"questTaskwoodsTerror3DropWeapon": "", "questTaskwoodsTerror3DropWeapon": "",
"questFerretText": "Підлий тхір", "questFerretText": "Підлий тхір",
"questFerretNotes": "", "questFerretNotes": "Прогулюючись по Habit-сіті, ви бачите незадоволений натовп, який оточив тхора в червоній мантії.<br><br>\"Це зілля продуктивності, яке ви мені продали не працює!\" - скаржиться @Beffymaroo. «Минулої ночі я дивився три години телевізора замість того, щоб займатися своїми справами!»<br><br>«Так!» кричить @Pandah. «І сьогодні я витратив годину на те, щоб переставляти книжки, замість того, щоб їх читати!»<br><br>Нечестивий тхір невинно розводить руками. «Але це ж більше, ніж зазвичай, чи не так?»<br><br>Натовп вибухає гнівом.<br><br>«Жодних відшкодувань!» кричить тхір. Він пускає магічний постріл у натовп, готуючись втекти через дим.<br><br>\"Будь ласка, габітиканцю!\" каже @Faye, хапаючи вас за руку. «Здолайте тхора і змусьте його повернути нечесно отримані кошти!»",
"questFerretCompletion": "", "questFerretCompletion": "",
"questFerretBoss": "Підлий тхір", "questFerretBoss": "Підлий тхір",
"questFerretDropFerretEgg": "Яйце тхора", "questFerretDropFerretEgg": "Яйце тхора",
@@ -496,7 +496,7 @@
"questMayhemMistiflying3DropPinkCottonCandy": "Рожева цукрова кулька(Food)", "questMayhemMistiflying3DropPinkCottonCandy": "Рожева цукрова кулька(Food)",
"questMayhemMistiflying3DropShield": "", "questMayhemMistiflying3DropShield": "",
"questMayhemMistiflying3DropWeapon": "", "questMayhemMistiflying3DropWeapon": "",
"featheredFriendsText": "", "featheredFriendsText": "Набір квестів \"Пернаті друзі\"",
"featheredFriendsNotes": "", "featheredFriendsNotes": "",
"questNudibranchText": "Зараження мотиваційними морськими молюсками", "questNudibranchText": "Зараження мотиваційними морськими молюсками",
"questNudibranchNotes": "", "questNudibranchNotes": "",
@@ -504,7 +504,7 @@
"questNudibranchBoss": "", "questNudibranchBoss": "",
"questNudibranchDropNudibranchEgg": "", "questNudibranchDropNudibranchEgg": "",
"questNudibranchUnlockText": "Розблоковує купівлю молюска в яйці на ринку", "questNudibranchUnlockText": "Розблоковує купівлю молюска в яйці на ринку",
"splashyPalsText": "", "splashyPalsText": "Набір квестів \"Плескаючі друзі\"",
"splashyPalsNotes": "", "splashyPalsNotes": "",
"questHippoText": "", "questHippoText": "",
"questHippoNotes": "", "questHippoNotes": "",
@@ -512,9 +512,9 @@
"questHippoBoss": "", "questHippoBoss": "",
"questHippoDropHippoEgg": "", "questHippoDropHippoEgg": "",
"questHippoUnlockText": "Розблоковує купівлю бегемота в яйці на ринку", "questHippoUnlockText": "Розблоковує купівлю бегемота в яйці на ринку",
"farmFriendsText": "", "farmFriendsText": "Набір квестів \"Друзі фермера\"",
"farmFriendsNotes": "", "farmFriendsNotes": "Містить \"Корова-мууутант\", \"КІНецЬ світу\" та \"Грозовий баран\". Доступний до 30 вересня.",
"witchyFamiliarsText": "", "witchyFamiliarsText": "Набір квестів \"Відьмині друзі\"",
"witchyFamiliarsNotes": "", "witchyFamiliarsNotes": "",
"questGroupLostMasterclasser": "", "questGroupLostMasterclasser": "",
"questUnlockLostMasterclasser": "", "questUnlockLostMasterclasser": "",
@@ -558,7 +558,7 @@
"questYarnBoss": "", "questYarnBoss": "",
"questYarnDropYarnEgg": "", "questYarnDropYarnEgg": "",
"questYarnUnlockText": "Розблоковує купівлю пряжі в яйці на ринку", "questYarnUnlockText": "Розблоковує купівлю пряжі в яйці на ринку",
"winterQuestsText": "", "winterQuestsText": "Зимовий набір квестів",
"winterQuestsNotes": "", "winterQuestsNotes": "",
"questPterodactylText": "", "questPterodactylText": "",
"questPterodactylNotes": "", "questPterodactylNotes": "",
@@ -593,7 +593,7 @@
"questDysheartenerDropHippogriffPet": "", "questDysheartenerDropHippogriffPet": "",
"questDysheartenerDropHippogriffMount": "", "questDysheartenerDropHippogriffMount": "",
"dysheartenerArtCredit": "Графічна робота @AnnDeLune", "dysheartenerArtCredit": "Графічна робота @AnnDeLune",
"hugabugText": "", "hugabugText": "Набір квестів \"Обійми жука\"",
"hugabugNotes": "", "hugabugNotes": "",
"questSquirrelText": "", "questSquirrelText": "",
"questSquirrelNotes": "", "questSquirrelNotes": "",
@@ -603,7 +603,7 @@
"questSquirrelUnlockText": "Розблоковує купівлю білки в яйці на ринку", "questSquirrelUnlockText": "Розблоковує купівлю білки в яйці на ринку",
"cuddleBuddiesText": "Набір квестів \"Пухнасті друзі\"", "cuddleBuddiesText": "Набір квестів \"Пухнасті друзі\"",
"cuddleBuddiesNotes": "Містить «Кролик-вбивця», «Нечестивий тхір» і «Банда морських свинок». Доступний до 31 березня.", "cuddleBuddiesNotes": "Містить «Кролик-вбивця», «Нечестивий тхір» і «Банда морських свинок». Доступний до 31 березня.",
"aquaticAmigosText": "", "aquaticAmigosText": "Набір квестів \"Водні амігос\"",
"aquaticAmigosNotes": "", "aquaticAmigosNotes": "",
"questSeaSerpentText": "Біда в глибинах: Напад морського змія!", "questSeaSerpentText": "Біда в глибинах: Напад морського змія!",
"questSeaSerpentNotes": "", "questSeaSerpentNotes": "",
@@ -617,7 +617,7 @@
"questKangarooBoss": "Катастрофічний Кенгуру", "questKangarooBoss": "Катастрофічний Кенгуру",
"questKangarooDropKangarooEgg": "Яйце кенгуру", "questKangarooDropKangarooEgg": "Яйце кенгуру",
"questKangarooUnlockText": "Розблоковує купівлю кенгуру в яйці на ринку", "questKangarooUnlockText": "Розблоковує купівлю кенгуру в яйці на ринку",
"forestFriendsText": "", "forestFriendsText": "Набір квестів \"Лісові друзі\"",
"forestFriendsNotes": "", "forestFriendsNotes": "",
"questAlligatorText": "Інста-гатор", "questAlligatorText": "Інста-гатор",
"questAlligatorNotes": "", "questAlligatorNotes": "",
@@ -625,9 +625,9 @@
"questAlligatorBoss": "Інста-гатор", "questAlligatorBoss": "Інста-гатор",
"questAlligatorDropAlligatorEgg": "Яйце алігатора", "questAlligatorDropAlligatorEgg": "Яйце алігатора",
"questAlligatorUnlockText": "Розблоковує купівлю яєць алігатора на ринку", "questAlligatorUnlockText": "Розблоковує купівлю яєць алігатора на ринку",
"oddballsText": "", "oddballsText": "Набір квестів \"Дивні кулі\"",
"oddballsNotes": "", "oddballsNotes": "",
"birdBuddiesText": "", "birdBuddiesText": "Набір квестів \"Пташечки-співачки\"",
"birdBuddiesNotes": "", "birdBuddiesNotes": "",
"questVelociraptorText": "Велоци-репер", "questVelociraptorText": "Велоци-репер",
"questVelociraptorNotes": "", "questVelociraptorNotes": "",
@@ -645,5 +645,15 @@
"questRobotDropRobotEgg": "Яйце робота", "questRobotDropRobotEgg": "Яйце робота",
"questRobotText": "Загадкові механічні дива!", "questRobotText": "Загадкові механічні дива!",
"mythicalMarvelsText": "Набір квестів \"Фантастичні звірі\"", "mythicalMarvelsText": "Набір квестів \"Фантастичні звірі\"",
"mythicalMarvelsNotes": "Включає квести \"Переконати королеву єдинорогів\", \"Полум'яний ґрифон\" та \"Біда в глибинах: Напад морського змія\". Доступний до 28 лютого." "mythicalMarvelsNotes": "Включає квести \"Переконати королеву єдинорогів\", \"Полум'яний ґрифон\" та \"Біда в глибинах: Напад морського змія\". Доступний до 28 лютого.",
"rockingReptilesText": "Набір квестів \"Кам'яні рептилії\"",
"delightfulDinosText": "Набір квестів \"Давні динозаври\"",
"jungleBuddiesText": "Набір квестів \"Товариші з джунглів\"",
"sandySidekicksText": "Набір квестів \"Пісочні помічники\"",
"questDolphinUnlockText": "Розблоковує придбання на ринку яєць з дельфіном",
"questDolphinCompletion": "Ваша битва волі з дельфіном залишила вас втомленими, але ви виходете з неї переможцем. З вашою рішучістю та заохоченням @mewrose, @khdarkwolf і @confusedcicada підхоплюються та позбавляються підступної телепатії дельфіна. Ви четверо захищаєте себе почуттям гордості відо виконаних щоденнок, сильних звичок та завершених справ, аж поки дельфін не заплющує свої сяючі очі, мовчазно визнаючи ваші успіхи. З цим він падає назад у води бухти. Коли ви \"даєте пять\" та вітаєте один одного, ви помічаєте три яйця, які вода винесла на берег.<br><br>«Хм, цікаво, що ми можемо з ними зробити?», — міркує @khdarkwolf.",
"questDolphinBoss": "Дельфін сумніву",
"questDolphinDropDolphinEgg": "Яйце з дельфіном",
"questDolphinNotes": "Ви гуляєте по пляжу бухти Незавершеності, розмірковуючи про складну роботу, яка вас чекає. Раптом вам впадає в очі плескіт у воді. Чудовий дельфін стрибає над хвилями. Сонячне світло відбивається від його плавників і хвоста. Але зачекайте... це не відблиски сонячниї променів, і дельфін не занурюється назад у море. Він фіксує свій погляд на @khdarkwolf.<br><br>«Я ніколи не закінчу всі ці щоденники», — сказав @khdarkwolf.<br><br>«Я недостатньо хороший, щоб досягти своїх цілей», — сказав @confusedcicada, коли дельфін спрямував на неї свій яскравий погляд.<br><br>«Навіщо я взагалі намагався?» запитала @mewrose, в’янучи під поглядом звіра.<br><br>Його погляд зустрічається з вашими, і ви відчуваєте, як ваш розум починає тонути під наростаючою хвилею сумнівів. Ви берете себе в руи; хтось повинен здолати цю істоту, і це будете ви!",
"questDolphinText": "Дельфін сумніву"
} }

View File

@@ -21,7 +21,6 @@ export const CHAT_FLAG_FROM_SHADOW_MUTE = 10;
// @TODO use those constants to replace hard-coded numbers // @TODO use those constants to replace hard-coded numbers
export const SUPPORTED_SOCIAL_NETWORKS = [ export const SUPPORTED_SOCIAL_NETWORKS = [
{ key: 'facebook', name: 'Facebook' },
{ key: 'google', name: 'Google' }, { key: 'google', name: 'Google' },
{ key: 'apple', name: 'Apple' }, { key: 'apple', name: 'Apple' },
]; ];

View File

@@ -15,7 +15,7 @@ export default prefill({
setPrice: 5, availableFrom: '2022-04-14T08:00-05:00', availableUntil: '2022-04-30T20:00-05:00', text: t('shimmerColors'), setPrice: 5, availableFrom: '2022-04-14T08:00-05:00', availableUntil: '2022-04-30T20:00-05:00', text: t('shimmerColors'),
}, },
hauntedHairColors: { hauntedHairColors: {
setPrice: 5, availableFrom: '2021-09-28T08:00-04:00', availableUntil: '2021-10-31T20:00-04:00', text: t('hauntedColors'), setPrice: 5, availableFrom: '2022-10-04T08:00-04:00', availableUntil: EVENTS.fall2022.end, text: t('hauntedColors'),
}, },
winteryHairColors: { winteryHairColors: {
setPrice: 5, availableFrom: '2021-12-23T08:00-05:00', availableUntil: '2022-01-31T20:00-05:00', text: t('winteryColors'), setPrice: 5, availableFrom: '2021-12-23T08:00-05:00', availableUntil: '2022-01-31T20:00-05:00', text: t('winteryColors'),
@@ -27,7 +27,7 @@ export default prefill({
}, },
spookySkins: { setPrice: 5, availableUntil: '2016-01-01', text: t('spookySkins') }, spookySkins: { setPrice: 5, availableUntil: '2016-01-01', text: t('spookySkins') },
supernaturalSkins: { supernaturalSkins: {
setPrice: 5, availableFrom: '2021-09-28T08:00-04:00', availableUntil: '2021-10-31T20:00-04:00', text: t('supernaturalSkins'), setPrice: 5, availableFrom: '2022-10-04T08:00-04:00', availableUntil: EVENTS.fall2022.end, text: t('supernaturalSkins'),
}, },
splashySkins: { splashySkins: {
setPrice: 5, availableFrom: '2022-07-05T08:00-05:00', availableUntil: EVENTS.summer2022.end, text: t('splashySkins'), setPrice: 5, availableFrom: '2022-07-05T08:00-05:00', availableUntil: EVENTS.summer2022.end, text: t('splashySkins'),

View File

@@ -9,17 +9,28 @@ const gemsPromo = {
}; };
export const EVENTS = { export const EVENTS = {
noCurrentEvent: { afterGala: {
start: '2022-09-30T20:00-04:00', start: '2022-10-31T20:00-04:00',
end: '2022-12-21T08:00-04:00', end: '2022-12-21T08:00-04:00',
season: 'normal', season: 'normal',
npcImageSuffix: '', npcImageSuffix: '',
}, },
fall2022: {
start: '2022-09-20T08:00-04:00',
end: '2022-10-31T20:00-04:00',
npcImageSuffix: '_fall',
season: 'fall',
gear: true,
},
beforeGala: {
start: '2022-07-31T20:00-04:00',
end: '2022-09-20T08:00-04:00',
season: 'normal',
npcImageSuffix: '',
},
bundle202209: { bundle202209: {
start: '2022-09-13T08:00-04:00', start: '2022-09-13T08:00-04:00',
end: '2022-09-30T20:00-04:00', end: '2022-09-30T20:00-04:00',
season: 'normal',
npcImageSuffix: '',
}, },
potions202208: { potions202208: {
start: '2022-08-16T08:00-04:00', start: '2022-08-16T08:00-04:00',

View File

@@ -188,6 +188,11 @@ const SEASONAL_SETS = {
'fall2021HeadlessWarriorSet', 'fall2021HeadlessWarriorSet',
'fall2021BrainEaterMageSet', 'fall2021BrainEaterMageSet',
'fall2021FlameSummonerHealerSet', 'fall2021FlameSummonerHealerSet',
'fall2022KappaRogueSet',
'fall2022OrcWarriorSet',
'fall2022HarpyMageSet',
'fall2022WatcherHealerSet',
], ],
}; };

View File

@@ -702,15 +702,19 @@ const armor = {
}, },
fall2021Rogue: { fall2021Rogue: {
set: 'fall2021OozeRogueSet', set: 'fall2021OozeRogueSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Warrior: { fall2021Warrior: {
set: 'fall2021HeadlessWarriorSet', set: 'fall2021HeadlessWarriorSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Mage: { fall2021Mage: {
set: 'fall2021BrainEaterMageSet', set: 'fall2021BrainEaterMageSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Healer: { fall2021Healer: {
set: 'fall2021FlameSummonerHealerSet', set: 'fall2021FlameSummonerHealerSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
winter2022Rogue: { winter2022Rogue: {
set: 'winter2022FireworksRogueSet', set: 'winter2022FireworksRogueSet',
@@ -754,6 +758,18 @@ const armor = {
summer2022Healer: { summer2022Healer: {
set: 'summer2022AngelfishHealerSet', set: 'summer2022AngelfishHealerSet',
}, },
fall2022Rogue: {
set: 'fall2022KappaRogueSet',
},
fall2022Warrior: {
set: 'fall2022OrcWarriorSet',
},
fall2022Mage: {
set: 'fall2022HarpyMageSet',
},
fall2022Healer: {
set: 'fall2022WatcherHealerSet',
},
}; };
const armorStats = { const armorStats = {
@@ -1792,15 +1808,19 @@ const head = {
}, },
fall2021Rogue: { fall2021Rogue: {
set: 'fall2021OozeRogueSet', set: 'fall2021OozeRogueSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Warrior: { fall2021Warrior: {
set: 'fall2021HeadlessWarriorSet', set: 'fall2021HeadlessWarriorSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Mage: { fall2021Mage: {
set: 'fall2021BrainEaterMageSet', set: 'fall2021BrainEaterMageSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Healer: { fall2021Healer: {
set: 'fall2021FlameSummonerHealerSet', set: 'fall2021FlameSummonerHealerSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
winter2022Rogue: { winter2022Rogue: {
set: 'winter2022FireworksRogueSet', set: 'winter2022FireworksRogueSet',
@@ -1844,6 +1864,18 @@ const head = {
summer2022Healer: { summer2022Healer: {
set: 'summer2022AngelfishHealerSet', set: 'summer2022AngelfishHealerSet',
}, },
fall2022Rogue: {
set: 'fall2022KappaRogueSet',
},
fall2022Warrior: {
set: 'fall2022OrcWarriorSet',
},
fall2022Mage: {
set: 'fall2022HarpyMageSet',
},
fall2022Healer: {
set: 'fall2022WatcherHealerSet',
},
}; };
const headStats = { const headStats = {
@@ -2592,12 +2624,15 @@ const shield = {
}, },
fall2021Rogue: { fall2021Rogue: {
set: 'fall2021OozeRogueSet', set: 'fall2021OozeRogueSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Warrior: { fall2021Warrior: {
set: 'fall2021HeadlessWarriorSet', set: 'fall2021HeadlessWarriorSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Healer: { fall2021Healer: {
set: 'fall2021FlameSummonerHealerSet', set: 'fall2021FlameSummonerHealerSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
winter2022Rogue: { winter2022Rogue: {
set: 'winter2022FireworksRogueSet', set: 'winter2022FireworksRogueSet',
@@ -2626,6 +2661,15 @@ const shield = {
summer2022Healer: { summer2022Healer: {
set: 'summer2022AngelfishHealerSet', set: 'summer2022AngelfishHealerSet',
}, },
fall2022Rogue: {
set: 'fall2022KappaRogueSet',
},
fall2022Warrior: {
set: 'fall2022OrcWarriorSet',
},
fall2022Healer: {
set: 'fall2022WatcherHealerSet',
},
}; };
const shieldStats = { const shieldStats = {
@@ -3288,15 +3332,19 @@ const weapon = {
}, },
fall2021Rogue: { fall2021Rogue: {
set: 'fall2021OozeRogueSet', set: 'fall2021OozeRogueSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Warrior: { fall2021Warrior: {
set: 'fall2021HeadlessWarriorSet', set: 'fall2021HeadlessWarriorSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Mage: { fall2021Mage: {
set: 'fall2021BrainEaterMageSet', set: 'fall2021BrainEaterMageSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
fall2021Healer: { fall2021Healer: {
set: 'fall2021FlameSummonerHealerSet', set: 'fall2021FlameSummonerHealerSet',
canBuy: () => CURRENT_EVENT && CURRENT_EVENT.season === 'fall',
}, },
winter2022Rogue: { winter2022Rogue: {
set: 'winter2022FireworksRogueSet', set: 'winter2022FireworksRogueSet',
@@ -3334,6 +3382,18 @@ const weapon = {
summer2022Healer: { summer2022Healer: {
set: 'summer2022AngelfishHealerSet', set: 'summer2022AngelfishHealerSet',
}, },
fall2022Rogue: {
set: 'fall2022KappaRogueSet',
},
fall2022Warrior: {
set: 'fall2022OrcWarriorSet',
},
fall2022Mage: {
set: 'fall2022HarpyMageSet',
},
fall2022Healer: {
set: 'fall2022WatcherHealerSet',
},
}; };
const weaponStats = { const weaponStats = {

View File

@@ -161,13 +161,13 @@ const premium = {
value: 2, value: 2,
text: t('hatchingPotionGhost'), text: t('hatchingPotionGhost'),
limited: true, limited: true,
event: EVENTS.fall2020, event: EVENTS.fall2022,
canBuy () { canBuy () {
return moment().isBefore('2020-11-02'); return moment().isBetween(EVENTS.fall2022.start, EVENTS.fall2022.end);
}, },
_addlNotes: t('eventAvailabilityReturning', { _addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndOctober'), availableDate: t('dateEndOctober'),
previousDate: t('septemberYYYY', { year: 2018 }), previousDate: t('novemberYYYY', { year: 2020 }),
}), }),
}, },
Holly: { Holly: {
@@ -337,13 +337,13 @@ const premium = {
value: 2, value: 2,
text: t('hatchingPotionShadow'), text: t('hatchingPotionShadow'),
limited: true, limited: true,
event: EVENTS.fall2020, event: EVENTS.fall2022,
canBuy () { canBuy () {
return moment().isBefore('2020-11-02'); return moment().isBetween(EVENTS.fall2022.start, EVENTS.fall2022.end);
}, },
_addlNotes: t('eventAvailabilityReturning', { _addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndOctober'), availableDate: t('dateEndOctober'),
previousDate: t('septemberYYYY', { year: 2019 }), previousDate: t('novemberYYYY', { year: 2020 }),
}), }),
}, },
Amber: { Amber: {
@@ -424,13 +424,13 @@ const premium = {
value: 2, value: 2,
text: t('hatchingPotionVampire'), text: t('hatchingPotionVampire'),
limited: true, limited: true,
event: EVENTS.fall2021, event: EVENTS.fall2022,
_addlNotes: t('eventAvailabilityReturning', { _addlNotes: t('eventAvailabilityReturning', {
availableDate: t('dateEndOctober'), availableDate: t('dateEndOctober'),
previousDate: t('septemberYYYY', { year: 2020 }), previousDate: t('octoberYYYY', { year: 2021 }),
}), }),
canBuy () { canBuy () {
return moment().isBefore(EVENTS.fall2021.end); return moment().isBetween(EVENTS.fall2022.start, EVENTS.fall2022.end);
}, },
}, },
AutumnLeaf: { AutumnLeaf: {

View File

@@ -5,7 +5,7 @@ import { EVENTS } from './constants';
// path: 'premiumHatchingPotions.Rainbow', // path: 'premiumHatchingPotions.Rainbow',
const featuredItems = { const featuredItems = {
market () { market () {
if (moment().isBetween(EVENTS.potions202208.start, EVENTS.potions202208.end)) { if (moment().isBetween(EVENTS.fall2022.start, EVENTS.fall2022.end)) {
return [ return [
{ {
type: 'armoire', type: 'armoire',
@@ -13,15 +13,15 @@ const featuredItems = {
}, },
{ {
type: 'premiumHatchingPotion', type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Moonglow', path: 'premiumHatchingPotions.Vampire',
}, },
{ {
type: 'premiumHatchingPotion', type: 'premiumHatchingPotion',
path: 'premiumHatchingPotions.Porcelain', path: 'premiumHatchingPotions.Ghost',
}, },
{ {
type: 'food', type: 'premiumHatchingPotion',
path: 'food.Milk', path: 'premiumHatchingPotions.Shadow',
}, },
]; ];
} }

View File

@@ -325,7 +325,7 @@ spells.special = {
target: 'user', target: 'user',
notes: t('spellSpecialSpookySparklesNotes'), notes: t('spellSpecialSpookySparklesNotes'),
canOwn () { canOwn () {
return moment().isBetween('2021-10-12T08:00-04:00', EVENTS.fall2021.end); return moment().isBetween('2021-10-11T08:00-04:00', EVENTS.fall2022.end);
}, },
cast (user, target, req) { cast (user, target, req) {
if (!user.items.special.spookySparkles) throw new NotAuthorized(t('spellNotOwned')(req.language)); if (!user.items.special.spookySparkles) throw new NotAuthorized(t('spellNotOwned')(req.language));

View File

@@ -30,16 +30,15 @@ export default {
pinnedSets: SHOP_OPEN pinnedSets: SHOP_OPEN
? { ? {
healer: 'summer2022AngelfishHealerSet', healer: 'fall2022WatcherHealerSet',
rogue: 'summer2022CrabRogueSet', rogue: 'fall2022KappaRogueSet',
warrior: 'summer2022WaterspoutWarriorSet', warrior: 'fall2022OrcWarriorSet',
wizard: 'summer2022MantaRayMageSet', wizard: 'fall2022HarpyMageSet',
} }
: {}, : {},
availableSpells: SHOP_OPEN && moment().isBetween('2022-10-04T08:00-05:00', CURRENT_EVENT.end)
availableSpells: SHOP_OPEN && moment().isBetween('2022-07-12T08:00-05:00', CURRENT_EVENT.end)
? [ ? [
'seafoam', 'spookySparkles',
] ]
: [], : [],
@@ -49,5 +48,5 @@ export default {
] ]
: [], : [],
featuredSet: 'summer2021NautilusMageSet', featuredSet: 'fall2021BrainEaterMageSet',
}; };

View File

@@ -161,13 +161,16 @@ async function registerLocal (req, res, { isV3 = false }) {
}; };
if (existingUser) { if (existingUser) {
const hasSocialAuth = common.constants.SUPPORTED_SOCIAL_NETWORKS.find(network => { const networks = common.constants.SUPPORTED_SOCIAL_NETWORKS;
// need to insert FB here to allow users who only have FB auth to connect local auth.
networks.push({ key: 'facebook', name: 'Facebook' });
const hasSocialAuth = networks.find(network => {
if (existingUser.auth.hasOwnProperty(network.key)) { // eslint-disable-line no-prototype-builtins, max-len if (existingUser.auth.hasOwnProperty(network.key)) { // eslint-disable-line no-prototype-builtins, max-len
return existingUser.auth[network.key].id; return existingUser.auth[network.key].id;
} }
return false; return false;
}); });
if (!hasSocialAuth) throw new NotAuthorized(res.t('onlySocialAttachLocal')); if (!hasSocialAuth && existingUser.auth.local.hashed_password) throw new NotAuthorized(res.t('onlySocialAttachLocal'));
existingUser.auth.local = newUser.auth.local; existingUser.auth.local = newUser.auth.local;
newUser = existingUser; newUser = existingUser;
} else { } else {

View File

@@ -60,11 +60,6 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre
[`auth.${network}.id`]: profile.id, [`auth.${network}.id`]: profile.id,
}, { _id: 1, apiToken: 1, auth: 1 }).exec(); }, { _id: 1, apiToken: 1, auth: 1 }).exec();
let email;
if (profile.emails && profile.emails[0] && profile.emails[0].value) {
email = profile.emails[0].value.toLowerCase();
}
// User already signed up // User already signed up
if (user) { if (user) {
if (existingUser) { if (existingUser) {
@@ -79,6 +74,11 @@ export async function loginSocial (req, res) { // eslint-disable-line import/pre
return loginRes(user, req, res); return loginRes(user, req, res);
} }
let email;
if (profile.emails && profile.emails[0] && profile.emails[0].value) {
email = profile.emails[0].value.toLowerCase();
}
if (!existingUser && email) { if (!existingUser && email) {
existingUser = await User.findOne({ 'auth.local.email': email }).exec(); existingUser = await User.findOne({ 'auth.local.email': email }).exec();
} }

View File

@@ -1,6 +1,5 @@
import passport from 'passport'; import passport from 'passport';
import nconf from 'nconf'; import nconf from 'nconf';
import { Strategy as FacebookStrategy } from 'passport-facebook';
import { Strategy as GoogleStrategy } from 'passport-google-oauth20'; import { Strategy as GoogleStrategy } from 'passport-google-oauth20';
// Passport session setup. // Passport session setup.
@@ -13,20 +12,6 @@ import { Strategy as GoogleStrategy } from 'passport-google-oauth20';
passport.serializeUser((user, done) => done(null, user)); passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((obj, done) => done(null, obj)); passport.deserializeUser((obj, done) => done(null, obj));
// TODO remove?
// This auth strategy is no longer used.
// It's just kept around for auth.js#loginFacebook() (passport._strategies.facebook.userProfile)
// The proper fix would be to move to a general OAuth module simply to verify accessTokens
passport.use(new FacebookStrategy({
clientID: nconf.get('FACEBOOK_KEY'),
clientSecret: nconf.get('FACEBOOK_SECRET'),
profileFields: ['id', 'email', 'displayName'],
profileURL: 'https://graph.facebook.com/v2.8/me',
authorizationURL: 'https://www.facebook.com/v2.8/dialog/oauth',
tokenURL: 'https://graph.facebook.com/v2.8/oauth/access_token',
// callbackURL: nconf.get("BASE_URL") + "/auth/facebook/callback"
}, (accessToken, refreshToken, profile, done) => done(null, profile)));
passport.use(new GoogleStrategy({ passport.use(new GoogleStrategy({
clientID: nconf.get('GOOGLE_CLIENT_ID'), clientID: nconf.get('GOOGLE_CLIENT_ID'),
clientSecret: nconf.get('GOOGLE_CLIENT_SECRET'), clientSecret: nconf.get('GOOGLE_CLIENT_SECRET'),