Merge branch 'develop' into party-chat-translations

This commit is contained in:
Mateus Etto
2018-03-17 00:08:20 +09:00
310 changed files with 10732 additions and 10045 deletions

View File

@@ -1,10 +1,6 @@
{ {
"presets": ["es2015"],
"plugins": [ "plugins": [
"transform-object-rest-spread", "transform-es2015-modules-commonjs",
["transform-async-to-module-method", { "syntax-object-rest-spread",
"module": "bluebird",
"method": "coroutine"
}]
] ]
} }

View File

@@ -4,6 +4,7 @@ node_modules/**
.bower-registry/** .bower-registry/**
website/client-old/** website/client-old/**
website/client/** website/client/**
website/client/store/**
website/views/** website/views/**
website/build/** website/build/**
dist/** dist/**

2
.nvmrc
View File

@@ -1 +1 @@
6 8

View File

@@ -1,6 +1,6 @@
language: node_js language: node_js
node_js: node_js:
- '6' - '8'
services: services:
- mongodb - mongodb
cache: cache:
@@ -8,8 +8,6 @@ cache:
- 'node_modules' - 'node_modules'
addons: addons:
chrome: stable chrome: stable
before_install:
- npm install -g npm@5
before_script: before_script:
- npm run test:build - npm run test:build
- cp config.json.example config.json - cp config.json.example config.json

View File

@@ -1,4 +1,4 @@
FROM node:boron FROM node:8
# Upgrade NPM to v5 (Yarn is needed because of this bug https://github.com/npm/npm/issues/16807) # Upgrade NPM to v5 (Yarn is needed because of this bug https://github.com/npm/npm/issues/16807)
# The used solution is suggested here https://github.com/npm/npm/issues/16807#issuecomment-313591975 # The used solution is suggested here https://github.com/npm/npm/issues/16807#issuecomment-313591975

View File

@@ -1,4 +1,4 @@
FROM node:boron FROM node:8
ENV ADMIN_EMAIL admin@habitica.com ENV ADMIN_EMAIL admin@habitica.com
ENV AMAZON_PAYMENTS_CLIENT_ID amzn1.application-oa2-client.68ed9e6904ef438fbc1bf86bf494056e ENV AMAZON_PAYMENTS_CLIENT_ID amzn1.application-oa2-client.68ed9e6904ef438fbc1bf86bf494056e
@@ -20,7 +20,7 @@ RUN npm install -g gulp-cli mocha
# Clone Habitica repo and install dependencies # Clone Habitica repo and install dependencies
RUN mkdir -p /usr/src/habitrpg RUN mkdir -p /usr/src/habitrpg
WORKDIR /usr/src/habitrpg WORKDIR /usr/src/habitrpg
RUN git clone --branch v4.29.7 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg RUN git clone --branch v4.29.8 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
RUN npm install RUN npm install
RUN gulp build:prod --force RUN gulp build:prod --force

View File

@@ -2,7 +2,6 @@ import { exec } from 'child_process';
import psTree from 'ps-tree'; import psTree from 'ps-tree';
import nconf from 'nconf'; import nconf from 'nconf';
import net from 'net'; import net from 'net';
import Bluebird from 'bluebird';
import { post } from 'superagent'; import { post } from 'superagent';
import { sync as glob } from 'glob'; import { sync as glob } from 'glob';
import Mocha from 'mocha'; import Mocha from 'mocha';
@@ -45,7 +44,7 @@ export function kill (proc) {
* before failing. * before failing.
*/ */
export function awaitPort (port, max = 60) { export function awaitPort (port, max = 60) {
return new Bluebird((rej, res) => { return new Promise((rej, res) => {
let socket; let socket;
let timeout; let timeout;
let interval; let interval;

View File

@@ -16,7 +16,6 @@
const authorName = 'Blade'; const authorName = 'Blade';
const authorUuid = '75f270e8-c5db-4722-a5e6-a83f1b23f76b'; const authorUuid = '75f270e8-c5db-4722-a5e6-a83f1b23f76b';
global.Promise = require('bluebird');
const MongoClient = require('mongodb').MongoClient; const MongoClient = require('mongodb').MongoClient;
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');

View File

@@ -11,7 +11,6 @@
* pm'ed each user asking if they would like their tasks reset to the previous day * pm'ed each user asking if they would like their tasks reset to the previous day
***************************************/ ***************************************/
global.Promise = require('bluebird');
const MongoClient = require('mongodb').MongoClient; const MongoClient = require('mongodb').MongoClient;
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');

View File

@@ -12,7 +12,6 @@
* from an object to a number, hence this migration. * from an object to a number, hence this migration.
***************************************/ ***************************************/
global.Promise = require('bluebird');
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');
const Timer = require('./utils/timer'); const Timer = require('./utils/timer');

View File

@@ -9,7 +9,6 @@
* and transfers a group's progress to it * and transfers a group's progress to it
***************************************/ ***************************************/
global.Promise = require('bluebird');
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');
const Timer = require('./utils/timer'); const Timer = require('./utils/timer');

View File

@@ -12,7 +12,6 @@
* <userid>@example.com * <userid>@example.com
***************************************/ ***************************************/
global.Promise = require('bluebird');
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');
const Timer = require('./utils/timer'); const Timer = require('./utils/timer');

View File

@@ -9,7 +9,6 @@
* they support a type and options and label * they support a type and options and label
* ***************************************/ * ***************************************/
global.Promise = require('bluebird');
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');
const Timer = require('./utils/timer'); const Timer = require('./utils/timer');

View File

@@ -12,7 +12,6 @@
* message into the chat for affected parties. * message into the chat for affected parties.
***************************************/ ***************************************/
global.Promise = require('bluebird');
const uuid = require('uuid'); const uuid = require('uuid');
const TaskQueue = require('cwait').TaskQueue; const TaskQueue = require('cwait').TaskQueue;
const logger = require('./utils/logger'); const logger = require('./utils/logger');

View File

@@ -1,4 +1,6 @@
If you need to use a migration from this folder, move it to /migrations. If you need to use a migration from this folder, move it to /migrations.
Note that /migrations files (excluding /archive) are linted, so to pass test you'll have to make sure Note that /migrations files (excluding /archive) are linted, so to pass test you'll have to make sure
that the file is written correctly. that the file is written correctly.
They might also be using some old deps that we don't use anymore like Bluebird, mongoskin, ...

View File

@@ -1,5 +1,3 @@
import Bluebird from 'Bluebird';
import { model as Challenges } from '../../website/server/models/challenge'; import { model as Challenges } from '../../website/server/models/challenge';
import { model as User } from '../../website/server/models/user'; import { model as User } from '../../website/server/models/user';
@@ -17,10 +15,10 @@ async function syncChallengeToMembers (challenges) {
promises.push(user.save()); promises.push(user.save());
}); });
return Bluebird.all(promises); return Promise.all(promises);
}); });
return await Bluebird.all(challengSyncPromises); return await Promise.all(challengSyncPromises);
} }
async function syncChallenges (lastChallengeDate) { async function syncChallenges (lastChallengeDate) {

View File

@@ -1,5 +1,3 @@
import Bluebird from 'bluebird';
import { model as Group } from '../../website/server/models/group'; import { model as Group } from '../../website/server/models/group';
import { model as User } from '../../website/server/models/user'; import { model as User } from '../../website/server/models/user';
@@ -16,7 +14,7 @@ async function createGroup (name, privacy, type, leaderId) {
group.leader = user._id; group.leader = user._id;
user.guilds.push(group._id); user.guilds.push(group._id);
return Bluebird.all([group.save(), user.save()]); return Promise.all([group.save(), user.save()]);
} }
module.exports = async function groupCreator () { module.exports = async function groupCreator () {

View File

@@ -3,7 +3,6 @@
/* /*
* This migration will find users with unlimited subscriptions who are also eligible for Jackalope mounts, and award them * This migration will find users with unlimited subscriptions who are also eligible for Jackalope mounts, and award them
*/ */
import Bluebird from 'bluebird';
import { model as Group } from '../../website/server/models/group'; import { model as Group } from '../../website/server/models/group';
import { model as User } from '../../website/server/models/user'; import { model as User } from '../../website/server/models/user';
@@ -38,7 +37,7 @@ async function handOutJackalopes () {
cursor.on('close', async () => { cursor.on('close', async () => {
console.log('done'); console.log('done');
return await Bluebird.all(promises); return await Promise.all(promises);
}); });
} }

View File

@@ -9,8 +9,6 @@ let authorUuid = ''; // ... own data is done
* subscription to all members * subscription to all members
*/ */
import Bluebird from 'bluebird';
import { model as Group } from '../../website/server/models/group'; import { model as Group } from '../../website/server/models/group';
import * as payments from '../../website/server/libs/payments'; import * as payments from '../../website/server/libs/payments';
@@ -28,7 +26,7 @@ async function updateGroupsWithGroupPlans () {
}); });
cursor.on('close', async () => { cursor.on('close', async () => {
return await Bluebird.all(promises); return await Promise.all(promises);
}); });
} }

View File

@@ -1,14 +1,14 @@
require('babel-register'); require('babel-register');
require('babel-polyfill');
// This file must use ES5, everything required can be in ES6 // This file must use ES5, everything required can be in ES6
function setUpServer () { function setUpServer () {
const nconf = require('nconf'); // eslint-disable-line global-require, no-unused-vars const nconf = require('nconf'); // eslint-disable-line global-require, no-unused-vars
const mongoose = require('mongoose'); // eslint-disable-line global-require, no-unused-vars const mongoose = require('mongoose'); // eslint-disable-line global-require, no-unused-vars
const Bluebird = require('bluebird'); // eslint-disable-line global-require, no-unused-vars
const setupNconf = require('../website/server/libs/setupNconf'); // eslint-disable-line global-require const setupNconf = require('../website/server/libs/setupNconf'); // eslint-disable-line global-require
setupNconf(); setupNconf();
// We require src/server and npt src/index because // We require src/server and npt src/index because
// 1. nconf is already setup // 1. nconf is already setup
// 2. we don't need clustering // 2. we don't need clustering

View File

@@ -1,4 +1,3 @@
let Bluebird = require('bluebird');
let request = require('superagent'); let request = require('superagent');
let last = require('lodash/last'); let last = require('lodash/last');
let AWS = require('aws-sdk'); let AWS = require('aws-sdk');
@@ -74,7 +73,7 @@ function uploadToS3 (start, end, filesUrls) {
}); });
console.log(promises.length); console.log(promises.length);
return Bluebird.all(promises) return Promise.all(promises)
.then(() => { .then(() => {
currentIndex += 50; currentIndex += 50;
uploadToS3(currentIndex, currentIndex + 50, filesUrls); uploadToS3(currentIndex, currentIndex + 50, filesUrls);

3506
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +1,24 @@
{ {
"name": "habitica", "name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.", "description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.29.8", "version": "4.31.0",
"main": "./website/server/index.js", "main": "./website/server/index.js",
"dependencies": { "dependencies": {
"@slack/client": "^3.8.1", "@slack/client": "^3.8.1",
"accepts": "^1.3.2", "accepts": "^1.3.5",
"amazon-payments": "^0.2.6", "amazon-payments": "^0.2.6",
"amplitude": "^3.5.0", "amplitude": "^3.5.0",
"apidoc": "^0.17.5", "apidoc": "^0.17.5",
"autoprefixer": "^8.0.0", "autoprefixer": "^8.1.0",
"aws-sdk": "^2.200.0", "aws-sdk": "^2.209.0",
"axios": "^0.18.0", "axios": "^0.18.0",
"axios-progress-bar": "^1.1.8", "axios-progress-bar": "^1.1.8",
"babel-core": "^6.0.0", "babel-core": "^6.0.0",
"babel-eslint": "^8.2.2", "babel-eslint": "^8.2.2",
"babel-loader": "^7.1.2", "babel-loader": "^7.1.4",
"babel-plugin-syntax-async-functions": "^6.13.0", "babel-plugin-syntax-async-functions": "^6.13.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0", "babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-async-to-module-method": "^6.8.0", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
"babel-plugin-transform-object-rest-spread": "^6.16.0", "babel-plugin-transform-object-rest-spread": "^6.16.0",
"babel-plugin-transform-regenerator": "^6.16.1", "babel-plugin-transform-regenerator": "^6.16.1",
"babel-polyfill": "^6.6.1", "babel-polyfill": "^6.6.1",
@@ -26,24 +26,23 @@
"babel-register": "^6.6.0", "babel-register": "^6.6.0",
"babel-runtime": "^6.11.6", "babel-runtime": "^6.11.6",
"bcrypt": "^1.0.2", "bcrypt": "^1.0.2",
"bluebird": "^3.3.5",
"body-parser": "^1.15.0", "body-parser": "^1.15.0",
"bootstrap": "^4.0.0", "bootstrap": "^4.0.0",
"bootstrap-vue": "^2.0.0-rc.1", "bootstrap-vue": "^2.0.0-rc.2",
"compression": "^1.7.2", "compression": "^1.7.2",
"cookie-session": "^1.2.0", "cookie-session": "^1.2.0",
"coupon-code": "^0.4.5", "coupon-code": "^0.4.5",
"cross-env": "^5.1.3", "cross-env": "^5.1.4",
"css-loader": "^0.28.0", "css-loader": "^0.28.0",
"csv-stringify": "^2.0.4", "csv-stringify": "^2.0.4",
"cwait": "^1.1.1", "cwait": "^1.1.1",
"domain-middleware": "~0.1.0", "domain-middleware": "~0.1.0",
"express": "^4.16.2", "express": "^4.16.3",
"express-basic-auth": "^1.1.4", "express-basic-auth": "^1.1.4",
"express-validator": "^5.0.1", "express-validator": "^5.0.3",
"extract-text-webpack-plugin": "^3.0.2", "extract-text-webpack-plugin": "^3.0.2",
"glob": "^7.1.2", "glob": "^7.1.2",
"got": "^8.2.0", "got": "^8.3.0",
"gulp": "^4.0.0", "gulp": "^4.0.0",
"gulp-babel": "^7.0.1", "gulp-babel": "^7.0.1",
"gulp-imagemin": "^4.1.0", "gulp-imagemin": "^4.1.0",
@@ -53,22 +52,21 @@
"hellojs": "^1.15.1", "hellojs": "^1.15.1",
"html-webpack-plugin": "^2.8.1", "html-webpack-plugin": "^2.8.1",
"image-size": "^0.6.2", "image-size": "^0.6.2",
"in-app-purchase": "^1.1.6", "in-app-purchase": "^1.8.9",
"intro.js": "^2.6.0", "intro.js": "^2.6.0",
"jquery": ">=3.0.0", "jquery": ">=3.0.0",
"js2xmlparser": "^3.0.0", "js2xmlparser": "^3.0.0",
"lodash": "^4.17.4", "lodash": "^4.17.4",
"merge-stream": "^1.0.0", "merge-stream": "^1.0.0",
"method-override": "^2.3.5", "method-override": "^2.3.5",
"moment": "^2.13.0", "moment": "^2.21.0",
"moment-recur": "^1.0.7", "moment-recur": "^1.0.7",
"mongoose": "^5.0.9", "mongoose": "^5.0.10",
"morgan": "^1.7.0", "morgan": "^1.7.0",
"nconf": "^0.10.0", "nconf": "^0.10.0",
"node-gcm": "^0.14.4", "node-gcm": "^0.14.4",
"node-rdkafka": "^2.2.3", "node-sass": "^4.8.2",
"node-sass": "^4.5.0", "nodemailer": "^4.6.3",
"nodemailer": "^4.5.0",
"ora": "^2.0.0", "ora": "^2.0.0",
"pageres": "^4.1.1", "pageres": "^4.1.1",
"passport": "^0.4.0", "passport": "^0.4.0",
@@ -76,21 +74,21 @@
"passport-google-oauth20": "1.0.0", "passport-google-oauth20": "1.0.0",
"paypal-ipn": "3.0.0", "paypal-ipn": "3.0.0",
"paypal-rest-sdk": "^1.8.1", "paypal-rest-sdk": "^1.8.1",
"popper.js": "^1.13.0", "popper.js": "^1.14.1",
"postcss-easy-import": "^3.0.0", "postcss-easy-import": "^3.0.0",
"ps-tree": "^1.0.0", "ps-tree": "^1.0.0",
"pug": "^2.0.0-rc.4", "pug": "^2.0.1",
"push-notify": "git://github.com/habitrpg/push-notify.git#6bc2b5fdb1bdc9649b9ec1964d79ca50187fc8a9", "push-notify": "git://github.com/habitrpg/push-notify.git#6bc2b5fdb1bdc9649b9ec1964d79ca50187fc8a9",
"pusher": "^1.3.0", "pusher": "^1.3.0",
"rimraf": "^2.4.3", "rimraf": "^2.4.3",
"sass-loader": "^6.0.2", "sass-loader": "^6.0.7",
"shelljs": "^0.8.1", "shelljs": "^0.8.1",
"stackimpact": "^1.2.1", "stackimpact": "^1.2.1",
"stripe": "^5.5.0", "stripe": "^5.5.0",
"superagent": "^3.4.3", "superagent": "^3.4.3",
"svg-inline-loader": "^0.8.0", "svg-inline-loader": "^0.8.0",
"svg-url-loader": "^2.0.2", "svg-url-loader": "^2.3.2",
"svgo": "^1.0.4", "svgo": "^1.0.5",
"svgo-loader": "^2.1.0", "svgo-loader": "^2.1.0",
"universal-analytics": "^0.4.16", "universal-analytics": "^0.4.16",
"url-loader": "^0.6.2", "url-loader": "^0.6.2",
@@ -98,24 +96,24 @@
"uuid": "^3.0.1", "uuid": "^3.0.1",
"validator": "^9.4.1", "validator": "^9.4.1",
"vinyl-buffer": "^1.0.1", "vinyl-buffer": "^1.0.1",
"vue": "^2.5.2", "vue": "^2.5.16",
"vue-loader": "^14.1.1", "vue-loader": "^14.2.1",
"vue-mugen-scroll": "^0.2.1", "vue-mugen-scroll": "^0.2.1",
"vue-router": "^3.0.0", "vue-router": "^3.0.0",
"vue-style-loader": "^4.0.2", "vue-style-loader": "^4.0.2",
"vue-template-compiler": "^2.5.2", "vue-template-compiler": "^2.5.16",
"vuedraggable": "^2.15.0", "vuedraggable": "^2.15.0",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec", "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec",
"webpack": "^3.11.0", "webpack": "^3.11.0",
"webpack-merge": "^4.0.0", "webpack-merge": "^4.0.0",
"winston": "^2.1.0", "winston": "^2.4.1",
"winston-loggly-bulk": "^2.0.2", "winston-loggly-bulk": "^2.0.2",
"xml2js": "^0.4.4" "xml2js": "^0.4.4"
}, },
"private": true, "private": true,
"engines": { "engines": {
"node": "^6.9.1", "node": "^8.9.4",
"npm": "^5.0.0" "npm": "^5.6.0"
}, },
"scripts": { "scripts": {
"lint": "eslint --ext .js,.vue .", "lint": "eslint --ext .js,.vue .",
@@ -142,20 +140,21 @@
"apidoc": "gulp apidoc" "apidoc": "gulp apidoc"
}, },
"devDependencies": { "devDependencies": {
"babel-plugin-istanbul": "^4.0.0", "babel-plugin-syntax-object-rest-spread": "^6.13.0",
"babel-plugin-istanbul": "^4.1.6",
"chai": "^4.1.2", "chai": "^4.1.2",
"chai-as-promised": "^7.1.1", "chai-as-promised": "^7.1.1",
"chalk": "^2.3.1", "chalk": "^2.3.2",
"chromedriver": "^2.27.2", "chromedriver": "^2.36.0",
"connect-history-api-fallback": "^1.1.0", "connect-history-api-fallback": "^1.1.0",
"coveralls": "^3.0.0", "coveralls": "^3.0.0",
"cross-spawn": "^6.0.4", "cross-spawn": "^6.0.5",
"eslint": "^4.18.1", "eslint": "^4.18.2",
"eslint-config-habitrpg": "^4.0.0", "eslint-config-habitrpg": "^4.0.0",
"eslint-friendly-formatter": "^3.0.0", "eslint-friendly-formatter": "^3.0.0",
"eslint-loader": "^1.3.0", "eslint-loader": "^1.3.0",
"eslint-plugin-html": "^4.0.2", "eslint-plugin-html": "^4.0.2",
"eslint-plugin-mocha": "^4.7.0", "eslint-plugin-mocha": "^4.12.1",
"eventsource-polyfill": "^0.9.6", "eventsource-polyfill": "^0.9.6",
"expect.js": "^0.3.1", "expect.js": "^0.3.1",
"http-proxy-middleware": "^0.17.0", "http-proxy-middleware": "^0.17.0",
@@ -171,19 +170,22 @@
"karma-sinon-stub-promise": "^1.0.0", "karma-sinon-stub-promise": "^1.0.0",
"karma-sourcemap-loader": "^0.3.7", "karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.32", "karma-spec-reporter": "0.0.32",
"karma-webpack": "^2.0.2", "karma-webpack": "^2.0.13",
"lcov-result-merger": "^2.0.0", "lcov-result-merger": "^2.0.0",
"mocha": "^5.0.1", "mocha": "^5.0.4",
"monk": "^6.0.5", "monk": "^6.0.5",
"nightwatch": "^0.9.12", "nightwatch": "^0.9.20",
"puppeteer": "^1.1.0", "puppeteer": "^1.1.1",
"require-again": "^2.0.0", "require-again": "^2.0.0",
"selenium-server": "^3.9.1", "selenium-server": "^3.11.0",
"sinon": "^4.3.0", "sinon": "^4.4.5",
"sinon-chai": "^2.8.0", "sinon-chai": "^2.8.0",
"sinon-stub-promise": "^4.0.0", "sinon-stub-promise": "^4.0.0",
"webpack-bundle-analyzer": "^2.2.1", "webpack-bundle-analyzer": "^2.11.1",
"webpack-dev-middleware": "^2.0.5", "webpack-dev-middleware": "^2.0.5",
"webpack-hot-middleware": "^2.6.1" "webpack-hot-middleware": "^2.21.2"
},
"optionalDependencies": {
"node-rdkafka": "^2.3.0"
} }
} }

View File

@@ -1,5 +1,4 @@
require('babel-register'); require('babel-register');
require('babel-polyfill');
// This file is used for creating paypal billing plans. PayPal doesn't have a web interface for setting up recurring // This file is used for creating paypal billing plans. PayPal doesn't have a web interface for setting up recurring
// payment plan definitions, instead you have to create it via their REST SDK and keep it updated the same way. So this // payment plan definitions, instead you have to create it via their REST SDK and keep it updated the same way. So this

View File

@@ -2,9 +2,9 @@ import {
generateUser, generateUser,
} from '../../../../helpers/api-v3-integration.helper'; } from '../../../../helpers/api-v3-integration.helper';
import xml2js from 'xml2js'; import xml2js from 'xml2js';
import Bluebird from 'bluebird'; import util from 'util';
let parseStringAsync = Bluebird.promisify(xml2js.parseString, {context: xml2js}); let parseStringAsync = util.promisify(xml2js.parseString).bind(xml2js);
describe('GET /export/userdata.xml', () => { describe('GET /export/userdata.xml', () => {
// TODO disabled because it randomly causes the build to fail // TODO disabled because it randomly causes the build to fail

View File

@@ -2,8 +2,8 @@ import {
createAndPopulateGroup, createAndPopulateGroup,
translate as t, translate as t,
generateUser, generateUser,
sleep,
} from '../../../../helpers/api-v3-integration.helper'; } from '../../../../helpers/api-v3-integration.helper';
import Bluebird from 'bluebird';
describe('POST /groups/:groupId/quests/accept', () => { describe('POST /groups/:groupId/quests/accept', () => {
const PET_QUEST = 'whale'; const PET_QUEST = 'whale';
@@ -140,7 +140,7 @@ describe('POST /groups/:groupId/quests/accept', () => {
// quest will start after everyone has accepted // quest will start after everyone has accepted
await partyMembers[1].post(`/groups/${questingGroup._id}/quests/accept`); await partyMembers[1].post(`/groups/${questingGroup._id}/quests/accept`);
await Bluebird.delay(500); await sleep(0.5);
await rejectingMember.sync(); await rejectingMember.sync();

View File

@@ -2,8 +2,8 @@ import {
createAndPopulateGroup, createAndPopulateGroup,
translate as t, translate as t,
generateUser, generateUser,
sleep,
} from '../../../../helpers/api-v3-integration.helper'; } from '../../../../helpers/api-v3-integration.helper';
import Bluebird from 'bluebird';
describe('POST /groups/:groupId/quests/force-start', () => { describe('POST /groups/:groupId/quests/force-start', () => {
const PET_QUEST = 'whale'; const PET_QUEST = 'whale';
@@ -135,7 +135,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
await leader.post(`/groups/${questingGroup._id}/quests/force-start`); await leader.post(`/groups/${questingGroup._id}/quests/force-start`);
await Bluebird.delay(500); await sleep(0.5);
await Promise.all([ await Promise.all([
partyMemberThatRejects.sync(), partyMemberThatRejects.sync(),
@@ -161,7 +161,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
await leader.post(`/groups/${questingGroup._id}/quests/force-start`); await leader.post(`/groups/${questingGroup._id}/quests/force-start`);
await Bluebird.delay(500); await sleep(0.5);
await questingGroup.sync(); await questingGroup.sync();
@@ -184,7 +184,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
await leader.post(`/groups/${questingGroup._id}/quests/force-start`); await leader.post(`/groups/${questingGroup._id}/quests/force-start`);
await Bluebird.delay(500); await sleep(0.5);
await questingGroup.sync(); await questingGroup.sync();
@@ -201,7 +201,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
await leader.post(`/groups/${questingGroup._id}/quests/force-start`); await leader.post(`/groups/${questingGroup._id}/quests/force-start`);
await Bluebird.delay(500); await sleep(0.5);
await questingGroup.sync(); await questingGroup.sync();
@@ -222,7 +222,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
await leader.post(`/groups/${questingGroup._id}/quests/force-start`); await leader.post(`/groups/${questingGroup._id}/quests/force-start`);
await Bluebird.delay(500); await sleep(0.5);
await questingGroup.sync(); await questingGroup.sync();

View File

@@ -2,9 +2,9 @@ import {
createAndPopulateGroup, createAndPopulateGroup,
translate as t, translate as t,
generateUser, generateUser,
sleep,
} from '../../../../helpers/api-v3-integration.helper'; } from '../../../../helpers/api-v3-integration.helper';
import { v4 as generateUUID } from 'uuid'; import { v4 as generateUUID } from 'uuid';
import Bluebird from 'bluebird';
describe('POST /groups/:groupId/quests/reject', () => { describe('POST /groups/:groupId/quests/reject', () => {
let questingGroup; let questingGroup;
@@ -168,7 +168,7 @@ describe('POST /groups/:groupId/quests/reject', () => {
// quest will start after everyone has accepted or rejected // quest will start after everyone has accepted or rejected
await rejectingMember.post(`/groups/${questingGroup._id}/quests/reject`); await rejectingMember.post(`/groups/${questingGroup._id}/quests/reject`);
await Bluebird.delay(500); await sleep(0.5);
await questingGroup.sync(); await questingGroup.sync();

View File

@@ -2,7 +2,6 @@ import {
generateUser, generateUser,
translate as t, translate as t,
} from '../../../../helpers/api-integration/v3'; } from '../../../../helpers/api-integration/v3';
import Bluebird from 'bluebird';
describe('GET /shops/market', () => { describe('GET /shops/market', () => {
let user; let user;
@@ -42,13 +41,13 @@ describe('GET /shops/market', () => {
return array; return array;
}, []); }, []);
let results = await Bluebird.each(items, (item) => { let results = await Promise.all(items.map((item) => {
let { purchaseType, key } = item; let { purchaseType, key } = item;
return user.post(`/user/purchase/${purchaseType}/${key}`); return user.post(`/user/purchase/${purchaseType}/${key}`);
}); }));
expect(results.length).to.be.greaterThan(0); expect(results.length).to.be.greaterThan(0);
results.forEach((item) => { items.forEach((item) => {
expect(item).to.include.keys('key', 'text', 'notes', 'class', 'value', 'currency'); expect(item).to.include.keys('key', 'text', 'notes', 'class', 'value', 'currency');
}); });
}); });

View File

@@ -2,8 +2,8 @@ import {
generateUser, generateUser,
generateGroup, generateGroup,
generateChallenge, generateChallenge,
sleep,
} from '../../../../../helpers/api-integration/v3'; } from '../../../../../helpers/api-integration/v3';
import Bluebird from 'bluebird';
import { find } from 'lodash'; import { find } from 'lodash';
describe('POST /tasks/:id/score/:direction', () => { describe('POST /tasks/:id/score/:direction', () => {
@@ -27,7 +27,7 @@ describe('POST /tasks/:id/score/:direction', () => {
text: 'test habit', text: 'test habit',
type: 'habit', type: 'habit',
}); });
await Bluebird.delay(1000); await sleep(1);
let updatedUser = await user.get('/user'); let updatedUser = await user.get('/user');
usersChallengeTaskId = updatedUser.tasksOrder.habits[0]; usersChallengeTaskId = updatedUser.tasksOrder.habits[0];
}); });
@@ -65,7 +65,7 @@ describe('POST /tasks/:id/score/:direction', () => {
text: 'test daily', text: 'test daily',
type: 'daily', type: 'daily',
}); });
await Bluebird.delay(1000); await sleep(1);
let updatedUser = await user.get('/user'); let updatedUser = await user.get('/user');
usersChallengeTaskId = updatedUser.tasksOrder.dailys[0]; usersChallengeTaskId = updatedUser.tasksOrder.dailys[0];
}); });
@@ -109,7 +109,7 @@ describe('POST /tasks/:id/score/:direction', () => {
text: 'test todo', text: 'test todo',
type: 'todo', type: 'todo',
}); });
await Bluebird.delay(1000); await sleep(1);
let updatedUser = await user.get('/user'); let updatedUser = await user.get('/user');
usersChallengeTaskId = updatedUser.tasksOrder.todos[0]; usersChallengeTaskId = updatedUser.tasksOrder.todos[0];
}); });
@@ -134,7 +134,7 @@ describe('POST /tasks/:id/score/:direction', () => {
text: 'test reward', text: 'test reward',
type: 'reward', type: 'reward',
}); });
await Bluebird.delay(1000); await sleep(1);
let updatedUser = await user.get('/user'); let updatedUser = await user.get('/user');
usersChallengeTaskId = updatedUser.tasksOrder.todos[0]; usersChallengeTaskId = updatedUser.tasksOrder.todos[0];
}); });

View File

@@ -11,7 +11,6 @@ import {
each, each,
map, map,
} from 'lodash'; } from 'lodash';
import Bluebird from 'bluebird';
import { import {
sha1MakeSalt, sha1MakeSalt,
sha1Encrypt as sha1EncryptPassword, sha1Encrypt as sha1EncryptPassword,
@@ -104,7 +103,7 @@ describe('DELETE /user', () => {
password, password,
}); });
await Bluebird.all(map(ids, id => { await Promise.all(map(ids, id => {
return expect(checkExistence('tasks', id)).to.eventually.eql(false); return expect(checkExistence('tasks', id)).to.eventually.eql(false);
})); }));
}); });

View File

@@ -1,7 +1,6 @@
/* eslint-disable global-require */ /* eslint-disable global-require */
import moment from 'moment'; import moment from 'moment';
import nconf from 'nconf'; import nconf from 'nconf';
import Bluebird from 'bluebird';
import requireAgain from 'require-again'; import requireAgain from 'require-again';
import { recoverCron, cron } from '../../../../../website/server/libs/cron'; import { recoverCron, cron } from '../../../../../website/server/libs/cron';
import { model as User } from '../../../../../website/server/models/user'; import { model as User } from '../../../../../website/server/models/user';
@@ -1363,7 +1362,7 @@ describe('recoverCron', () => {
}); });
it('throws an error if user cannot be found', async () => { it('throws an error if user cannot be found', async () => {
execStub.returns(Bluebird.resolve(null)); execStub.returns(Promise.resolve(null));
try { try {
await recoverCron(status, locals); await recoverCron(status, locals);
@@ -1374,8 +1373,8 @@ describe('recoverCron', () => {
}); });
it('increases status.times count and reruns up to 4 times', async () => { it('increases status.times count and reruns up to 4 times', async () => {
execStub.returns(Bluebird.resolve({_cronSignature: 'RUNNING_CRON'})); execStub.returns(Promise.resolve({_cronSignature: 'RUNNING_CRON'}));
execStub.onCall(4).returns(Bluebird.resolve({_cronSignature: 'NOT_RUNNING'})); execStub.onCall(4).returns(Promise.resolve({_cronSignature: 'NOT_RUNNING'}));
await recoverCron(status, locals); await recoverCron(status, locals);
@@ -1384,7 +1383,7 @@ describe('recoverCron', () => {
}); });
it('throws an error if recoverCron runs 5 times', async () => { it('throws an error if recoverCron runs 5 times', async () => {
execStub.returns(Bluebird.resolve({_cronSignature: 'RUNNING_CRON'})); execStub.returns(Promise.resolve({_cronSignature: 'RUNNING_CRON'}));
try { try {
await recoverCron(status, locals); await recoverCron(status, locals);

View File

@@ -47,7 +47,7 @@ describe('slack', () => {
expect(IncomingWebhook.prototype.send).to.be.calledOnce; expect(IncomingWebhook.prototype.send).to.be.calledOnce;
expect(IncomingWebhook.prototype.send).to.be.calledWith({ expect(IncomingWebhook.prototype.send).to.be.calledWith({
text: 'flagger (flagger-id) flagged a message (language: flagger-lang)', text: 'flagger (flagger-id; language: flagger-lang) flagged a message',
attachments: [{ attachments: [{
fallback: 'Flag Message', fallback: 'Flag Message',
color: 'danger', color: 'danger',

View File

@@ -8,7 +8,6 @@ import {
attachTranslateFunction, attachTranslateFunction,
} from '../../../../../website/server/middlewares/language'; } from '../../../../../website/server/middlewares/language';
import common from '../../../../../website/common'; import common from '../../../../../website/common';
import Bluebird from 'bluebird';
import { model as User } from '../../../../../website/server/models/user'; import { model as User } from '../../../../../website/server/models/user';
const i18n = common.i18n; const i18n = common.i18n;
@@ -162,7 +161,7 @@ describe('language middleware', () => {
return this; return this;
}, },
exec () { exec () {
return Bluebird.resolve({ return Promise.resolve({
preferences: { preferences: {
language: 'it', language: 'it',
}, },

View File

@@ -1,4 +1,3 @@
import Bluebird from 'bluebird';
import moment from 'moment'; import moment from 'moment';
import { model as User } from '../../../../../website/server/models/user'; import { model as User } from '../../../../../website/server/models/user';
import { model as Group } from '../../../../../website/server/models/group'; import { model as Group } from '../../../../../website/server/models/group';
@@ -123,7 +122,7 @@ describe('User Model', () => {
it('adds notifications without data for all given users via static method', async () => { it('adds notifications without data for all given users via static method', async () => {
let user = new User(); let user = new User();
let otherUser = new User(); let otherUser = new User();
await Bluebird.all([user.save(), otherUser.save()]); await Promise.all([user.save(), otherUser.save()]);
await User.pushNotification({_id: {$in: [user._id, otherUser._id]}}, 'CRON'); await User.pushNotification({_id: {$in: [user._id, otherUser._id]}}, 'CRON');
@@ -149,7 +148,7 @@ describe('User Model', () => {
it('adds notifications with data and seen status for all given users via static method', async () => { it('adds notifications with data and seen status for all given users via static method', async () => {
let user = new User(); let user = new User();
let otherUser = new User(); let otherUser = new User();
await Bluebird.all([user.save(), otherUser.save()]); await Promise.all([user.save(), otherUser.save()]);
await User.pushNotification({_id: {$in: [user._id, otherUser._id]}}, 'CRON', {field: 1}, true); await User.pushNotification({_id: {$in: [user._id, otherUser._id]}}, 'CRON', {field: 1}, true);

View File

@@ -1,7 +1,6 @@
import { import {
times, times,
} from 'lodash'; } from 'lodash';
import Bluebird from 'bluebird';
import { v4 as generateUUID } from 'uuid'; import { v4 as generateUUID } from 'uuid';
import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes'; import { ApiUser, ApiGroup, ApiChallenge } from '../api-classes';
import { requester } from '../requester'; import { requester } from '../requester';
@@ -106,7 +105,7 @@ export async function createAndPopulateGroup (settings = {}) {
guild: { guilds: [group._id] }, guild: { guilds: [group._id] },
}; };
let members = await Bluebird.all( let members = await Promise.all(
times(numberOfMembers, () => { times(numberOfMembers, () => {
return generateUser(groupMembershipTypes[group.type]); return generateUser(groupMembershipTypes[group.type]);
}) })
@@ -114,7 +113,7 @@ export async function createAndPopulateGroup (settings = {}) {
await group.update({ memberCount: numberOfMembers + 1}); await group.update({ memberCount: numberOfMembers + 1});
let invitees = await Bluebird.all( let invitees = await Promise.all(
times(numberOfInvites, () => { times(numberOfInvites, () => {
return generateUser(); return generateUser();
}) })
@@ -126,9 +125,9 @@ export async function createAndPopulateGroup (settings = {}) {
}); });
}); });
await Bluebird.all(invitationPromises); await Promise.all(invitationPromises);
await Bluebird.map(invitees, (invitee) => invitee.sync()); await Promise.all(invitees.map((invitee) => invitee.sync()));
return { return {
groupLeader, groupLeader,

View File

@@ -2,8 +2,6 @@
/* eslint-disable global-require */ /* eslint-disable global-require */
/* eslint-disable no-process-env */ /* eslint-disable no-process-env */
import Bluebird from 'bluebird';
//------------------------------ //------------------------------
// Global modules // Global modules
//------------------------------ //------------------------------
@@ -16,7 +14,6 @@ global.sinon = require('sinon');
let sinonStubPromise = require('sinon-stub-promise'); let sinonStubPromise = require('sinon-stub-promise');
sinonStubPromise(global.sinon); sinonStubPromise(global.sinon);
global.sandbox = sinon.sandbox.create(); global.sandbox = sinon.sandbox.create();
global.Promise = Bluebird;
import setupNconf from '../../website/server/libs/setupNconf'; import setupNconf from '../../website/server/libs/setupNconf';
setupNconf('./config.json.example'); setupNconf('./config.json.example');

View File

@@ -1,7 +1 @@
export async function sleep (seconds = 1) { export { default as sleep } from '../../website/server/libs/sleep';
let milliseconds = seconds * 1000;
return new Promise((resolve) => {
setTimeout(resolve, milliseconds);
});
}

View File

@@ -1,13 +1,11 @@
/* eslint-disable no-process-env */ /* eslint-disable no-process-env */
import nconf from 'nconf'; import nconf from 'nconf';
import mongoose from 'mongoose'; import mongoose from 'mongoose';
import Bluebird from 'bluebird';
import setupNconf from '../../website/server/libs/setupNconf'; import setupNconf from '../../website/server/libs/setupNconf';
if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose if (process.env.LOAD_SERVER === '0') { // when the server is in a different process we simply connect to mongoose
setupNconf('./config.json'); setupNconf('./config.json');
// Use Q promises instead of mpromise in mongoose // Use Q promises instead of mpromise in mongoose
mongoose.Promise = Bluebird;
mongoose.connect(nconf.get('TEST_DB_URI')); mongoose.connect(nconf.get('TEST_DB_URI'));
} else { // When running tests and the server in the same process } else { // When running tests and the server in the same process
setupNconf('./config.json.example'); setupNconf('./config.json.example');

View File

@@ -3,7 +3,6 @@
--timeout 8000 --timeout 8000
--check-leaks --check-leaks
--globals io --globals io
-r babel-polyfill
--require babel-register --require babel-register
--require ./test/helpers/globals.helper --require ./test/helpers/globals.helper
--exit --exit

View File

@@ -11,12 +11,12 @@ source /home/vagrant/.profile
echo Setting up node... echo Setting up node...
cd /vagrant cd /vagrant
nvm install nvm install 8
nvm use nvm use 8
nvm alias default current nvm alias default current
echo Update npm... echo Update npm...
npm install -g npm@4 npm install -g npm@5
echo Installing global modules... echo Installing global modules...
npm install -g gulp mocha node-pre-gyp npm install -g gulp mocha node-pre-gyp

View File

@@ -6,7 +6,7 @@
} }
.promo_cupid_potions { .promo_cupid_potions {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -142px -735px; background-position: -284px -735px;
width: 138px; width: 138px;
height: 441px; height: 441px;
} }
@@ -18,7 +18,7 @@
} }
.promo_hippogriff { .promo_hippogriff {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1172px -442px; background-position: -1172px -587px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
@@ -34,6 +34,12 @@
width: 372px; width: 372px;
height: 196px; height: 196px;
} }
.promo_rainbow_potions {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -142px -735px;
width: 141px;
height: 441px;
}
.promo_seasonalshop_broken { .promo_seasonalshop_broken {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -751px -171px; background-position: -751px -171px;
@@ -42,7 +48,7 @@
} }
.promo_take_this { .promo_take_this {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1172px -548px; background-position: -950px -171px;
width: 114px; width: 114px;
height: 87px; height: 87px;
} }
@@ -64,6 +70,12 @@
width: 150px; width: 150px;
height: 150px; height: 150px;
} }
.scene_sweeping {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -1172px -442px;
width: 138px;
height: 144px;
}
.scene_tavern { .scene_tavern {
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png'); background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px 0px; background-position: 0px 0px;

View File

@@ -1798,42 +1798,48 @@
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Red { .Mount_Body_BearCub-Rainbow {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -318px -985px; background-position: -318px -985px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-RoyalPurple { .Mount_Body_BearCub-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -212px -985px; background-position: -212px -985px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Shade { .Mount_Body_BearCub-RoyalPurple {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -106px -985px; background-position: -106px -985px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Shimmer { .Mount_Body_BearCub-Shade {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -985px; background-position: 0px -985px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Skeleton { .Mount_Body_BearCub-Shimmer {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -848px; background-position: -1081px -848px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Spooky { .Mount_Body_BearCub-Skeleton {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -742px; background-position: -1081px -742px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Spooky {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -636px;
width: 105px;
height: 105px;
}
.Mount_Body_BearCub-StarryNight { .Mount_Body_BearCub-StarryNight {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -299px; background-position: -440px -299px;
@@ -1842,139 +1848,139 @@
} }
.Mount_Body_BearCub-Thunderstorm { .Mount_Body_BearCub-Thunderstorm {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -530px; background-position: -1081px -424px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-White { .Mount_Body_BearCub-White {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -424px; background-position: -1081px -318px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_BearCub-Zombie { .Mount_Body_BearCub-Zombie {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -318px; background-position: -1081px -212px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Base { .Mount_Body_Beetle-Base {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -212px; background-position: -1081px -106px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-CottonCandyBlue { .Mount_Body_Beetle-CottonCandyBlue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -106px; background-position: -1081px 0px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-CottonCandyPink { .Mount_Body_Beetle-CottonCandyPink {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px 0px; background-position: -954px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Desert { .Mount_Body_Beetle-Desert {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -954px -879px; background-position: -848px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Golden { .Mount_Body_Beetle-Golden {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -848px -879px; background-position: -742px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Red { .Mount_Body_Beetle-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -742px -879px; background-position: -636px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Shade { .Mount_Body_Beetle-Shade {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -636px -879px; background-position: -530px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Skeleton { .Mount_Body_Beetle-Skeleton {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -530px -879px; background-position: -424px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-White { .Mount_Body_Beetle-White {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -424px -879px; background-position: -318px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Beetle-Zombie { .Mount_Body_Beetle-Zombie {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -318px -879px; background-position: -212px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Base { .Mount_Body_Bunny-Base {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -212px -879px; background-position: -106px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-CottonCandyBlue { .Mount_Body_Bunny-CottonCandyBlue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -106px -879px; background-position: 0px -879px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-CottonCandyPink { .Mount_Body_Bunny-CottonCandyPink {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -879px; background-position: -975px -742px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Desert { .Mount_Body_Bunny-Desert {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -742px; background-position: -975px -636px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Golden { .Mount_Body_Bunny-Golden {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -636px; background-position: -975px -530px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Red { .Mount_Body_Bunny-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -530px; background-position: -975px -424px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Shade { .Mount_Body_Bunny-Shade {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -424px; background-position: -975px -318px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Skeleton { .Mount_Body_Bunny-Skeleton {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -318px; background-position: -975px -212px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-White { .Mount_Body_Bunny-White {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -212px; background-position: -975px -106px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Bunny-Zombie { .Mount_Body_Bunny-Zombie {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px -106px; background-position: -975px 0px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
@@ -2040,118 +2046,124 @@
} }
.Mount_Body_Cactus-Aquatic { .Mount_Body_Cactus-Aquatic {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px -636px; background-position: -869px -530px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Base { .Mount_Body_Cactus-Base {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px -530px; background-position: -869px -424px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-CottonCandyBlue { .Mount_Body_Cactus-CottonCandyBlue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px -424px; background-position: -869px -318px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-CottonCandyPink { .Mount_Body_Cactus-CottonCandyPink {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px -318px; background-position: -869px -212px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Cupid { .Mount_Body_Cactus-Cupid {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px -212px; background-position: -869px -106px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Desert { .Mount_Body_Cactus-Desert {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px -106px; background-position: -869px 0px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Ember { .Mount_Body_Cactus-Ember {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -869px 0px; background-position: -742px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Fairy { .Mount_Body_Cactus-Fairy {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -742px -667px; background-position: -636px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Floral { .Mount_Body_Cactus-Floral {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -636px -667px; background-position: -530px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Ghost { .Mount_Body_Cactus-Ghost {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -530px -667px; background-position: -424px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Golden { .Mount_Body_Cactus-Golden {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -424px -667px; background-position: -318px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Holly { .Mount_Body_Cactus-Holly {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -318px -667px; background-position: -212px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Peppermint { .Mount_Body_Cactus-Peppermint {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -212px -667px;
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -106px -667px; background-position: -106px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-RoyalPurple { .Mount_Body_Cactus-Rainbow {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -667px; background-position: 0px -667px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Shade { .Mount_Body_Cactus-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px -530px; background-position: -763px -530px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Shimmer { .Mount_Body_Cactus-RoyalPurple {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px -424px; background-position: -763px -424px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Skeleton { .Mount_Body_Cactus-Shade {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px -318px; background-position: -763px -318px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Spooky { .Mount_Body_Cactus-Shimmer {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px -212px; background-position: -763px -212px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Skeleton {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px -106px;
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-Spooky {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px 0px;
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-StarryNight { .Mount_Body_Cactus-StarryNight {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -440px -178px; background-position: -440px -178px;
@@ -2160,127 +2172,115 @@
} }
.Mount_Body_Cactus-Thunderstorm { .Mount_Body_Cactus-Thunderstorm {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px 0px; background-position: -530px -561px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-White { .Mount_Body_Cactus-White {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -636px -561px; background-position: -424px -561px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cactus-Zombie { .Mount_Body_Cactus-Zombie {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -530px -561px; background-position: -318px -561px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Base { .Mount_Body_Cheetah-Base {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -424px -561px; background-position: -212px -561px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-CottonCandyBlue { .Mount_Body_Cheetah-CottonCandyBlue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -318px -561px; background-position: -106px -561px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-CottonCandyPink { .Mount_Body_Cheetah-CottonCandyPink {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -212px -561px; background-position: 0px -561px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Desert { .Mount_Body_Cheetah-Desert {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -106px -561px; background-position: -424px -1197px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Golden { .Mount_Body_Cheetah-Golden {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -561px; background-position: -1081px -530px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Red { .Mount_Body_Cheetah-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -424px -1197px; background-position: -848px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Shade { .Mount_Body_Cheetah-Shade {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -1081px -636px; background-position: -742px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Skeleton { .Mount_Body_Cheetah-Skeleton {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -975px 0px; background-position: -636px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-White { .Mount_Body_Cheetah-White {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -848px -773px; background-position: -530px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cheetah-Zombie { .Mount_Body_Cheetah-Zombie {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -742px -773px; background-position: -424px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cow-Base { .Mount_Body_Cow-Base {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -636px -773px; background-position: -318px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cow-CottonCandyBlue { .Mount_Body_Cow-CottonCandyBlue {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -530px -773px; background-position: -212px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cow-CottonCandyPink { .Mount_Body_Cow-CottonCandyPink {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -424px -773px; background-position: -106px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cow-Desert { .Mount_Body_Cow-Desert {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -318px -773px; background-position: 0px -773px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cow-Golden { .Mount_Body_Cow-Golden {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -212px -773px; background-position: -869px -636px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }
.Mount_Body_Cow-Red { .Mount_Body_Cow-Red {
background-image: url('~assets/images/sprites/spritesmith-main-11.png'); background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -106px -773px; background-position: -636px -561px;
width: 105px;
height: 105px;
}
.Mount_Body_Cow-Shade {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: 0px -773px;
width: 105px;
height: 105px;
}
.Mount_Body_Cow-Skeleton {
background-image: url('~assets/images/sprites/spritesmith-main-11.png');
background-position: -763px -106px;
width: 105px; width: 105px;
height: 105px; height: 105px;
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 155 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -1,18 +1,65 @@
<template lang="pug"> <template lang="pug">
b-modal#report-flag(:title='$t("abuseFlagModalHeading")', size='lg', :hide-footer='true') b-modal#report-flag(:title='$t("abuseFlagModalHeading")', size='md', :hide-footer='true')
.modal-header
h4(v-html="$t('abuseFlagModalHeading', reportData)")
.modal-body .modal-body
strong(v-html="$t('abuseFlagModalHeading', reportData)")
blockquote blockquote
div(v-markdown='abuseObject.text') div(v-markdown='abuseObject.text')
p(v-html="$t('abuseFlagModalBody', abuseFlagModalBody)") div
.modal-footer strong {{$t('whyReportingPost')}}
span.optional {{$t('optional')}}
textarea.form-control(v-model='reportComment', :placeholder='$t("whyReportingPostPlaceholder")')
small(v-html="$t('abuseFlagModalBody', abuseFlagModalBody)")
.footer.text-center
button.pull-left.btn.btn-danger(@click='clearFlagCount()', v-if='user.contributor.admin && abuseObject.flagCount > 0') button.pull-left.btn.btn-danger(@click='clearFlagCount()', v-if='user.contributor.admin && abuseObject.flagCount > 0')
| Reset Flag Count | Reset Flag Count
button.btn.btn-primary(@click='close()') {{ $t('cancel') }} a.cancel-link(@click.prevent='close()') {{ $t('cancel') }}
button.btn.btn-danger(@click='reportAbuse()') {{ $t('abuseFlagModalButton') }} button.btn.btn-danger(@click='reportAbuse()') {{ $t('report') }}
</template> </template>
<style>
#report-flag h5 {
color: #f23035;
}
</style>
<style lang="scss" scoped>
@import '~client/assets/scss/colors.scss';
.modal-body {
margin-top: 1em;
}
blockquote {
border-radius: 2px;
background-color: #f4f4f4;
padding: 1em;
margin-top: 1em;
}
textarea {
margin-top: 1em;
margin-bottom: 1em;
border-radius: 2px;
border: solid 1px $gray-400;
min-height: 106px;
}
.footer {
padding: 1em;
padding-bottom: 2em;
}
a.cancel-link {
color: $blue-10;
margin-right: .5em;
}
.optional {
color: $gray-200;
float: right;
}
</style>
<script> <script>
import { mapState } from 'client/libs/store'; import { mapState } from 'client/libs/store';
import notifications from 'client/mixins/notifications'; import notifications from 'client/mixins/notifications';
@@ -45,6 +92,7 @@ export default {
abuseFlagModalBody, abuseFlagModalBody,
abuseObject: '', abuseObject: '',
groupId: '', groupId: '',
reportComment: '',
}; };
}, },
created () { created () {
@@ -64,9 +112,11 @@ export default {
}, },
async reportAbuse () { async reportAbuse () {
this.notify('Thank you for reporting this violation. The moderators have been notified.'); this.notify('Thank you for reporting this violation. The moderators have been notified.');
await this.$store.dispatch('chat:flag', { await this.$store.dispatch('chat:flag', {
groupId: this.groupId, groupId: this.groupId,
chatId: this.abuseObject.id, chatId: this.abuseObject.id,
comment: this.reportComment,
}); });
this.close(); this.close();

View File

@@ -904,7 +904,7 @@
this.$store.dispatch('common:hatch', {egg: pet.eggKey, hatchingPotion: pet.potionKey}); this.$store.dispatch('common:hatch', {egg: pet.eggKey, hatchingPotion: pet.potionKey});
this.closeHatchPetDialog(); this.closeHatchPetDialog();
this.$root.$emit('hatchedPet::open', pet); // this.$root.$emit('hatchedPet::open', pet);
}, },
onDragStart (ev, food) { onDragStart (ev, food) {

View File

@@ -79,11 +79,11 @@ export default {
} }
if (filters.guildSize && filters.guildSize.indexOf('silver_tier') !== -1) { if (filters.guildSize && filters.guildSize.indexOf('silver_tier') !== -1) {
correctSize = group.memberCount > 100 && group.memberCount < 999; correctSize = group.memberCount > 100 && group.memberCount < 1000;
} }
if (filters.guildSize && filters.guildSize.indexOf('bronze_tier') !== -1) { if (filters.guildSize && filters.guildSize.indexOf('bronze_tier') !== -1) {
correctSize = group.memberCount < 99; correctSize = group.memberCount < 100;
} }
return passedSearch && hasCategories && isMember && isLeader && correctSize; return passedSearch && hasCategories && isMember && isLeader && correctSize;

View File

@@ -69,8 +69,10 @@ export async function like (store, payload) {
} }
export async function flag (store, payload) { export async function flag (store, payload) {
let url = `/api/v3/groups/${payload.groupId}/chat/${payload.chatId}/flag`; const url = `/api/v3/groups/${payload.groupId}/chat/${payload.chatId}/flag`;
let response = await axios.post(url); const response = await axios.post(url, {
comment: payload.comment,
});
return response.data.data; return response.data.data;
} }

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "Блещукащ цвят", "hatchingPotionShimmer": "Блещукащ цвят",
"hatchingPotionFairy": "Фейски цвят", "hatchingPotionFairy": "Фейски цвят",
"hatchingPotionStarryNight": "Звездна нощ", "hatchingPotionStarryNight": "Звездна нощ",
"hatchingPotionRainbow": "Дъга",
"hatchingPotionNotes": "Излейте това върху яйце и от него ще се излюпи любимец с(ъс) <%= potText(locale) %>.", "hatchingPotionNotes": "Излейте това върху яйце и от него ще се излюпи любимец с(ъс) <%= potText(locale) %>.",
"premiumPotionAddlNotes": "Не може да се използва върху яйца за любимци от мисии.", "premiumPotionAddlNotes": "Не може да се използва върху яйца за любимци от мисии.",
"foodMeat": "Месо", "foodMeat": "Месо",

View File

@@ -167,8 +167,8 @@
"achievementBurnoutText": "Помогнал(а) за победата над Умората и възстановяването на Духовете на изтощението по време на Есенния фестивал — 2015 г.", "achievementBurnoutText": "Помогнал(а) за победата над Умората и възстановяването на Духовете на изтощението по време на Есенния фестивал — 2015 г.",
"achievementBewilder": "Спасител на Мъглоград", "achievementBewilder": "Спасител на Мъглоград",
"achievementBewilderText": "Помогнал(а) за победата над Озадачителя по време на Буйното пролетно събитие — 2016 г.", "achievementBewilderText": "Помогнал(а) за победата над Озадачителя по време на Буйното пролетно събитие — 2016 г.",
"achievementDysheartener": "Savior of the Shattered", "achievementDysheartener": "Спасител на разбитите",
"achievementDysheartenerText": "Helped defeat the Dysheartener during the 2018 Valentine's Event!", "achievementDysheartenerText": "Помогнал(а) за победата над Обезсърчителя по време на събитието за св. Валентин — 2018 г.",
"checkOutProgress": "Вижте напредъка ми в Хабитика!", "checkOutProgress": "Вижте напредъка ми в Хабитика!",
"cards": "Картички", "cards": "Картички",
"sentCardToUser": "Изпратихте картичка на <%= profileName %>", "sentCardToUser": "Изпратихте картичка на <%= profileName %>",

View File

@@ -143,11 +143,14 @@
"badAmountOfGemsToSend": "Стойността трябва да бъде между 1 и текущия Ви брой диаманти.", "badAmountOfGemsToSend": "Стойността трябва да бъде между 1 и текущия Ви брой диаманти.",
"report": "Докладване", "report": "Докладване",
"abuseFlag": "Докладване на нарушение на Обществените правила", "abuseFlag": "Докладване на нарушение на Обществените правила",
"abuseFlagModalHeading": "Докладване на <%= name %> за нарушение?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Наистина ли искате да докладвате тази публикация? Трябва да докладвате САМО публикации, които нарушават <%= firstLinkStart %>Обществените правила<%= linkEnd %> и/или <%= secondLinkStart %>Условията на услугата<%= linkEnd %>. Неуместното докладване на публикация е нарушение на Обществените правила, и може да получите наказание. Правилните причина за докладване на публикация включват (но не се изчерпват):<br><br><ul style='margin-left: 10px;'><li>ругаене, религиозни клетви;</li><li>фанатизъм, обиди;</li><li>теми за възрастни;</li><li>насилие, дори и на шега;</li><li>нежелани или безсмислени съобщения.</li></ul>", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Докладване за нарушение", "abuseFlagModalButton": "Докладване за нарушение",
"abuseReported": "Благодарим Ви, че докладвахте за това нарушение. Модераторите бяха уведомени.", "abuseReported": "Благодарим Ви, че докладвахте за това нарушение. Модераторите бяха уведомени.",
"abuseAlreadyReported": "Вече сте докладвали това съобщение.", "abuseAlreadyReported": "Вече сте докладвали това съобщение.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Моля, напишете съобщение.", "needsText": "Моля, напишете съобщение.",
"needsTextPlaceholder": "Въведете съобщението си тук.", "needsTextPlaceholder": "Въведете съобщението си тук.",
"copyMessageAsToDo": "Копиране на съобщението като задача", "copyMessageAsToDo": "Копиране на съобщението като задача",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Имелен лечител (лечител)", "winter2018MistletoeSet": "Имелен лечител (лечител)",
"winter2018ReindeerSet": "Еленов мошеник (мошеник)", "winter2018ReindeerSet": "Еленов мошеник (мошеник)",
"eventAvailability": "Налично за купуване до <%= date(locale) %>.", "eventAvailability": "Налично за купуване до <%= date(locale) %>.",
"dateEndMarch": "31 март",
"dateEndApril": "19 април", "dateEndApril": "19 април",
"dateEndMay": "17 май", "dateEndMay": "17 май",
"dateEndJune": "14 юни", "dateEndJune": "14 юни",

View File

@@ -138,5 +138,8 @@
"dragThisPotion": "Завлачете <%= potionName %> до яйце и ще се излюпи нов любимец!", "dragThisPotion": "Завлачете <%= potionName %> до яйце и ще се излюпи нов любимец!",
"clickOnEggToHatch": "Щракнете върху яйце, за да използвате своята излюпваща отвара с(ъс) <%= potionName %> и ще се излюпи нов любимец!", "clickOnEggToHatch": "Щракнете върху яйце, за да използвате своята излюпваща отвара с(ъс) <%= potionName %> и ще се излюпи нов любимец!",
"hatchDialogText": "Изсипете своята излюпваща отвара с(ъс) <%= potionName %> върху своето яйце на <%= eggName %> и от него ще се излюпи <%= petName %>.", "hatchDialogText": "Изсипете своята излюпваща отвара с(ъс) <%= potionName %> върху своето яйце на <%= eggName %> и от него ще се излюпи <%= petName %>.",
"clickOnPotionToHatch": "Щракнете върху излюпваща отвара, която да използвате върху върху своето яйце на <%= eggName %> и от него ще се излюпи нов любимец!" "clickOnPotionToHatch": "Щракнете върху излюпваща отвара, която да използвате върху върху своето яйце на <%= eggName %> и от него ще се излюпи нов любимец!",
"notEnoughPets": "You have not collected enough pets",
"notEnoughMounts": "You have not collected enough mounts",
"notEnoughPetsMounts": "You have not collected enough pets and mounts"
} }

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "třpytivý", "hatchingPotionShimmer": "třpytivý",
"hatchingPotionFairy": "pohádkový", "hatchingPotionFairy": "pohádkový",
"hatchingPotionStarryNight": "Hvězdná Noc", "hatchingPotionStarryNight": "Hvězdná Noc",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Nalij ho na vejce a vylíhne se ti <%= potText(locale) %> mazlíček.", "hatchingPotionNotes": "Nalij ho na vejce a vylíhne se ti <%= potText(locale) %> mazlíček.",
"premiumPotionAddlNotes": "Nelze použít na vejce mazlíčků z výprav.", "premiumPotionAddlNotes": "Nelze použít na vejce mazlíčků z výprav.",
"foodMeat": "Maso", "foodMeat": "Maso",

View File

@@ -143,11 +143,14 @@
"badAmountOfGemsToSend": "Částka musí být mezi 1 a vaším současným počtem drahokamů.", "badAmountOfGemsToSend": "Částka musí být mezi 1 a vaším současným počtem drahokamů.",
"report": "Report", "report": "Report",
"abuseFlag": "Nahlaš porušení Zásad komunity", "abuseFlag": "Nahlaš porušení Zásad komunity",
"abuseFlagModalHeading": "Nahlásit <%= name %> za porušení?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:<br><br><ul style='margin-left: 10px;'><li>swearing, religious oaths</li><li>bigotry, slurs</li><li>adult topics</li><li>violence, including as a joke</li><li>spam, nonsensical messages</li></ul>", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Nahlásit porušení pravidel", "abuseFlagModalButton": "Nahlásit porušení pravidel",
"abuseReported": "Děkujeme za nahlášení tohoto příspěvku. Moderátoři byli upozorněni.", "abuseReported": "Děkujeme za nahlášení tohoto příspěvku. Moderátoři byli upozorněni.",
"abuseAlreadyReported": "Již jsi tento příspěvek nahlásil.", "abuseAlreadyReported": "Již jsi tento příspěvek nahlásil.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Prosím, napiš zprávu.", "needsText": "Prosím, napiš zprávu.",
"needsTextPlaceholder": "Napiš svou zprávu sem.", "needsTextPlaceholder": "Napiš svou zprávu sem.",
"copyMessageAsToDo": "Zkopírovat zprávu jako Úkol", "copyMessageAsToDo": "Zkopírovat zprávu jako Úkol",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Léčitel z Jmelí (Léčitel)", "winter2018MistletoeSet": "Léčitel z Jmelí (Léčitel)",
"winter2018ReindeerSet": "Sobí Zloděj (Zloděj)", "winter2018ReindeerSet": "Sobí Zloděj (Zloděj)",
"eventAvailability": "Dostupný k zakoupení do <%= date(locale) %>.", "eventAvailability": "Dostupný k zakoupení do <%= date(locale) %>.",
"dateEndMarch": "March 31",
"dateEndApril": "Duben 19", "dateEndApril": "Duben 19",
"dateEndMay": "Květen 17", "dateEndMay": "Květen 17",
"dateEndJune": "Červen 14", "dateEndJune": "Červen 14",

View File

@@ -138,5 +138,8 @@
"dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!", "dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!",
"clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!", "clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!",
"hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.", "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.",
"clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!" "clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!",
"notEnoughPets": "You have not collected enough pets",
"notEnoughMounts": "You have not collected enough mounts",
"notEnoughPetsMounts": "You have not collected enough pets and mounts"
} }

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "Glimmer", "hatchingPotionShimmer": "Glimmer",
"hatchingPotionFairy": "Fe", "hatchingPotionFairy": "Fe",
"hatchingPotionStarryNight": "Starry Night", "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Hæld på et æg, og det vil udklække til et <%= potText(locale) %> kæledyr.", "hatchingPotionNotes": "Hæld på et æg, og det vil udklække til et <%= potText(locale) %> kæledyr.",
"premiumPotionAddlNotes": "Kan ikke bruges på quest-æg.", "premiumPotionAddlNotes": "Kan ikke bruges på quest-æg.",
"foodMeat": "Kød", "foodMeat": "Kød",

View File

@@ -143,11 +143,14 @@
"badAmountOfGemsToSend": "Mængden skal være mellem 1 og dit nuværende antal ædelsten.", "badAmountOfGemsToSend": "Mængden skal være mellem 1 og dit nuværende antal ædelsten.",
"report": "Report", "report": "Report",
"abuseFlag": "Anmeld overtrædelse af Retningslinjer for Fællesskabet", "abuseFlag": "Anmeld overtrædelse af Retningslinjer for Fællesskabet",
"abuseFlagModalHeading": "Anmeld <%= name %> for overtrædelse?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:<br><br><ul style='margin-left: 10px;'><li>swearing, religious oaths</li><li>bigotry, slurs</li><li>adult topics</li><li>violence, including as a joke</li><li>spam, nonsensical messages</li></ul>", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Anmeld Overtrædelse", "abuseFlagModalButton": "Anmeld Overtrædelse",
"abuseReported": "Tak for at anmelde denne overtrædelse. Moderatorerne er blevet informeret.", "abuseReported": "Tak for at anmelde denne overtrædelse. Moderatorerne er blevet informeret.",
"abuseAlreadyReported": "Du har allerede anmeldt denne besked.", "abuseAlreadyReported": "Du har allerede anmeldt denne besked.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Indtast venligst en besked.", "needsText": "Indtast venligst en besked.",
"needsTextPlaceholder": "Skriv din besked her.", "needsTextPlaceholder": "Skriv din besked her.",
"copyMessageAsToDo": "Kopier besked som To-Do", "copyMessageAsToDo": "Kopier besked som To-Do",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Mistletoe Healer (Healer)", "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)", "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Tilgændelig til køb indtil <%= date(locale) %>.", "eventAvailability": "Tilgændelig til køb indtil <%= date(locale) %>.",
"dateEndMarch": "March 31",
"dateEndApril": "19. april", "dateEndApril": "19. april",
"dateEndMay": "17. maj", "dateEndMay": "17. maj",
"dateEndJune": "Juni 14", "dateEndJune": "Juni 14",

View File

@@ -138,5 +138,8 @@
"dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!", "dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!",
"clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!", "clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!",
"hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.", "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.",
"clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!" "clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!",
"notEnoughPets": "You have not collected enough pets",
"notEnoughMounts": "You have not collected enough mounts",
"notEnoughPetsMounts": "You have not collected enough pets and mounts"
} }

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "Schimmerndes", "hatchingPotionShimmer": "Schimmerndes",
"hatchingPotionFairy": "Feenhaftes", "hatchingPotionFairy": "Feenhaftes",
"hatchingPotionStarryNight": "Sternenklare Nacht", "hatchingPotionStarryNight": "Sternenklare Nacht",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Gieße dies über ein Ei und es wird ein <%= potText(locale) %> Haustier daraus schlüpfen.", "hatchingPotionNotes": "Gieße dies über ein Ei und es wird ein <%= potText(locale) %> Haustier daraus schlüpfen.",
"premiumPotionAddlNotes": "Nicht auf Eier von Quest-Haustieren anwendbar.", "premiumPotionAddlNotes": "Nicht auf Eier von Quest-Haustieren anwendbar.",
"foodMeat": "Fleisch", "foodMeat": "Fleisch",

View File

@@ -143,11 +143,14 @@
"badAmountOfGemsToSend": "Die Menge muss zwischen 1 und Deiner aktuellen Edelsteinanzahl liegen.", "badAmountOfGemsToSend": "Die Menge muss zwischen 1 und Deiner aktuellen Edelsteinanzahl liegen.",
"report": "Melden", "report": "Melden",
"abuseFlag": "Verletzung der Community-Richtlinien melden", "abuseFlag": "Verletzung der Community-Richtlinien melden",
"abuseFlagModalHeading": "<%= name %> melden?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Möchtest Du diesen Beitrag wirklich melden? Du solltest AUSSCHLIESSLICH Beiträge melden, die unsere <%= firstLinkStart %>Community-Richtlinien<%= linkEnd %> und/oder unsere <%= secondLinkStart %>Nutzungsbedingungen<%= linkEnd %> verletzen. Das ungerechtfertigte Melden von Beiträgen stellt eine Verletzung der Community-Richtlinien dar und kann geahndet werden. Gute Gründe einen Beitrag zu melden sind unter anderem: <br><br><ul style='margin-left: 10px;'><li>Fluchen, Religiöse Schwüre</li><li>Intoleranz, herabwürdigende Bezeichnung jeglicher Ethnien</li><li>Nicht jugendfreie Themen</li><li>Gewalt, auch innerhalb eines Witzes</li><li>Spam, unsinnige Nachrichten</li></ul>.", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Verstoß melden", "abuseFlagModalButton": "Verstoß melden",
"abuseReported": "Danke, dass Du diesen Verstoß gemeldet hast. Die Moderatoren wurden benachrichtigt.", "abuseReported": "Danke, dass Du diesen Verstoß gemeldet hast. Die Moderatoren wurden benachrichtigt.",
"abuseAlreadyReported": "Du hast diese Nachricht bereits gemeldet.", "abuseAlreadyReported": "Du hast diese Nachricht bereits gemeldet.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Bitte gib eine Nachricht ein.", "needsText": "Bitte gib eine Nachricht ein.",
"needsTextPlaceholder": "Gib Deine Nachricht hier ein.", "needsTextPlaceholder": "Gib Deine Nachricht hier ein.",
"copyMessageAsToDo": "Nachricht als To-Do übernehmen", "copyMessageAsToDo": "Nachricht als To-Do übernehmen",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Mistelzweigheiler (Heiler)", "winter2018MistletoeSet": "Mistelzweigheiler (Heiler)",
"winter2018ReindeerSet": "Rentier-Schurke (Schurke)", "winter2018ReindeerSet": "Rentier-Schurke (Schurke)",
"eventAvailability": "Zum Kauf verfügbar bis zum <%= date(locale) %>.", "eventAvailability": "Zum Kauf verfügbar bis zum <%= date(locale) %>.",
"dateEndMarch": "March 31",
"dateEndApril": "19. April", "dateEndApril": "19. April",
"dateEndMay": "17. Mai", "dateEndMay": "17. Mai",
"dateEndJune": "14. Juni", "dateEndJune": "14. Juni",

View File

@@ -138,5 +138,8 @@
"dragThisPotion": "Ziehe dieses <%= potionName %> zu einem Ei und brüte ein neues Haustier aus!", "dragThisPotion": "Ziehe dieses <%= potionName %> zu einem Ei und brüte ein neues Haustier aus!",
"clickOnEggToHatch": "Klicke auf ein Ei um Dein <%= potionName %> Schlüpfelixier zu nutzen und ein neues Haustier auszubrüten!", "clickOnEggToHatch": "Klicke auf ein Ei um Dein <%= potionName %> Schlüpfelixier zu nutzen und ein neues Haustier auszubrüten!",
"hatchDialogText": "Gieße Dein <%= potionName %> Schlüpfelixier auf Dein <%= eggName %>-Ei und es wird ein <%= petName %> daraus schlüpfen.", "hatchDialogText": "Gieße Dein <%= potionName %> Schlüpfelixier auf Dein <%= eggName %>-Ei und es wird ein <%= petName %> daraus schlüpfen.",
"clickOnPotionToHatch": "Klicke auf ein Schlüpfelixier, um es über Dein <%= eggName %> zu gießen und ein neues Haustier schlüpfen zu lassen!" "clickOnPotionToHatch": "Klicke auf ein Schlüpfelixier, um es über Dein <%= eggName %> zu gießen und ein neues Haustier schlüpfen zu lassen!",
"notEnoughPets": "You have not collected enough pets",
"notEnoughMounts": "You have not collected enough mounts",
"notEnoughPetsMounts": "You have not collected enough pets and mounts"
} }

View File

@@ -256,6 +256,7 @@
"hatchingPotionShimmer": "Shimmer", "hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy", "hatchingPotionFairy": "Fairy",
"hatchingPotionStarryNight": "Starry Night", "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.", "hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs.", "premiumPotionAddlNotes": "Not usable on quest pet eggs.",

View File

@@ -145,11 +145,14 @@
"badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.", "badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.",
"report": "Report", "report": "Report",
"abuseFlag": "Report violation of Community Guidelines", "abuseFlag": "Report violation of Community Guidelines",
"abuseFlagModalHeading": "Report <%= name %> for violation?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:<br><br><ul style='margin-left: 10px;'><li>swearing, religious oaths</li><li>bigotry, slurs</li><li>adult topics</li><li>violence, including as a joke</li><li>spam, nonsensical messages</li></ul>", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Report Violation", "abuseFlagModalButton": "Report Violation",
"abuseReported": "Thank you for reporting this violation. The moderators have been notified.", "abuseReported": "Thank you for reporting this violation. The moderators have been notified.",
"abuseAlreadyReported": "You have already reported this message.", "abuseAlreadyReported": "You have already reported this message.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Please type a message.", "needsText": "Please type a message.",
"needsTextPlaceholder": "Type your message here.", "needsTextPlaceholder": "Type your message here.",
"copyMessageAsToDo": "Copy message as To-Do", "copyMessageAsToDo": "Copy message as To-Do",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Mistletoe Healer (Healer)", "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)", "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndMarch": "March 31",
"dateEndApril": "April 19", "dateEndApril": "April 19",
"dateEndMay": "May 17", "dateEndMay": "May 17",
"dateEndJune": "June 14", "dateEndJune": "June 14",

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "Shimmer", "hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy", "hatchingPotionFairy": "Fairy",
"hatchingPotionStarryNight": "Starry Night", "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Pour this on an egg, an' it'll hatch as a <%= potText(locale) %> pet.", "hatchingPotionNotes": "Pour this on an egg, an' it'll hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Ye canna use this on quest pet eggs.", "premiumPotionAddlNotes": "Ye canna use this on quest pet eggs.",
"foodMeat": "Meat", "foodMeat": "Meat",

View File

@@ -143,11 +143,14 @@
"badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.", "badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.",
"report": "Report", "report": "Report",
"abuseFlag": "Report violation o' Rules o' th' Sea", "abuseFlag": "Report violation o' Rules o' th' Sea",
"abuseFlagModalHeading": "Report <%= name %> fer violation?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:<br><br><ul style='margin-left: 10px;'><li>swearing, religious oaths</li><li>bigotry, slurs</li><li>adult topics</li><li>violence, including as a joke</li><li>spam, nonsensical messages</li></ul>", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Report Violation", "abuseFlagModalButton": "Report Violation",
"abuseReported": "Thank ye for reportin' this violation. Th' moderators have been notified.", "abuseReported": "Thank ye for reportin' this violation. Th' moderators have been notified.",
"abuseAlreadyReported": "Ye have already reported this message.", "abuseAlreadyReported": "Ye have already reported this message.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Please type a message.", "needsText": "Please type a message.",
"needsTextPlaceholder": "Type yer message here.", "needsTextPlaceholder": "Type yer message here.",
"copyMessageAsToDo": "Copy message as T'-Do", "copyMessageAsToDo": "Copy message as T'-Do",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Mistletoe Healer (Healer)", "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)", "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndMarch": "March 31",
"dateEndApril": "April 19", "dateEndApril": "April 19",
"dateEndMay": "May 17", "dateEndMay": "May 17",
"dateEndJune": "June 14", "dateEndJune": "June 14",

View File

@@ -138,5 +138,8 @@
"dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!", "dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!",
"clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!", "clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!",
"hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.", "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.",
"clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!" "clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!",
"notEnoughPets": "You have not collected enough pets",
"notEnoughMounts": "You have not collected enough mounts",
"notEnoughPetsMounts": "You have not collected enough pets and mounts"
} }

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "Shimmer", "hatchingPotionShimmer": "Shimmer",
"hatchingPotionFairy": "Fairy", "hatchingPotionFairy": "Fairy",
"hatchingPotionStarryNight": "Starry Night", "hatchingPotionStarryNight": "Starry Night",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.", "hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs.", "premiumPotionAddlNotes": "Not usable on quest pet eggs.",
"foodMeat": "Meat", "foodMeat": "Meat",

View File

@@ -143,11 +143,14 @@
"badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.", "badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.",
"report": "Report", "report": "Report",
"abuseFlag": "Report violation of Community Guidelines", "abuseFlag": "Report violation of Community Guidelines",
"abuseFlagModalHeading": "Report <%= name %> for violation?", "abuseFlagModalHeading": "Report a Violation",
"abuseFlagModalBody": "Are you sure you want to report this post? You should ONLY report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction. Appropriate reasons to flag a post include but are not limited to:<br><br><ul style='margin-left: 10px;'><li>swearing, religious oaths</li><li>bigotry, slurs</li><li>adult topics</li><li>violence, including as a joke</li><li>spam, nonsensical messages</li></ul>", "abuseFlagModalBody": "Are you sure you want to report this post? You should <strong>only</strong> report a post that violates the <%= firstLinkStart %>Community Guidelines<%= linkEnd %> and/or <%= secondLinkStart %>Terms of Service<%= linkEnd %>. Inappropriately reporting a post is a violation of the Community Guidelines and may give you an infraction.",
"abuseFlagModalButton": "Report Violation", "abuseFlagModalButton": "Report Violation",
"abuseReported": "Thank you for reporting this violation. The moderators have been notified.", "abuseReported": "Thank you for reporting this violation. The moderators have been notified.",
"abuseAlreadyReported": "You have already reported this message.", "abuseAlreadyReported": "You have already reported this message.",
"whyReportingPost": "Why are you reporting this post?",
"whyReportingPostPlaceholder": "Please help our moderators by letting us know why you are reporting this post for a violation, e.g., spam, swearing, religious oaths, bigotry, slurs, adult topics, violence.",
"optional": "Optional",
"needsText": "Please type a message.", "needsText": "Please type a message.",
"needsTextPlaceholder": "Type your message here.", "needsTextPlaceholder": "Type your message here.",
"copyMessageAsToDo": "Copy message as To-Do", "copyMessageAsToDo": "Copy message as To-Do",

View File

@@ -118,6 +118,7 @@
"winter2018MistletoeSet": "Mistletoe Healer (Healer)", "winter2018MistletoeSet": "Mistletoe Healer (Healer)",
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)", "winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.", "eventAvailability": "Available for purchase until <%= date(locale) %>.",
"dateEndMarch": "March 31",
"dateEndApril": "April 19", "dateEndApril": "April 19",
"dateEndMay": "May 17", "dateEndMay": "May 17",
"dateEndJune": "June 14", "dateEndJune": "June 14",

View File

@@ -138,5 +138,8 @@
"dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!", "dragThisPotion": "Drag this <%= potionName %> to an Egg and hatch a new pet!",
"clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!", "clickOnEggToHatch": "Click on an Egg to use your <%= potionName %> hatching potion and hatch a new pet!",
"hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.", "hatchDialogText": "Pour your <%= potionName %> hatching potion on your <%= eggName %> egg, and it will hatch into a <%= petName %>.",
"clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!" "clickOnPotionToHatch": "Click on a hatching potion to use it on your <%= eggName %> and hatch a new pet!",
"notEnoughPets": "You have not collected enough pets",
"notEnoughMounts": "You have not collected enough mounts",
"notEnoughPetsMounts": "You have not collected enough pets and mounts"
} }

View File

@@ -191,6 +191,7 @@
"hatchingPotionShimmer": "Resplandeciente", "hatchingPotionShimmer": "Resplandeciente",
"hatchingPotionFairy": "Hada", "hatchingPotionFairy": "Hada",
"hatchingPotionStarryNight": "Noche Estrellada", "hatchingPotionStarryNight": "Noche Estrellada",
"hatchingPotionRainbow": "Rainbow",
"hatchingPotionNotes": "Vierte esto en un huevo y eclosionará como una mascota <%= potText(locale) %>.", "hatchingPotionNotes": "Vierte esto en un huevo y eclosionará como una mascota <%= potText(locale) %>.",
"premiumPotionAddlNotes": "No puede usarse en huevos de mascota de misión.", "premiumPotionAddlNotes": "No puede usarse en huevos de mascota de misión.",
"foodMeat": "Carne", "foodMeat": "Carne",

View File

@@ -537,7 +537,7 @@
"armorSpecialSummer2017HealerText": "Cola Mardeplata", "armorSpecialSummer2017HealerText": "Cola Mardeplata",
"armorSpecialSummer2017HealerNotes": "¡Esta prenda de escamas plateadas transforma a su usuario en un verdadero Sanador Marino! Aumenta la Constitución en <%= con %>. Equipo de Edición Limitada Verano 2017.", "armorSpecialSummer2017HealerNotes": "¡Esta prenda de escamas plateadas transforma a su usuario en un verdadero Sanador Marino! Aumenta la Constitución en <%= con %>. Equipo de Edición Limitada Verano 2017.",
"armorSpecialFall2017RogueText": "Ropajes de Parche de Calabaza", "armorSpecialFall2017RogueText": "Ropajes de Parche de Calabaza",
"armorSpecialFall2017RogueNotes": "Need to hide out? Crouch among the Jack o' Lanterns and these robes will conceal you! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.", "armorSpecialFall2017RogueNotes": "¿Necesitas esconderte? ¡Agáchate ente las Cabezas de Halloween y este ropaje te ocultará! Aumenta la Percepción en <%= per %>. Equipamiento de Otoño de Edición Limitada del 2017.",
"armorSpecialFall2017WarriorText": "Fuerte y Dulce Armadura", "armorSpecialFall2017WarriorText": "Fuerte y Dulce Armadura",
"armorSpecialFall2017WarriorNotes": "Esta armadura te protegerá como un delicioso cascarón de caramelo. Aumenta la Constitución en un <%= con %>. Equipamiento de Otoño de Edición Limitada del 2017.", "armorSpecialFall2017WarriorNotes": "Esta armadura te protegerá como un delicioso cascarón de caramelo. Aumenta la Constitución en un <%= con %>. Equipamiento de Otoño de Edición Limitada del 2017.",
"armorSpecialFall2017MageText": "Toga de Baile de Disfraces", "armorSpecialFall2017MageText": "Toga de Baile de Disfraces",
@@ -698,11 +698,11 @@
"armorArmoireCoachDriverLiveryNotes": "Este pesado abrigo te protegerá del clima mientras conduces. ¡Además, también se ve bastante elegante! Aumenta la Fuerza en un <%= str %>. Armario Encantado: Conjunto de Conductor de Carruajes (Objeto 1 de 3).", "armorArmoireCoachDriverLiveryNotes": "Este pesado abrigo te protegerá del clima mientras conduces. ¡Además, también se ve bastante elegante! Aumenta la Fuerza en un <%= str %>. Armario Encantado: Conjunto de Conductor de Carruajes (Objeto 1 de 3).",
"armorArmoireRobeOfDiamondsText": "Ropaje de Diamantes", "armorArmoireRobeOfDiamondsText": "Ropaje de Diamantes",
"armorArmoireRobeOfDiamondsNotes": "Estos ropajes reales, no solo te hacen parecer nobles: te permiten ver la nobleza en otras personas. Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto de Rey de DIamantes. (Objeto 1 de 3).", "armorArmoireRobeOfDiamondsNotes": "Estos ropajes reales, no solo te hacen parecer nobles: te permiten ver la nobleza en otras personas. Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto de Rey de DIamantes. (Objeto 1 de 3).",
"armorArmoireFlutteryFrockText": "Fluttery Frock", "armorArmoireFlutteryFrockText": "Hábito Trémulo",
"armorArmoireFlutteryFrockNotes": "A light and airy gown with a wide skirt the butterflies might mistake for a giant blossom! Increases Constitution, Perception, and Strength by <%= attrs %> each. Enchanted Armoire: Fluttery Frock Set (Item 1 of 3).", "armorArmoireFlutteryFrockNotes": "¡Un vestido ligero y etéreo con una falda amplia que las mariposas podrían confundir con una flor gigante! Aumenta Constitución, Percepción, y Fuerza en un <%= attrs %> cada uno. Armario Encantado: Conjunto de Hábito Trémulo (Objeto 1 de 3)",
"headgear": "casco", "headgear": "casco",
"headgearCapitalized": "Equipo de cabeza", "headgearCapitalized": "Equipo de cabeza",
"headBase0Text": "No Headgear", "headBase0Text": "Sin Equipo de cabeza",
"headBase0Notes": "Sin equipo de cabeza.", "headBase0Notes": "Sin equipo de cabeza.",
"headWarrior1Text": "Yelmo de Cuero.", "headWarrior1Text": "Yelmo de Cuero.",
"headWarrior1Notes": "Capuchón de resistente cuero hervido. Aumenta la fuerza en <%= str %>.", "headWarrior1Notes": "Capuchón de resistente cuero hervido. Aumenta la fuerza en <%= str %>.",
@@ -747,11 +747,11 @@
"headSpecial0Text": "Casco de Sombras", "headSpecial0Text": "Casco de Sombras",
"headSpecial0Notes": "Sangre y ceniza, lava y obsidiana le dan a este casco su imagen y poder. Aumenta la inteligencia en <%= int %>.", "headSpecial0Notes": "Sangre y ceniza, lava y obsidiana le dan a este casco su imagen y poder. Aumenta la inteligencia en <%= int %>.",
"headSpecial1Text": "Casco de cristal", "headSpecial1Text": "Casco de cristal",
"headSpecial1Notes": "The favored crown of those who lead by example. Increases all Stats by <%= attrs %>.", "headSpecial1Notes": "La corona favorita de aquellos que lideran con el ejemplo. Aumenta todas las Estadísticas en un <%= attrs %>.",
"headSpecial2Text": "Casco sin nombre", "headSpecial2Text": "Casco sin nombre",
"headSpecial2Notes": "Un testimonio de aquellos que se sacrificaron sin pedir nada a cambio. Aumenta tanto la inteligencia como la fuerza en <%= attrs %>.", "headSpecial2Notes": "Un testimonio de aquellos que se sacrificaron sin pedir nada a cambio. Aumenta tanto la inteligencia como la fuerza en <%= attrs %>.",
"headSpecialTakeThisText": "Yelmo 'Take This'", "headSpecialTakeThisText": "Yelmo 'Take This'",
"headSpecialTakeThisNotes": "This helm was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.", "headSpecialTakeThisNotes": "Este casco se ganó al participar en un Desafío patrocinado por Take This. ¡Felicidades! Aumenta todas las Estadísticas en un <%= attrs %>.",
"headSpecialFireCoralCircletText": "Diadema de coral de fuego", "headSpecialFireCoralCircletText": "Diadema de coral de fuego",
"headSpecialFireCoralCircletNotes": "Esta diadema, diseñada por los mejores alquimistas de Habitica, te permite respirar agua y bucear en busca de tesoros. Suma <%= per %> de percepción.", "headSpecialFireCoralCircletNotes": "Esta diadema, diseñada por los mejores alquimistas de Habitica, te permite respirar agua y bucear en busca de tesoros. Suma <%= per %> de percepción.",
"headSpecialPyromancersTurbanText": "Turbante de Pirómano", "headSpecialPyromancersTurbanText": "Turbante de Pirómano",
@@ -911,21 +911,21 @@
"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 %>. Edición Limitada 2017 del Equipamiento de Otoño",
"headSpecialFall2017WarriorText": "Casco de Golosinas de Maíz.", "headSpecialFall2017WarriorText": "Casco de Golosinas de Maíz.",
"headSpecialFall2017WarriorNotes": "This helm might look like a treat, but wayward tasks won't find it so sweet! Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.", "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.",
"headSpecialFall2017MageText": "Masquerade Helm", "headSpecialFall2017MageText": "Casco del Baile de Máscaras",
"headSpecialFall2017MageNotes": "When you appear in this feathery hat, everyone will be left guessing the identity of the magical stranger in the room! Increases Perception by <%= per %>. Limited Edition 2017 Autumn Gear.", "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.",
"headSpecialFall2017HealerText": "Haunted House Helm", "headSpecialFall2017HealerText": "Casco de Casa Encantada",
"headSpecialFall2017HealerNotes": "Invite spooky spirits and friendly creatures to seek your healing powers in this helm! Increases Intelligence by <%= int %>. Limited Edition 2017 Autumn Gear.", "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.",
"headSpecialNye2017Text": "Fanciful Party Hat", "headSpecialNye2017Text": "Sombrero Festivo Rocambolesco",
"headSpecialNye2017Notes": "You've received a Fanciful Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.", "headSpecialNye2017Notes": "¡Has recibido un Sombrero Festivo Rocambolesco! ¡Llévalo con orgullo mientras resuena en Año Nuevo! Sin beneficios.",
"headSpecialWinter2018RogueText": "Reindeer Helm", "headSpecialWinter2018RogueText": "Casco de Reno",
"headSpecialWinter2018RogueNotes": "The perfect holiday disguise, with a built-in headlight! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.", "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.",
"headSpecialWinter2018WarriorText": "Giftbox Helm", "headSpecialWinter2018WarriorText": "Casco Caja de Regalo",
"headSpecialWinter2018WarriorNotes": "This jaunty box top and bow are not only festive, but quite sturdy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.", "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": "Sparkly Top Hat", "headSpecialWinter2018MageText": "Sombrero de Copa Centelleante",
"headSpecialWinter2018MageNotes": "Ready for some extra special magic? This glittery hat is sure to boost all your spells! Increases Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.", "headSpecialWinter2018MageNotes": "¿Listo para algo de magia especial extra? ¡Este sombrero brillante impulsará infalible todos tus hechizos! Aumenta la Percepción en un <%= per %>. Equipamiento de Invierno de Edición Limitada del 2017-2018.",
"headSpecialWinter2018HealerText": "Mistletoe Hood", "headSpecialWinter2018HealerText": "Capucha de Muérdago",
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.", "headSpecialWinter2018HealerNotes": "¡Esta sofisticada capucha te mantendrá cálido con alegres sensaciones festivas! Aumenta la Inteligencia en <%= int %>. Equipo de Invierno de Edición Limitada del 2017-2018.",
"headSpecialGaymerxText": "Casco de Guerrero de Arco Iris", "headSpecialGaymerxText": "Casco de Guerrero de Arco Iris",
"headSpecialGaymerxNotes": "Con motivo de la celebración por la Conferencia GaymerX, ¡este casco especial está decorado con un radiante y colorido estampado arco iris! GaymerX es una convención de juegos que celebra a la gente LGBTQ y a los videojuegos, y está abierta a todo el público.", "headSpecialGaymerxNotes": "Con motivo de la celebración por la Conferencia GaymerX, ¡este casco especial está decorado con un radiante y colorido estampado arco iris! GaymerX es una convención de juegos que celebra a la gente LGBTQ y a los videojuegos, y está abierta a todo el público.",
"headMystery201402Text": "Casco alado", "headMystery201402Text": "Casco alado",
@@ -986,12 +986,12 @@
"headMystery201705Notes": "¡Habitica es conocido por sus fieros y productivos Guerreros del Grifo! Únete a su prestigioso grupo vistiendo este yelmo de plumas. No proporciona ningún beneficio. Artículo del Suscriptor Mayo 2017.", "headMystery201705Notes": "¡Habitica es conocido por sus fieros y productivos Guerreros del Grifo! Únete a su prestigioso grupo vistiendo este yelmo de plumas. No proporciona ningún beneficio. Artículo del Suscriptor Mayo 2017.",
"headMystery201707Text": "Yelmo Medusomante", "headMystery201707Text": "Yelmo Medusomante",
"headMystery201707Notes": "¿Necesitas manos extra para tus tareas? ¡Este translúcido yelmo tiene unos pocos tentáculos que ofrecerán esa ayuda! No proporciona ningún beneficio. Artículo del suscriptor Julio 2017.", "headMystery201707Notes": "¿Necesitas manos extra para tus tareas? ¡Este translúcido yelmo tiene unos pocos tentáculos que ofrecerán esa ayuda! No proporciona ningún beneficio. Artículo del suscriptor Julio 2017.",
"headMystery201710Text": "Imperious Imp Helm", "headMystery201710Text": "Casco de Granuja Arrogante",
"headMystery201710Notes": "This helm makes you look intimidating... but it won't do any favors for your depth perception! Confers no benefit. October 2017 Subscriber Item.", "headMystery201710Notes": "Este casco te hace parecer intimidante... ¡pero no le hará ningún favor a tu percepción de la profundidad! Sin beneficios. Artículo del Subscriptor de octubre del 2017.",
"headMystery201712Text": "Candlemancer Crown", "headMystery201712Text": "Corona de Candelamancia",
"headMystery201712Notes": "This crown will bring light and warmth to even the darkest winter night. Confers no benefit. December 2017 Subscriber Item.", "headMystery201712Notes": "Esta corona traerá luz y calor incluso a la noche de invierno más oscura. Sin beneficios. Artículo del Suscriptor de diciembre del 2017.",
"headMystery201802Text": "Love Bug Helm", "headMystery201802Text": "Casco del Insecto del Amor",
"headMystery201802Notes": "The antennae on this helm act as cute dowsing rods, detecting feelings of love and support nearby. Confers no benefit. February 2018 Subscriber Item.", "headMystery201802Notes": "Las antenas en este casco actúan como adorables varas de radiestesia, al detectar sentimientos de amor y apoyo cercanos. Sin beneficios. Artículo del Suscriptor de febrero del 2018.",
"headMystery301404Text": "Sombrero de copa sofisticado", "headMystery301404Text": "Sombrero de copa sofisticado",
"headMystery301404Notes": "¡Un sofisticado sombrero de copa solo para los más refinados caballeros! No otorga ningún beneficio. Artículo de Suscriptor de Enero del 3015", "headMystery301404Notes": "¡Un sofisticado sombrero de copa solo para los más refinados caballeros! No otorga ningún beneficio. Artículo de Suscriptor de Enero del 3015",
"headMystery301405Text": "Sombrero de copa básico", "headMystery301405Text": "Sombrero de copa básico",
@@ -1061,7 +1061,7 @@
"headArmoireWoodElfHelmText": "Yelmo de Madera para Elfo", "headArmoireWoodElfHelmText": "Yelmo de Madera para Elfo",
"headArmoireWoodElfHelmNotes": "Este yelmo de hojas puede parecer frágil, pero te protegerá de las inclemencias del tiempo y de peligrosos enemigos. Aumenta la Constitución en <%= con %>. Armario Encantado: Conjunto de Madera para Elfo (Artículo 1 de 3).", "headArmoireWoodElfHelmNotes": "Este yelmo de hojas puede parecer frágil, pero te protegerá de las inclemencias del tiempo y de peligrosos enemigos. Aumenta la Constitución en <%= con %>. Armario Encantado: Conjunto de Madera para Elfo (Artículo 1 de 3).",
"headArmoireRamHeaddressText": "Tocado de Carnero", "headArmoireRamHeaddressText": "Tocado de Carnero",
"headArmoireRamHeaddressNotes": "This elaborate helm is fashioned to look like a ram's head. Increases Constitution by <%= con %> and Perception by <%= per %>. Enchanted Armoire: Ram Barbarian Set (Item 1 of 3).", "headArmoireRamHeaddressNotes": "Este elaborado casco está diseñado para parecerse a la cabeza de un carnero. Aumenta la Constitución en <%= con %> y la Percepción en <%= per %>. Armario Encantado: Conjunto de Carnero Bárbaro (Objeto 1 de 3).",
"headArmoireCrownOfHeartsText": "Corona de Corazones", "headArmoireCrownOfHeartsText": "Corona de Corazones",
"headArmoireCrownOfHeartsNotes": "¡Esta corona rosada no sólo es llamativa! . También fortalecerá tu corazón contra las tareas más duras. Aumenta la Fuerza en <%= str %>. Armario Encantado: Conjunto de Reina de Corazones (Artículo 1 de 3)", "headArmoireCrownOfHeartsNotes": "¡Esta corona rosada no sólo es llamativa! . También fortalecerá tu corazón contra las tareas más duras. Aumenta la Fuerza en <%= str %>. Armario Encantado: Conjunto de Reina de Corazones (Artículo 1 de 3)",
"headArmoireMushroomDruidCapText": "Caperuza de Druida de Champiñón", "headArmoireMushroomDruidCapText": "Caperuza de Druida de Champiñón",
@@ -1074,20 +1074,20 @@
"headArmoireSwanFeatherCrownNotes": "¡Esta tiara es hermosa y ligera como una pluma de cisne! Aumenta la Inteligencia en <%= int %>. Armario Encantado: Conjunto Cisne Bailarín (Objeto 1 de 3).", "headArmoireSwanFeatherCrownNotes": "¡Esta tiara es hermosa y ligera como una pluma de cisne! Aumenta la Inteligencia en <%= int %>. Armario Encantado: Conjunto Cisne Bailarín (Objeto 1 de 3).",
"headArmoireAntiProcrastinationHelmText": "Yelmo Anti-Procastinación", "headArmoireAntiProcrastinationHelmText": "Yelmo Anti-Procastinación",
"headArmoireAntiProcrastinationHelmNotes": "¡Este yelmo de poderoso acero te ayudará a vencer en tu batalla por se productivo, feliz y saludable! Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto Anti-Procastinación (Objeto 1 de 3).", "headArmoireAntiProcrastinationHelmNotes": "¡Este yelmo de poderoso acero te ayudará a vencer en tu batalla por se productivo, feliz y saludable! Aumenta la Percepción en <%= per %>. Armario Encantado: Conjunto Anti-Procastinación (Objeto 1 de 3).",
"headArmoireCandlestickMakerHatText": "Candlestick Maker Hat", "headArmoireCandlestickMakerHatText": "Sombrero de Creador de Candelabros",
"headArmoireCandlestickMakerHatNotes": "A jaunty hat makes every job more fun, and candlemaking is no exception! Increases Perception and Intelligence by <%= attrs %> each. Enchanted Armoire: Candlestick Maker Set (Item 2 of 3).", "headArmoireCandlestickMakerHatNotes": "¡Un alegre sombrero que hace cada trabajo sea más divertido, y la fabricación de velas no es una excepción! Aumenta la Percepción y la Inteligencia en <%= attrs %> cada uno. Armario Encantado: Conjunto de Creador de Candelabros (Objeto 2 de 3).",
"headArmoireLamplightersTopHatText": "Lamplighter's Top Hat", "headArmoireLamplightersTopHatText": "Sombrero de Copa de Farolero",
"headArmoireLamplightersTopHatNotes": "This jaunty black hat completes your lamp-lighting ensemble! Increases Constitution by <%= con %>.", "headArmoireLamplightersTopHatNotes": "¡Este alegre sombrero negro completa tu conjunto de farolero! Aumenta la Constitución en <%= con %>.",
"headArmoireCoachDriversHatText": "Coach Driver's Hat", "headArmoireCoachDriversHatText": "Sombrero de Conductor de Carruajes.",
"headArmoireCoachDriversHatNotes": "This hat is dressy, but not quite so dressy as a top hat. Make sure you don't lose it as you drive speedily across the land! Increases Intelligence by <%= int %>. Enchanted Armoire: Coach Driver Set (Item 2 of 3).", "headArmoireCoachDriversHatNotes": "Este sombrero es elegante, pero no tan elegante como un sombrero de copa. ¡Asegúrate de no perderlo mientras conduces rápidamente por el terreno! Aumenta la Inteligencia en un <%= int %>. Armario Encantado: Conjunto de Conductor de Carruajes (Objeto 2 de 3).",
"headArmoireCrownOfDiamondsText": "Crown of Diamonds", "headArmoireCrownOfDiamondsText": "Corona de Diamantes",
"headArmoireCrownOfDiamondsNotes": "This shining crown isn't just a great hat; it will also sharpen your mind! Increases Intelligence by <%= int %>. Enchanted Armoire: King of Diamonds Set (Item 2 of 3).", "headArmoireCrownOfDiamondsNotes": "Esta brillante corona no es tan solo un gran sombrero; también agudizará tu mente! Aumenta la Inteligencia en <%= int %>. Armario Encantado: Conjunto de Rey de Diamantes (Objeto 2 de 3).",
"headArmoireFlutteryWigText": "Fluttery Wig", "headArmoireFlutteryWigText": "Peluca Trémula",
"headArmoireFlutteryWigNotes": "This fine powdered wig has plenty of room for your butterflies to rest if they get tired while doing your bidding. Increases Intelligence, Perception, and Strength by <%= attrs %> each. Enchanted Armoire: Fluttery Frock Set (Item 2 of 3).", "headArmoireFlutteryWigNotes": "Esta fina peluca empolvada tiene suficiente espacio para que tus mariposas descansen si se cansan mientras haces tus ofertas. Aumenta la Inteligencia, la Percepción y la Fuerza en <%= attrs %> cada una. Armario Encantado: Conjunto de Hábito Trémulo (Objeto 2 de 3).",
"offhand": "off-hand item", "offhand": "objeto para la mano izquierda",
"offhandCapitalized": "Off-Hand Item", "offhandCapitalized": "Objeto para la Mano Izquierda",
"shieldBase0Text": "No Off-Hand Equipment", "shieldBase0Text": "Sin Equipamiento en la Mano Izquierda",
"shieldBase0Notes": "No shield or other off-hand item.", "shieldBase0Notes": "Sin escudo u otro objeto para la mano izquierda",
"shieldWarrior1Text": "Escudo de madera", "shieldWarrior1Text": "Escudo de madera",
"shieldWarrior1Notes": "Escudo redondo de madera gruesa. Aumenta Constitución en <%= con %>.", "shieldWarrior1Notes": "Escudo redondo de madera gruesa. Aumenta Constitución en <%= con %>.",
"shieldWarrior2Text": "Escudo", "shieldWarrior2Text": "Escudo",
@@ -1111,9 +1111,9 @@
"shieldSpecial0Text": "Cráneo atormentado", "shieldSpecial0Text": "Cráneo atormentado",
"shieldSpecial0Notes": "Ve más allá del velo de la muerte, y muestra lo que allí se encuentra para asustar a los enemigos. Aumenta Percepción en <%= per %>.", "shieldSpecial0Notes": "Ve más allá del velo de la muerte, y muestra lo que allí se encuentra para asustar a los enemigos. Aumenta Percepción en <%= per %>.",
"shieldSpecial1Text": "Escudo de cristal", "shieldSpecial1Text": "Escudo de cristal",
"shieldSpecial1Notes": "Shatters arrows and deflects the words of naysayers. Increases all Stats by <%= attrs %>.", "shieldSpecial1Notes": "Destroza las flechas y desvía las palabras de los detractores. Aumenta todas las Estadísticas en <%= attrs %>.",
"shieldSpecialTakeThisText": "Escudo 'Take This'", "shieldSpecialTakeThisText": "Escudo 'Take This'",
"shieldSpecialTakeThisNotes": "This shield was earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.", "shieldSpecialTakeThisNotes": "Este escudo se consiguió por participar en un Desafío patrocinado por Take This. ¡Felicidades! Aumenta todas las Estadísticas en <%= attrs %>.",
"shieldSpecialGoldenknightText": "Lucero del Alba Machaca Hitos de Mustaine", "shieldSpecialGoldenknightText": "Lucero del Alba Machaca Hitos de Mustaine",
"shieldSpecialGoldenknightNotes": "¡Encuentros, monstruos, malestar: superados! ¡Machacados! Aumenta la Constitución y la Percepción en <%= attrs %>.", "shieldSpecialGoldenknightNotes": "¡Encuentros, monstruos, malestar: superados! ¡Machacados! Aumenta la Constitución y la Percepción en <%= attrs %>.",
"shieldSpecialMoonpearlShieldText": "Escudo de perla lunar", "shieldSpecialMoonpearlShieldText": "Escudo de perla lunar",
@@ -1218,28 +1218,28 @@
"shieldSpecialSummer2017WarriorNotes": "¡Esta concha que acabas de encontrar es tan decorativa como defensiva! Aumenta la Constitución en <%= con %>. Equipo de Edición Limitada de Verano 2017.", "shieldSpecialSummer2017WarriorNotes": "¡Esta concha que acabas de encontrar es tan decorativa como defensiva! Aumenta la Constitución en <%= con %>. Equipo de Edición Limitada de Verano 2017.",
"shieldSpecialSummer2017HealerText": "Escudo de Ostra", "shieldSpecialSummer2017HealerText": "Escudo de Ostra",
"shieldSpecialSummer2017HealerNotes": "Esta ostra mágica genera perlas constantemente al tiempo que sirve de protección. Aumenta la Constitución en <%= con %>. Equipo de Edición Limitada Verano 2017.", "shieldSpecialSummer2017HealerNotes": "Esta ostra mágica genera perlas constantemente al tiempo que sirve de protección. Aumenta la Constitución en <%= con %>. Equipo de Edición Limitada Verano 2017.",
"shieldSpecialFall2017RogueText": "Candied Apple Mace", "shieldSpecialFall2017RogueText": "Maza de Manzana Confitada",
"shieldSpecialFall2017RogueNotes": "Defeat your foes with sweetness! Increases Strength by <%= str %>. Limited Edition 2017 Autumn Gear.", "shieldSpecialFall2017RogueNotes": "¡Derrota a tus enemigos con dulzura! Aumenta la Fuerza en <%= str %>. Equipamiento de Otoño de Edición Limitada del 2017.",
"shieldSpecialFall2017WarriorText": "Candy Corn Shield", "shieldSpecialFall2017WarriorText": "Escudo de Maíz Dulce",
"shieldSpecialFall2017WarriorNotes": "This candy shield has mighty protective powers, so try not to nibble on it! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.", "shieldSpecialFall2017WarriorNotes": "Este dulce escudo tiene poderosos poderes de protección, ¡así que intenta no mordisquearlo! Aumenta la Constitución en <%= con %>. Equipamiento de Otoño de Edición Limitada del 2017.",
"shieldSpecialFall2017HealerText": "Haunted Orb", "shieldSpecialFall2017HealerText": "Orbe Encantado",
"shieldSpecialFall2017HealerNotes": "This orb occasionally screeches. We're sorry, we're not sure why. But it sure looks nifty! Increases Constitution by <%= con %>. Limited Edition 2017 Autumn Gear.", "shieldSpecialFall2017HealerNotes": "Este orbe chilla en ocasiones. Lo sentimos, no estamos seguros de por qué. ¡Pero parece ingenioso! Aumenta la Aumenta la Constitución en <%= con %>. Equipamiento de Otoño de Edición Limitada del 2017.",
"shieldSpecialWinter2018RogueText": "Peppermint Hook", "shieldSpecialWinter2018RogueText": "Garfio de Menta",
"shieldSpecialWinter2018RogueNotes": "Perfect for climbing walls or distracting your foes with sweet, sweet candy. Increases Strength by <%= str %>. Limited Edition 2017-2018 Winter Gear.", "shieldSpecialWinter2018RogueNotes": "Perfecto para escalar paredes o para distraer a tus oponentes con un caramelo muy, muy dulce. Aumenta la fuerza en <%= str %>. Equipamiento de Invierno de Edición Limitada del 2017-2018.",
"shieldSpecialWinter2018WarriorText": "Magic Gift Bag", "shieldSpecialWinter2018WarriorText": "Bolsa de Regalo Mágica",
"shieldSpecialWinter2018WarriorNotes": "Just about any useful thing you need can be found in this sack, if you know the right magic words to whisper. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.", "shieldSpecialWinter2018WarriorNotes": "Puedes encontrar casi cualquier cosa útil que necesites en este saco, si conoces las palabras mágicas correctas que susurrar. Aumenta la Constitución en <%= con %>. Equipamiento de Invierno de Edición Limitada de 2017-2018.",
"shieldSpecialWinter2018HealerText": "Campana de muérdago", "shieldSpecialWinter2018HealerText": "Campana de muérdago",
"shieldSpecialWinter2018HealerNotes": "What's that sound? The sound of warmth and cheer for all to hear! Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.", "shieldSpecialWinter2018HealerNotes": "¿Qué es ese sonido? ¡El sonido de calidez y alegría para que todos lo escuchen! Aumenta la Constitución en <%= con %>. Equipamiento de Invierno de Edición Limitada del 2017-2018.",
"shieldMystery201601Text": "Destructora de Resoluciones", "shieldMystery201601Text": "Destructora de Resoluciones",
"shieldMystery201601Notes": "Esta espada se puede usar para desviar a todas las distracciones. No otorga ningún beneficio. Artículo de Suscriptor de Enero 2016.", "shieldMystery201601Notes": "Esta espada se puede usar para desviar a todas las distracciones. No otorga ningún beneficio. Artículo de Suscriptor de Enero 2016.",
"shieldMystery201701Text": "Escudo para congelar el tiempo", "shieldMystery201701Text": "Escudo para congelar el tiempo",
"shieldMystery201701Notes": "¡Congela el tiempo y conquista tus tareas! No proporciona ventajas. Artículo de Suscriptor de enero de 2017.", "shieldMystery201701Notes": "¡Congela el tiempo y conquista tus tareas! No proporciona ventajas. Artículo de Suscriptor de enero de 2017.",
"shieldMystery201708Text": "Escudo de lava", "shieldMystery201708Text": "Escudo de lava",
"shieldMystery201708Notes": "Este escudo escabroso de roca fundida te protege de los Malos Hábitos pero no quemará tus manos. Sin beneficio. Agosto 2017 artículo del suscriptor.", "shieldMystery201708Notes": "Este escudo escabroso de roca fundida te protege de los Malos Hábitos pero no quemará tus manos. Sin beneficio. Agosto 2017 artículo del suscriptor.",
"shieldMystery201709Text": "Sorcery Handbook", "shieldMystery201709Text": "Manual de Brujería",
"shieldMystery201709Notes": "This book will guide you through your forays into sorcery. Confers no benefit. September 2017 Subscriber Item.", "shieldMystery201709Notes": "Este libro te guiará a través de de tus incursiones hacia la brujería. Sin beneficio. Artículo del Subscriptor de septiembre del 2017.",
"shieldMystery201802Text": "Love Bug Shield", "shieldMystery201802Text": "Escudo de Insecto Amoroso",
"shieldMystery201802Notes": "Although it may look like brittle candy, this shield is resistant to even the strongest Shattering Heartbreak attacks! Confers no benefit. February 2018 Subscriber Item.", "shieldMystery201802Notes": "Aunque puede que parezca un dulce quebradizo, ¡este escudo resiste hasta el más fuerte de los ataques de Desamor Aplastante! Sin beneficios. Artículo del Suscriptor de febrero del 2018.",
"shieldMystery301405Text": "Escudo Reloj", "shieldMystery301405Text": "Escudo Reloj",
"shieldMystery301405Notes": "¡El tiempo está de tu parte con este imponente escudo reloj! No confiere ningún beneficio. Equipo de suscriptor Junio 3015.", "shieldMystery301405Notes": "¡El tiempo está de tu parte con este imponente escudo reloj! No confiere ningún beneficio. Equipo de suscriptor Junio 3015.",
"shieldMystery301704Text": "Abanico vibrante", "shieldMystery301704Text": "Abanico vibrante",
@@ -1261,7 +1261,7 @@
"shieldArmoirePerchingFalconText": "Halcón posado", "shieldArmoirePerchingFalconText": "Halcón posado",
"shieldArmoirePerchingFalconNotes": "Un halcón amigo se posa en tu brazo, preparado para abalanzarse sobre tus enemigos. Suma <%= str %> de fuerza. Armario encantado: conjunto de halconero (artículo 3 de 3).", "shieldArmoirePerchingFalconNotes": "Un halcón amigo se posa en tu brazo, preparado para abalanzarse sobre tus enemigos. Suma <%= str %> de fuerza. Armario encantado: conjunto de halconero (artículo 3 de 3).",
"shieldArmoireRamHornShieldText": "Escudo de Cuerno de Carnero", "shieldArmoireRamHornShieldText": "Escudo de Cuerno de Carnero",
"shieldArmoireRamHornShieldNotes": "Ram this shield into opposing Dailies! Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Ram Barbarian Set (Item 3 of 3).", "shieldArmoireRamHornShieldNotes": "¡Embiste este escudo contra las Tareas Diarias opositoras! Aumenta la Constitución y la Fuerza en <%= attrs %> cada uno. Armario Encantado: Conjunto de Carnero Bárbaro (Artículo 3 de 3).",
"shieldArmoireRedRoseText": "Rosa Roja", "shieldArmoireRedRoseText": "Rosa Roja",
"shieldArmoireRedRoseNotes": "Esta roja de un rojo profundo huele a encantada. Además, agudizará tu entendimiento. Aumenta Percepción por <%= per %> . Armario Encantado: Artículo Independiente.", "shieldArmoireRedRoseNotes": "Esta roja de un rojo profundo huele a encantada. Además, agudizará tu entendimiento. Aumenta Percepción por <%= per %> . Armario Encantado: Artículo Independiente.",
"shieldArmoireMushroomDruidShieldText": "Escudo de Druida de Champiñón", "shieldArmoireMushroomDruidShieldText": "Escudo de Druida de Champiñón",
@@ -1276,18 +1276,18 @@
"shieldArmoireGoldenBatonNotes": "¡Cuando te lanzas a la batalla ondeando este bastón al marcar el ritmo, eres imparable! Aumenta la Inteligencia y la Fuerza en <%= attrs %> cada uno. Armario Encantado: Objeto Independiente.", "shieldArmoireGoldenBatonNotes": "¡Cuando te lanzas a la batalla ondeando este bastón al marcar el ritmo, eres imparable! Aumenta la Inteligencia y la Fuerza en <%= attrs %> cada uno. Armario Encantado: Objeto Independiente.",
"shieldArmoireAntiProcrastinationShieldText": "Escudo Anti-Procastinación", "shieldArmoireAntiProcrastinationShieldText": "Escudo Anti-Procastinación",
"shieldArmoireAntiProcrastinationShieldNotes": "¡Este poderoso escudo de acero te ayudará a bloquear las distracciones cuando se acerquen! Aumenta la Constitución en <%= con %>. Armario Encantado: Conjunto Anti-Procastinación (Objeto 3 de 3).", "shieldArmoireAntiProcrastinationShieldNotes": "¡Este poderoso escudo de acero te ayudará a bloquear las distracciones cuando se acerquen! Aumenta la Constitución en <%= con %>. Armario Encantado: Conjunto Anti-Procastinación (Objeto 3 de 3).",
"shieldArmoireHorseshoeText": "Horseshoe", "shieldArmoireHorseshoeText": "Herradura",
"shieldArmoireHorseshoeNotes": "Help protect the feet of your hooved mounts with this iron shoe. Increases Constitution, Perception, and Strength by <%= attrs %> each. Enchanted Armoire: Farrier Set (Item 3 of 3)", "shieldArmoireHorseshoeNotes": "Ayuda a proteger las patas de tus monturas con pezuñas con este calzado de hierro. Aumenta la Constitución, la Percepción y la Fuerza en <%= attrs %> cada uno. Armario Encantado: Conjunto de Herrero (Artículo 3 de 3)",
"shieldArmoireHandmadeCandlestickText": "Handmade Candlestick", "shieldArmoireHandmadeCandlestickText": "Candelabro Casero",
"shieldArmoireHandmadeCandlestickNotes": "Your fine wax wares provide light and warmth to grateful Habiticans! Increases Strength by <%= str %>. Enchanted Armoire: Candlestick Maker Set (Item 3 of 3).", "shieldArmoireHandmadeCandlestickNotes": "¡Tus finas mercancías de cera proporcionan luz y calidez a los agradecidos Habiticanos! Aumenta la Fuerza en <%= str %>. Armario Encantado: Conjunto de Fabricante de Candeleros (Artículo 3 de 3).",
"shieldArmoireWeaversShuttleText": "Weaver's Shuttle", "shieldArmoireWeaversShuttleText": "Lanzadera de Tejedor",
"shieldArmoireWeaversShuttleNotes": "This tool passes your weft thread through the warp to make cloth! Increases Intelligence by <%= int %> and Perception by <%= per %>. Enchanted Armoire: Weaver Set (Item 3 of 3).", "shieldArmoireWeaversShuttleNotes": "¡Esta herramienta pasa tu hilo de trama a través de la urdimbre para fabricar tela! Aumenta la Inteligencia en <%= int %> y la Percepción en <%= per %>. Armario Encantado: Conjunto de Tejedor (Artículo 3 de 3).",
"shieldArmoireShieldOfDiamondsText": "Crimson Jewel Shield", "shieldArmoireShieldOfDiamondsText": "Escudo de Joya Carmesí",
"shieldArmoireShieldOfDiamondsNotes": "This radiant shield not only provides protection, it empowers you with endurance! Increases Constitution by <%= con %>. Enchanted Armoire: Independent Item.", "shieldArmoireShieldOfDiamondsNotes": "¡Este radiante escudo no solo proporciona protección, sino que te fortalece con resistencia! Aumenta la Constitución en <%= con %>. Armario Encantado: Artículo Independiente.",
"shieldArmoireFlutteryFanText": "Flowery Fan", "shieldArmoireFlutteryFanText": "Ventilador Floreado",
"shieldArmoireFlutteryFanNotes": "On a hot day, there's nothing quite like a fancy fan to help you look and feel cool. Increases Constitution, Intelligence, and Perception by <%= attrs %> each. Enchanted Armoire: Independent Item.", "shieldArmoireFlutteryFanNotes": "En un día caluroso, no hay nada como un sofisticado ventilador que te ayude a verte y a sentirte fresco. Aumenta la Constitución, la Inteligencia y la Percepción en <%= attrs %> cada uno. Armario Encantado: Artículo Independiente.",
"back": "Accesorio en la Espalda", "back": "Accesorio en la Espalda",
"backCapitalized": "Back Accessory", "backCapitalized": "Accesorio en la Espalda",
"backBase0Text": "Sin Accesorio en la Espalda", "backBase0Text": "Sin Accesorio en la Espalda",
"backBase0Notes": "Sin Accesorio en la Espalda", "backBase0Notes": "Sin Accesorio en la Espalda",
"backMystery201402Text": "Alas doradas", "backMystery201402Text": "Alas doradas",
@@ -1312,24 +1312,24 @@
"backMystery201704Notes": "Estas relucientes alas te llevarán a todas partes, incluso a recónditos reinos gobernados por mágicas criaturas. No proporciona ningún beneficio. Artículo del suscriptor Abril 2017.", "backMystery201704Notes": "Estas relucientes alas te llevarán a todas partes, incluso a recónditos reinos gobernados por mágicas criaturas. No proporciona ningún beneficio. Artículo del suscriptor Abril 2017.",
"backMystery201706Text": "Bandera del Filibustero Andrajoso", "backMystery201706Text": "Bandera del Filibustero Andrajoso",
"backMystery201706Notes": "¡La visión de esta bandera con el blasón pirata de Jolly Roger llena de temor a tus Tareas Diarias y Pendientes! No proporciona ningún beneficio. Artículo del Suscriptor Junio 2017.", "backMystery201706Notes": "¡La visión de esta bandera con el blasón pirata de Jolly Roger llena de temor a tus Tareas Diarias y Pendientes! No proporciona ningún beneficio. Artículo del Suscriptor Junio 2017.",
"backMystery201709Text": "Stack o' Sorcery Books", "backMystery201709Text": "Pila de Libros de Brujería",
"backMystery201709Notes": "Learning magic takes a lot of reading, but you're sure to enjoy your studies! Confers no benefit. September 2017 Subscriber Item.", "backMystery201709Notes": "Aprender magia conlleva mucha lectura, ¡pero seguro que disfrutarás de tus estudios! Sin beneficios. Artículo del Suscriptor de septiembre del 2017.",
"backMystery201801Text": "Frost Sprite Wings", "backMystery201801Text": "Alas de Duendecillo de Hielo",
"backMystery201801Notes": "They may look as delicate as snowflakes, but these enchanted wings can carry you anywhere you wish! Confers no benefit. January 2018 Subscriber Item.", "backMystery201801Notes": "Puede que parezcan tan delicadas como copos de nieve, ¡pero estas alas encantadas pueden llevarte a cualquier parte que desees! Sin beneficios. Artículo del subscriptor de enero del 2018.",
"backSpecialWonderconRedText": "Capa del poder", "backSpecialWonderconRedText": "Capa del poder",
"backSpecialWonderconRedNotes": "Castañea con fuerza y belleza. No confiere beneficio. Artículo Edición Especial Convención.", "backSpecialWonderconRedNotes": "Castañea con fuerza y belleza. No confiere beneficio. Artículo Edición Especial Convención.",
"backSpecialWonderconBlackText": "Capa Sigilosa", "backSpecialWonderconBlackText": "Capa Sigilosa",
"backSpecialWonderconBlackNotes": "Hilada de sombras y suspiros. No otorga ningún beneficio. Artículo de Convención Edición especial", "backSpecialWonderconBlackNotes": "Hilada de sombras y suspiros. No otorga ningún beneficio. Artículo de Convención Edición especial",
"backSpecialTakeThisText": "Alas 'Take This'", "backSpecialTakeThisText": "Alas 'Take This'",
"backSpecialTakeThisNotes": "These wings were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.", "backSpecialTakeThisNotes": "Estas alas se consiguieron al participar en un Desafío patrocinado por \"Take This\". ¡Felicidades! Aumenta todas las Estadísticas en <%= attrs %>.",
"backSpecialSnowdriftVeilText": "Velo Derrapanieves", "backSpecialSnowdriftVeilText": "Velo Derrapanieves",
"backSpecialSnowdriftVeilNotes": "¡Este translúcido velo te hará parecer que estás rodeado por una elegante ráfaga de nieve! No proporciona ningún beneficio. ", "backSpecialSnowdriftVeilNotes": "¡Este translúcido velo te hará parecer que estás rodeado por una elegante ráfaga de nieve! No proporciona ningún beneficio. ",
"backSpecialAetherCloakText": "Aether Cloak", "backSpecialAetherCloakText": "Capa Etérea",
"backSpecialAetherCloakNotes": "This cloak once belonged to the Lost Masterclasser herself. Increases Perception by <%= per %>.", "backSpecialAetherCloakNotes": "Esta capa perteneció una vez a la mismísima \"Lost Masterclasser\". Aumenta la Percepción en <%= per %>.",
"backSpecialTurkeyTailBaseText": "Turkey Tail", "backSpecialTurkeyTailBaseText": "Cola de Pavo",
"backSpecialTurkeyTailBaseNotes": "Wear your noble Turkey Tail with pride while you celebrate! Confers no benefit.", "backSpecialTurkeyTailBaseNotes": "¡Viste tu honorable Cola de Pavo con orgullo mientras lo celebras! Sin beneficios.",
"body": "Accesorio para el cuerpo", "body": "Accesorio para el cuerpo",
"bodyCapitalized": "Body Accessory", "bodyCapitalized": "Accesorio para el Cuerpo",
"bodyBase0Text": "Sin accesorio en el cuerpo", "bodyBase0Text": "Sin accesorio en el cuerpo",
"bodyBase0Notes": "Sin accesorio en el cuerpo", "bodyBase0Notes": "Sin accesorio en el cuerpo",
"bodySpecialWonderconRedText": "Collar de rubí", "bodySpecialWonderconRedText": "Collar de rubí",
@@ -1339,9 +1339,9 @@
"bodySpecialWonderconBlackText": "Collar de ébano", "bodySpecialWonderconBlackText": "Collar de ébano",
"bodySpecialWonderconBlackNotes": "¡Un precioso collar de Ébano! No otorga ningún beneficio. Artículo de Congreso Edición Especial", "bodySpecialWonderconBlackNotes": "¡Un precioso collar de Ébano! No otorga ningún beneficio. Artículo de Congreso Edición Especial",
"bodySpecialTakeThisText": "Hombreras 'Take This'", "bodySpecialTakeThisText": "Hombreras 'Take This'",
"bodySpecialTakeThisNotes": "These pauldrons were earned by participating in a sponsored Challenge made by Take This. Congratulations! Increases all Stats by <%= attrs %>.", "bodySpecialTakeThisNotes": "Estas hombreras se consiguieron al participar en un Desafío patrocinado por \"Take This\". ¡Felicidades! Aumenta todas las Estadísticas en <%= attrs %>.",
"bodySpecialAetherAmuletText": "Aether Amulet", "bodySpecialAetherAmuletText": "Amuleto Etéreo",
"bodySpecialAetherAmuletNotes": "This amulet has a mysterious history. Increases Constitution and Strength by <%= attrs %> each.", "bodySpecialAetherAmuletNotes": "Este amuleto tiene una historia misteriosa. Aumenta la Constitución y la Fuerza en <%= attrs %> cada uno.",
"bodySpecialSummerMageText": "Poncho Reluciente", "bodySpecialSummerMageText": "Poncho Reluciente",
"bodySpecialSummerMageNotes": "Ni el agua salada ni el agua fresca pueden deslustrar este metálico poncho. No confiere ningún beneficio. Equipamiento de Primavera 2014, Edición Limitada.", "bodySpecialSummerMageNotes": "Ni el agua salada ni el agua fresca pueden deslustrar este metálico poncho. No confiere ningún beneficio. Equipamiento de Primavera 2014, Edición Limitada.",
"bodySpecialSummerHealerText": "Collar de coral", "bodySpecialSummerHealerText": "Collar de coral",
@@ -1358,10 +1358,10 @@
"bodyMystery201705Notes": "Estas alas plegadas no solo lucen elegantes: ¡te concederán la velocidad y agilidad de un grifo! No proporciona ningún beneficio. Artículo del suscriptor Mayo 2017.", "bodyMystery201705Notes": "Estas alas plegadas no solo lucen elegantes: ¡te concederán la velocidad y agilidad de un grifo! No proporciona ningún beneficio. Artículo del suscriptor Mayo 2017.",
"bodyMystery201706Text": "Capa de Corsario Raída", "bodyMystery201706Text": "Capa de Corsario Raída",
"bodyMystery201706Notes": "Esta capa tiene bolsillos secretos para esconder todo el oro que le robes a tus tareas. No proporciona ningún beneficio. Artículo del suscriptor Junio 2017.", "bodyMystery201706Notes": "Esta capa tiene bolsillos secretos para esconder todo el oro que le robes a tus tareas. No proporciona ningún beneficio. Artículo del suscriptor Junio 2017.",
"bodyMystery201711Text": "Carpet Rider Scarf", "bodyMystery201711Text": "Bufanda de Jinete de Alfombra",
"bodyMystery201711Notes": "This soft knitted scarf looks quite majestic blowing in the wind. Confers no benefit. November 2017 Subscriber Item.", "bodyMystery201711Notes": "Esta suave bufanda tejida luce bastante majestuosa an volar en el viento. Sin beneficios. Artículo del Suscriptor de noviembre del 2017.",
"bodyArmoireCozyScarfText": "Cozy Scarf", "bodyArmoireCozyScarfText": "Bufanda Cómoda",
"bodyArmoireCozyScarfNotes": "This fine scarf will keep you warm as you go about your wintry business. Confers no benefit.", "bodyArmoireCozyScarfNotes": "Esta bonita bufanda te mantendrá cálido mientras realizas tus trabajos invernales. Sin beneficios.",
"headAccessory": "Accesorio de Cabeza", "headAccessory": "Accesorio de Cabeza",
"headAccessoryCapitalized": "Accesorio para la cabeza", "headAccessoryCapitalized": "Accesorio para la cabeza",
"accessories": "Accesorios", "accessories": "Accesorios",
@@ -1426,12 +1426,12 @@
"headAccessoryMystery201502Notes": "¡Deja volar tu imaginación! No otorga ningún beneficio. Artículo de suscriptor de febrero 2015.", "headAccessoryMystery201502Notes": "¡Deja volar tu imaginación! No otorga ningún beneficio. Artículo de suscriptor de febrero 2015.",
"headAccessoryMystery201510Text": "Cuernos de Trasgo", "headAccessoryMystery201510Text": "Cuernos de Trasgo",
"headAccessoryMystery201510Notes": "Estos cuernos aterradores son ligeramente babosos. No otorgan ningún beneficio. Artículo de Suscriptor de Octubre 2015.", "headAccessoryMystery201510Notes": "Estos cuernos aterradores son ligeramente babosos. No otorgan ningún beneficio. Artículo de Suscriptor de Octubre 2015.",
"headAccessoryMystery201801Text": "Frost Sprite Antlers", "headAccessoryMystery201801Text": "Astas de Duendecillo de Hielo",
"headAccessoryMystery201801Notes": "These icy antlers shimmer with the glow of winter auroras. Confers no benefit. January 2018 Subscriber Item.", "headAccessoryMystery201801Notes": "Estas astas de hielo brillan con el resplandor de las auroras invernales. Sin beneficios. Artículo del Suscriptor de enero del 2018.",
"headAccessoryMystery301405Text": "Gafas para la Cabeza", "headAccessoryMystery301405Text": "Gafas para la Cabeza",
"headAccessoryMystery301405Notes": "\"Las gafas son para los ojos\" dijeron, \"Nadie quiere gafas que solo se puedan llevar en la cabeza\" dijeron. ¡Ja! ¡Demuéstrales que eso no es así! No confiere ningún beneficio. Artículo de suscriptor de agosto de 3015.", "headAccessoryMystery301405Notes": "\"Las gafas son para los ojos\" dijeron, \"Nadie quiere gafas que solo se puedan llevar en la cabeza\" dijeron. ¡Ja! ¡Demuéstrales que eso no es así! No confiere ningún beneficio. Artículo de suscriptor de agosto de 3015.",
"headAccessoryArmoireComicalArrowText": "Flecha Cómica", "headAccessoryArmoireComicalArrowText": "Flecha Cómica",
"headAccessoryArmoireComicalArrowNotes": "This whimsical item doesn't provide a Stat boost, but it sure is good for a laugh! Confers no benefit. Enchanted Armoire: Independent Item.", "headAccessoryArmoireComicalArrowNotes": "Este extravagante objeto no proporciona una mejora en las Estadísticas, ¡pero seguro que sirve para echarse unas risas! Sin beneficios. Armario Encantado: Artículo Independiente.",
"eyewear": "Gafas", "eyewear": "Gafas",
"eyewearCapitalized": "Gafas", "eyewearCapitalized": "Gafas",
"eyewearBase0Text": "Sin Gafas.", "eyewearBase0Text": "Sin Gafas.",
@@ -1476,5 +1476,5 @@
"eyewearMystery301703Notes": "Perfecto para un sofisticado baile de máscaras o para moverte sigilosamente entre cualquier muchedumbre bien vestida. No otorga beneficios. Artículo de Suscriptor de marzo de 3017.", "eyewearMystery301703Notes": "Perfecto para un sofisticado baile de máscaras o para moverte sigilosamente entre cualquier muchedumbre bien vestida. No otorga beneficios. Artículo de Suscriptor de marzo de 3017.",
"eyewearArmoirePlagueDoctorMaskText": "Máscara de médico de la peste negra", "eyewearArmoirePlagueDoctorMaskText": "Máscara de médico de la peste negra",
"eyewearArmoirePlagueDoctorMaskNotes": "La auténtica máscara de los médicos que combatieron la plaga de la procrastinación. No aporta ningún beneficio. Armario encantado: conjunto de médico de la plaga (artículo 2 de 3).", "eyewearArmoirePlagueDoctorMaskNotes": "La auténtica máscara de los médicos que combatieron la plaga de la procrastinación. No aporta ningún beneficio. Armario encantado: conjunto de médico de la plaga (artículo 2 de 3).",
"twoHandedItem": "Two-handed item." "twoHandedItem": "Objeto de dos manos."
} }

View File

@@ -167,8 +167,8 @@
"achievementBurnoutText": "¡Ayudó a derrotar al Burnout y restaurar los Espíritus del Cansancio durante el evento Fall Festival de 2015!", "achievementBurnoutText": "¡Ayudó a derrotar al Burnout y restaurar los Espíritus del Cansancio durante el evento Fall Festival de 2015!",
"achievementBewilder": "Salvador de Calavuelos", "achievementBewilder": "Salvador de Calavuelos",
"achievementBewilderText": "¡Ayudó a derrotar al Apa-bullador durante el Evento de Primavera de 2016!", "achievementBewilderText": "¡Ayudó a derrotar al Apa-bullador durante el Evento de Primavera de 2016!",
"achievementDysheartener": "Savior of the Shattered", "achievementDysheartener": "Salvador de los Destrozados",
"achievementDysheartenerText": "Helped defeat the Dysheartener during the 2018 Valentine's Event!", "achievementDysheartenerText": "¡Ayudó a derrotar al Dysheartener durante el Evento de San Valentin del 2018!",
"checkOutProgress": "Consultar mi progreso en Habitica", "checkOutProgress": "Consultar mi progreso en Habitica",
"cards": "Tarjetas ", "cards": "Tarjetas ",
"sentCardToUser": "Enviaste una tarjeta a <%= profileName %>", "sentCardToUser": "Enviaste una tarjeta a <%= profileName %>",

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