Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bde8b76da7 | |||
| 4235be4b43 | |||
| 396362d27e | |||
| 972efb1878 | |||
| 6c18d19d95 | |||
| 9b8bdb90d8 | |||
| a84ea8b1b7 | |||
| 67e750a81c | |||
| 7fe62a731b | |||
| bb6f465ac8 | |||
| a2a79e4607 | |||
| 5125cc5f59 | |||
| 5ba09c45df | |||
| 70dec611e3 | |||
| 2195464772 | |||
| b662f8bdff | |||
| ee1aa653f0 | |||
| 8d1b1ff794 | |||
| 70500d7c98 | |||
| 35849ebdd7 | |||
| 1332fd68b0 | |||
| f9a47b1420 | |||
| 07b3824c4c | |||
| 92fa6805eb | |||
| f64b34318f | |||
| fe61c0f29e | |||
| 5f0b957dc2 | |||
| 37650ca674 | |||
| b4dab2e13c | |||
| b827b17481 | |||
| 27ef187e66 | |||
| 9c9b67aa9d | |||
| 7cff331800 | |||
| e7bc505b88 |
@@ -20,7 +20,7 @@ RUN npm install -g gulp-cli mocha
|
||||
# Clone Habitica repo and install dependencies
|
||||
RUN mkdir -p /usr/src/habitrpg
|
||||
WORKDIR /usr/src/habitrpg
|
||||
RUN git clone --branch v4.29.8 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
|
||||
RUN git clone --branch v4.32.0 https://github.com/HabitRPG/habitica.git /usr/src/habitrpg
|
||||
RUN npm install
|
||||
RUN gulp build:prod --force
|
||||
|
||||
|
||||
@@ -112,5 +112,6 @@
|
||||
"CLOUDKARAFKA_USERNAME": "",
|
||||
"CLOUDKARAFKA_PASSWORD": "",
|
||||
"CLOUDKARAFKA_TOPIC_PREFIX": ""
|
||||
}
|
||||
},
|
||||
"STACK_IMPACT_KEY": "aaaabbbbccccddddeeeeffffgggg111100002222"
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ let improveRepl = (context) => {
|
||||
const mongooseOptions = !isProd ? {} : {
|
||||
keepAlive: 1,
|
||||
connectTimeoutMS: 30000,
|
||||
useMongoClient: true,
|
||||
};
|
||||
mongoose.connect(
|
||||
nconf.get('NODE_DB_URI'),
|
||||
|
||||
@@ -1,26 +1,21 @@
|
||||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.30.0",
|
||||
"version": "4.32.1",
|
||||
"main": "./website/server/index.js",
|
||||
"greenkeeper": {
|
||||
"ignore": [
|
||||
"mongoose"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@slack/client": "^3.8.1",
|
||||
"accepts": "^1.3.2",
|
||||
"accepts": "^1.3.5",
|
||||
"amazon-payments": "^0.2.6",
|
||||
"amplitude": "^3.5.0",
|
||||
"apidoc": "^0.17.5",
|
||||
"autoprefixer": "^8.0.0",
|
||||
"aws-sdk": "^2.200.0",
|
||||
"autoprefixer": "^8.1.0",
|
||||
"aws-sdk": "^2.209.0",
|
||||
"axios": "^0.18.0",
|
||||
"axios-progress-bar": "^1.1.8",
|
||||
"babel-core": "^6.0.0",
|
||||
"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-dynamic-import": "^6.18.0",
|
||||
"babel-plugin-transform-async-to-module-method": "^6.8.0",
|
||||
@@ -34,21 +29,21 @@
|
||||
"bluebird": "^3.3.5",
|
||||
"body-parser": "^1.15.0",
|
||||
"bootstrap": "^4.0.0",
|
||||
"bootstrap-vue": "^2.0.0-rc.1",
|
||||
"bootstrap-vue": "^2.0.0-rc.2",
|
||||
"compression": "^1.7.2",
|
||||
"cookie-session": "^1.2.0",
|
||||
"coupon-code": "^0.4.5",
|
||||
"cross-env": "^5.1.3",
|
||||
"cross-env": "^5.1.4",
|
||||
"css-loader": "^0.28.0",
|
||||
"csv-stringify": "^2.0.4",
|
||||
"cwait": "^1.1.1",
|
||||
"domain-middleware": "~0.1.0",
|
||||
"express": "^4.16.2",
|
||||
"express": "^4.16.3",
|
||||
"express-basic-auth": "^1.1.4",
|
||||
"express-validator": "^5.0.1",
|
||||
"express-validator": "^5.0.3",
|
||||
"extract-text-webpack-plugin": "^3.0.2",
|
||||
"glob": "^7.1.2",
|
||||
"got": "^8.2.0",
|
||||
"got": "^8.3.0",
|
||||
"gulp": "^4.0.0",
|
||||
"gulp-babel": "^7.0.1",
|
||||
"gulp-imagemin": "^4.1.0",
|
||||
@@ -58,22 +53,21 @@
|
||||
"hellojs": "^1.15.1",
|
||||
"html-webpack-plugin": "^2.8.1",
|
||||
"image-size": "^0.6.2",
|
||||
"in-app-purchase": "^1.1.6",
|
||||
"in-app-purchase": "^1.8.9",
|
||||
"intro.js": "^2.6.0",
|
||||
"jquery": ">=3.0.0",
|
||||
"js2xmlparser": "^3.0.0",
|
||||
"lodash": "^4.17.4",
|
||||
"merge-stream": "^1.0.0",
|
||||
"method-override": "^2.3.5",
|
||||
"moment": "^2.13.0",
|
||||
"moment": "^2.21.0",
|
||||
"moment-recur": "^1.0.7",
|
||||
"mongoose": "^4.13.11",
|
||||
"mongoose": "^5.0.10",
|
||||
"morgan": "^1.7.0",
|
||||
"nconf": "^0.10.0",
|
||||
"node-gcm": "^0.14.4",
|
||||
"node-rdkafka": "^2.2.3",
|
||||
"node-sass": "^4.5.0",
|
||||
"nodemailer": "^4.5.0",
|
||||
"node-sass": "^4.8.2",
|
||||
"nodemailer": "^4.6.3",
|
||||
"ora": "^2.0.0",
|
||||
"pageres": "^4.1.1",
|
||||
"passport": "^0.4.0",
|
||||
@@ -81,21 +75,21 @@
|
||||
"passport-google-oauth20": "1.0.0",
|
||||
"paypal-ipn": "3.0.0",
|
||||
"paypal-rest-sdk": "^1.8.1",
|
||||
"popper.js": "^1.13.0",
|
||||
"popper.js": "^1.14.1",
|
||||
"postcss-easy-import": "^3.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",
|
||||
"pusher": "^1.3.0",
|
||||
"rimraf": "^2.4.3",
|
||||
"sass-loader": "^6.0.2",
|
||||
"sass-loader": "^6.0.7",
|
||||
"shelljs": "^0.8.1",
|
||||
"stackimpact": "^1.2.1",
|
||||
"stripe": "^5.5.0",
|
||||
"superagent": "^3.4.3",
|
||||
"svg-inline-loader": "^0.8.0",
|
||||
"svg-url-loader": "^2.0.2",
|
||||
"svgo": "^1.0.4",
|
||||
"svg-url-loader": "^2.3.2",
|
||||
"svgo": "^1.0.5",
|
||||
"svgo-loader": "^2.1.0",
|
||||
"universal-analytics": "^0.4.16",
|
||||
"url-loader": "^0.6.2",
|
||||
@@ -103,17 +97,17 @@
|
||||
"uuid": "^3.0.1",
|
||||
"validator": "^9.4.1",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"vue": "^2.5.2",
|
||||
"vue-loader": "^14.1.1",
|
||||
"vue": "^2.5.16",
|
||||
"vue-loader": "^14.2.1",
|
||||
"vue-mugen-scroll": "^0.2.1",
|
||||
"vue-router": "^3.0.0",
|
||||
"vue-style-loader": "^4.0.2",
|
||||
"vue-template-compiler": "^2.5.2",
|
||||
"vue-template-compiler": "^2.5.16",
|
||||
"vuedraggable": "^2.15.0",
|
||||
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#5d237615463a84a23dd6f3f77c6ab577d68593ec",
|
||||
"webpack": "^3.11.0",
|
||||
"webpack-merge": "^4.0.0",
|
||||
"winston": "^2.1.0",
|
||||
"winston": "^2.4.1",
|
||||
"winston-loggly-bulk": "^2.0.2",
|
||||
"xml2js": "^0.4.4"
|
||||
},
|
||||
@@ -147,20 +141,20 @@
|
||||
"apidoc": "gulp apidoc"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-plugin-istanbul": "^4.0.0",
|
||||
"babel-plugin-istanbul": "^4.1.6",
|
||||
"chai": "^4.1.2",
|
||||
"chai-as-promised": "^7.1.1",
|
||||
"chalk": "^2.3.1",
|
||||
"chromedriver": "^2.27.2",
|
||||
"chalk": "^2.3.2",
|
||||
"chromedriver": "^2.36.0",
|
||||
"connect-history-api-fallback": "^1.1.0",
|
||||
"coveralls": "^3.0.0",
|
||||
"cross-spawn": "^6.0.4",
|
||||
"eslint": "^4.18.1",
|
||||
"cross-spawn": "^6.0.5",
|
||||
"eslint": "^4.18.2",
|
||||
"eslint-config-habitrpg": "^4.0.0",
|
||||
"eslint-friendly-formatter": "^3.0.0",
|
||||
"eslint-loader": "^1.3.0",
|
||||
"eslint-plugin-html": "^4.0.2",
|
||||
"eslint-plugin-mocha": "^4.7.0",
|
||||
"eslint-plugin-mocha": "^4.12.1",
|
||||
"eventsource-polyfill": "^0.9.6",
|
||||
"expect.js": "^0.3.1",
|
||||
"http-proxy-middleware": "^0.17.0",
|
||||
@@ -176,19 +170,22 @@
|
||||
"karma-sinon-stub-promise": "^1.0.0",
|
||||
"karma-sourcemap-loader": "^0.3.7",
|
||||
"karma-spec-reporter": "0.0.32",
|
||||
"karma-webpack": "^2.0.2",
|
||||
"karma-webpack": "^2.0.13",
|
||||
"lcov-result-merger": "^2.0.0",
|
||||
"mocha": "^5.0.1",
|
||||
"mocha": "^5.0.4",
|
||||
"monk": "^6.0.5",
|
||||
"nightwatch": "^0.9.12",
|
||||
"puppeteer": "^1.1.0",
|
||||
"nightwatch": "^0.9.20",
|
||||
"puppeteer": "^1.1.1",
|
||||
"require-again": "^2.0.0",
|
||||
"selenium-server": "^3.9.1",
|
||||
"sinon": "^4.3.0",
|
||||
"selenium-server": "^3.11.0",
|
||||
"sinon": "^4.4.5",
|
||||
"sinon-chai": "^2.8.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-hot-middleware": "^2.6.1"
|
||||
"webpack-hot-middleware": "^2.21.2"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"node-rdkafka": "^2.3.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,4 +32,11 @@ describe('GET /world-state', () => {
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('returns a string representing the current season for NPC sprites', async () => {
|
||||
const res = await requester().get('/world-state');
|
||||
|
||||
expect(res).to.have.nested.property('npcImageSuffix');
|
||||
expect(res.npcImageSuffix).to.be.a('string');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -78,6 +78,17 @@ describe('shared.ops.buyGear', () => {
|
||||
expect(user.items.gear.equipped).to.have.property('armor', 'armor_warrior_1');
|
||||
});
|
||||
|
||||
it('updates the pinnedItems to the next item in the set if one exists', () => {
|
||||
user.stats.gp = 31;
|
||||
|
||||
buyGear(user, {params: {key: 'armor_warrior_1'}});
|
||||
|
||||
expect(user.pinnedItems).to.deep.include({
|
||||
type: 'marketGear',
|
||||
path: 'gear.flat.armor_warrior_2',
|
||||
});
|
||||
});
|
||||
|
||||
it('buyGears equipment but does not auto-equip', () => {
|
||||
user.stats.gp = 31;
|
||||
user.preferences.autoEquip = false;
|
||||
|
||||
@@ -41,6 +41,22 @@ describe('shared.ops.releaseBoth', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('returns an error when user does not have all pets', (done) => {
|
||||
const petKeys = Object.keys(user.items.pets);
|
||||
delete user.items.pets[petKeys[0]];
|
||||
|
||||
const mountKeys = Object.keys(user.items.mounts);
|
||||
delete user.items.mounts[mountKeys[0]];
|
||||
|
||||
try {
|
||||
releaseBoth(user);
|
||||
} catch (err) {
|
||||
expect(err).to.be.an.instanceof(NotAuthorized);
|
||||
expect(err.message).to.equal(i18n.t('notEnoughPetsMounts'));
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
it('grants triad bingo with gems', () => {
|
||||
let message = releaseBoth(user)[1];
|
||||
|
||||
@@ -79,26 +95,33 @@ describe('shared.ops.releaseBoth', () => {
|
||||
it('does not increment beastMasterCount if any pet is level 0 (released)', () => {
|
||||
let beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
user.items.pets[animal] = 0;
|
||||
|
||||
releaseBoth(user);
|
||||
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseBoth(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('does not increment beastMasterCount if any pet is missing (null)', () => {
|
||||
let beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
user.items.pets[animal] = null;
|
||||
releaseBoth(user);
|
||||
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseBoth(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('does not increment beastMasterCount if any pet is missing (undefined)', () => {
|
||||
let beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
delete user.items.pets[animal];
|
||||
releaseBoth(user);
|
||||
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseBoth(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('releases mounts', () => {
|
||||
@@ -112,18 +135,22 @@ describe('shared.ops.releaseBoth', () => {
|
||||
let mountMasterCountBeforeRelease = user.achievements.mountMasterCount;
|
||||
user.items.mounts[animal] = null;
|
||||
|
||||
releaseBoth(user);
|
||||
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseBoth(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('does not increase mountMasterCount achievement if mount is missing (undefined)', () => {
|
||||
let mountMasterCountBeforeRelease = user.achievements.mountMasterCount;
|
||||
delete user.items.mounts[animal];
|
||||
|
||||
releaseBoth(user);
|
||||
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseBoth(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('removes drop currentPet', () => {
|
||||
|
||||
@@ -35,6 +35,19 @@ describe('shared.ops.releaseMounts', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('returns an error when user does not have all pets', (done) => {
|
||||
const mountsKeys = Object.keys(user.items.mounts);
|
||||
delete user.items.mounts[mountsKeys[0]];
|
||||
|
||||
try {
|
||||
releaseMounts(user);
|
||||
} catch (err) {
|
||||
expect(err).to.be.an.instanceof(NotAuthorized);
|
||||
expect(err.message).to.equal(i18n.t('notEnoughMounts'));
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
it('releases mounts', () => {
|
||||
let message = releaseMounts(user)[1];
|
||||
|
||||
@@ -71,18 +84,22 @@ describe('shared.ops.releaseMounts', () => {
|
||||
let mountMasterCountBeforeRelease = user.achievements.mountMasterCount;
|
||||
user.items.mounts[animal] = null;
|
||||
|
||||
releaseMounts(user);
|
||||
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseMounts(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('does not increase mountMasterCount achievement if mount is missing (undefined)', () => {
|
||||
let mountMasterCountBeforeRelease = user.achievements.mountMasterCount;
|
||||
delete user.items.mounts[animal];
|
||||
|
||||
releaseMounts(user);
|
||||
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
try {
|
||||
releaseMounts(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.mountMasterCount).to.equal(mountMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('subtracts gems from balance', () => {
|
||||
|
||||
@@ -35,6 +35,19 @@ describe('shared.ops.releasePets', () => {
|
||||
}
|
||||
});
|
||||
|
||||
it('returns an error when user does not have all pets', (done) => {
|
||||
const petKeys = Object.keys(user.items.pets);
|
||||
delete user.items.pets[petKeys[0]];
|
||||
|
||||
try {
|
||||
releasePets(user);
|
||||
} catch (err) {
|
||||
expect(err).to.be.an.instanceof(NotAuthorized);
|
||||
expect(err.message).to.equal(i18n.t('notEnoughPets'));
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
it('releases pets', () => {
|
||||
let message = releasePets(user)[1];
|
||||
|
||||
@@ -75,27 +88,35 @@ describe('shared.ops.releasePets', () => {
|
||||
});
|
||||
|
||||
it('does not increment beastMasterCount if any pet is level 0 (released)', () => {
|
||||
let beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
|
||||
const beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
user.items.pets[animal] = 0;
|
||||
releasePets(user);
|
||||
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
try {
|
||||
releasePets(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('does not increment beastMasterCount if any pet is missing (null)', () => {
|
||||
let beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
user.items.pets[animal] = null;
|
||||
releasePets(user);
|
||||
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
try {
|
||||
releasePets(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
|
||||
it('does not increment beastMasterCount if any pet is missing (undefined)', () => {
|
||||
let beastMasterCountBeforeRelease = user.achievements.beastMasterCount;
|
||||
delete user.items.pets[animal];
|
||||
releasePets(user);
|
||||
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
try {
|
||||
releasePets(user);
|
||||
} catch (e) {
|
||||
expect(user.achievements.beastMasterCount).to.equal(beastMasterCountBeforeRelease);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -323,53 +323,7 @@ export default {
|
||||
this.hideLoadingScreen();
|
||||
}
|
||||
|
||||
// Manage modals
|
||||
this.$root.$on('bv::show::modal', (modalId, data = {}) => {
|
||||
if (data.fromRoot) return;
|
||||
|
||||
// Track opening of gems modal unless it's been already tracked
|
||||
// For example the gems button in the menu already tracks the event by itself
|
||||
if (modalId === 'buy-gems' && data.alreadyTracked !== true) {
|
||||
Analytics.track({
|
||||
hitType: 'event',
|
||||
eventCategory: 'button',
|
||||
eventAction: 'click',
|
||||
eventLabel: 'Gems > Wallet',
|
||||
});
|
||||
}
|
||||
|
||||
// Get last modal on stack and hide
|
||||
let modalStackLength = this.$store.state.modalStack.length;
|
||||
let modalOnTop = this.$store.state.modalStack[modalStackLength - 1];
|
||||
|
||||
// Add new modal to the stack
|
||||
this.$store.state.modalStack.push(modalId);
|
||||
|
||||
// Hide the previous top modal
|
||||
if (modalOnTop) this.$root.$emit('bv::hide::modal', modalOnTop, {fromRoot: true});
|
||||
});
|
||||
|
||||
// @TODO: This part is hacky and could be solved with two options:
|
||||
// 1 - Find a way to pass fromRoot to hidden
|
||||
// 2 - Enforce that all modals use the hide::modal event
|
||||
this.$root.$on('bv::modal::hidden', (bvEvent) => {
|
||||
const modalId = bvEvent.target.id;
|
||||
|
||||
let modalStackLength = this.$store.state.modalStack.length;
|
||||
let modalSecondToTop = this.$store.state.modalStack[modalStackLength - 2];
|
||||
// Don't remove modal if hid was called from main app
|
||||
// @TODO: I'd reather use this, but I don't know how to pass data to hidden event
|
||||
// if (data && data.fromRoot) return;
|
||||
if (modalId === modalSecondToTop) return;
|
||||
|
||||
// Remove modal from stack
|
||||
this.$store.state.modalStack.pop();
|
||||
|
||||
// Recalculate and show the last modal if there is one
|
||||
modalStackLength = this.$store.state.modalStack.length;
|
||||
let modalOnTop = this.$store.state.modalStack[modalStackLength - 1];
|
||||
if (modalOnTop) this.$root.$emit('bv::show::modal', modalOnTop, {fromRoot: true});
|
||||
});
|
||||
this.initializeModalStack();
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.$root.$off('playSound');
|
||||
@@ -384,6 +338,80 @@ export default {
|
||||
if (loadingScreen) document.body.removeChild(loadingScreen);
|
||||
},
|
||||
methods: {
|
||||
initializeModalStack () {
|
||||
// Manage modals
|
||||
this.$root.$on('bv::show::modal', (modalId, data = {}) => {
|
||||
if (data.fromRoot) return;
|
||||
const modalStack = this.$store.state.modalStack;
|
||||
|
||||
this.trackGemPurchase(modalId, data);
|
||||
|
||||
// Add new modal to the stack
|
||||
const prev = modalStack[modalStack.length - 1];
|
||||
const prevId = prev ? prev.modalId : undefined;
|
||||
modalStack.push({modalId, prev: prevId});
|
||||
});
|
||||
|
||||
this.$root.$on('bv::modal::hidden', (bvEvent) => {
|
||||
const modalId = bvEvent.target && bvEvent.target.id;
|
||||
if (!modalId) return;
|
||||
|
||||
const modalStack = this.$store.state.modalStack;
|
||||
|
||||
const modalOnTop = modalStack[modalStack.length - 1];
|
||||
|
||||
// Check for invalid modal. Event systems can send multiples
|
||||
if (!this.validStack(modalStack)) return;
|
||||
|
||||
// If we are moving forward
|
||||
if (modalOnTop && modalOnTop.prev === modalId) return;
|
||||
|
||||
// Remove modal from stack
|
||||
this.$store.state.modalStack.pop();
|
||||
|
||||
// Get previous modal
|
||||
const modalBefore = modalOnTop ? modalOnTop.prev : undefined;
|
||||
if (modalBefore) this.$root.$emit('bv::show::modal', modalBefore, {fromRoot: true});
|
||||
});
|
||||
},
|
||||
validStack (modalStack) {
|
||||
const modalsThatCanShowTwice = ['profile'];
|
||||
const modalCount = {};
|
||||
const prevAndCurrent = 2;
|
||||
|
||||
for (let index in modalStack) {
|
||||
const current = modalStack[index];
|
||||
|
||||
if (!modalCount[current.modalId]) modalCount[current.modalId] = 0;
|
||||
modalCount[current.modalId] += 1;
|
||||
if (modalCount[current.modalId] > prevAndCurrent && modalsThatCanShowTwice.indexOf(current.modalId) === -1) {
|
||||
this.$store.state.modalStack = [];
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!current.prev) continue; // eslint-disable-line
|
||||
if (!modalCount[current.prev]) modalCount[current.prev] = 0;
|
||||
modalCount[current.prev] += 1;
|
||||
if (modalCount[current.prev] > prevAndCurrent && modalsThatCanShowTwice.indexOf(current.prev) === -1) {
|
||||
this.$store.state.modalStack = [];
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
trackGemPurchase (modalId, data) {
|
||||
// Track opening of gems modal unless it's been already tracked
|
||||
// For example the gems button in the menu already tracks the event by itself
|
||||
if (modalId === 'buy-gems' && data.alreadyTracked !== true) {
|
||||
Analytics.track({
|
||||
hitType: 'event',
|
||||
eventCategory: 'button',
|
||||
eventAction: 'click',
|
||||
eventLabel: 'Gems > Wallet',
|
||||
});
|
||||
}
|
||||
},
|
||||
resetItemToBuy ($event) {
|
||||
// @TODO: Do we need this? I think selecting a new item
|
||||
// overwrites. @negue might know
|
||||
|
||||
@@ -1,78 +1,60 @@
|
||||
.promo_armoire_background_201803 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -735px;
|
||||
background-position: -142px -327px;
|
||||
width: 141px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_cupid_potions {
|
||||
.promo_egg_hunt {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -284px -735px;
|
||||
width: 138px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_dysheartener {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -441px 0px;
|
||||
width: 730px;
|
||||
height: 170px;
|
||||
}
|
||||
.promo_hippogriff {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -1172px -587px;
|
||||
width: 105px;
|
||||
height: 105px;
|
||||
background-position: -814px 0px;
|
||||
width: 354px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_hugabug_bundle {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -1172px 0px;
|
||||
background-position: -583px -408px;
|
||||
width: 141px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_mystery_201802 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -327px;
|
||||
background-position: -441px 0px;
|
||||
width: 372px;
|
||||
height: 196px;
|
||||
}
|
||||
.promo_rainbow_potions {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -142px -735px;
|
||||
background-position: -441px -408px;
|
||||
width: 141px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_seasonalshop_broken {
|
||||
.promo_seasonalshop_spring {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -751px -171px;
|
||||
width: 198px;
|
||||
height: 147px;
|
||||
background-position: -814px -148px;
|
||||
width: 162px;
|
||||
height: 138px;
|
||||
}
|
||||
.promo_spring_fling_2018 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -327px;
|
||||
width: 141px;
|
||||
height: 588px;
|
||||
}
|
||||
.promo_take_this {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -950px -171px;
|
||||
background-position: -977px -148px;
|
||||
width: 114px;
|
||||
height: 87px;
|
||||
}
|
||||
.promo_valentines {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -441px -171px;
|
||||
width: 309px;
|
||||
height: 147px;
|
||||
}
|
||||
.scene_achievement {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: 0px -524px;
|
||||
background-position: -441px -197px;
|
||||
width: 339px;
|
||||
height: 210px;
|
||||
}
|
||||
.scene_coding {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -373px -327px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.scene_sweeping {
|
||||
background-image: url('~assets/images/sprites/spritesmith-largeSprites-0.png');
|
||||
background-position: -1172px -442px;
|
||||
background-position: -814px -287px;
|
||||
width: 138px;
|
||||
height: 144px;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,54 @@
|
||||
.quest_TEMPLATE_FOR_MISSING_IMAGE {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -251px -1519px;
|
||||
background-position: -832px -1519px;
|
||||
width: 221px;
|
||||
height: 39px;
|
||||
}
|
||||
.quest_atom3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -211px -1519px;
|
||||
width: 216px;
|
||||
height: 180px;
|
||||
}
|
||||
.quest_axolotl {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1320px -660px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_badger {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px -892px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_basilist {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -642px -1519px;
|
||||
width: 189px;
|
||||
height: 141px;
|
||||
}
|
||||
.quest_beetle {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1322px -1112px;
|
||||
width: 204px;
|
||||
height: 201px;
|
||||
}
|
||||
.quest_bunny {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -1519px;
|
||||
width: 210px;
|
||||
height: 186px;
|
||||
}
|
||||
.quest_butterfly {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px -232px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_cheetah {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px -672px;
|
||||
background-position: -660px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
@@ -18,7 +60,7 @@
|
||||
}
|
||||
.quest_dilatory {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -232px;
|
||||
background-position: -220px -452px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
@@ -30,55 +72,55 @@
|
||||
}
|
||||
.quest_dilatoryDistress2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -1023px;
|
||||
background-position: -1757px -573px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.quest_dilatoryDistress3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -660px 0px;
|
||||
background-position: -880px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_dilatory_derby {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px 0px;
|
||||
background-position: 0px -452px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_dustbunnies {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -660px -220px;
|
||||
background-position: -880px -220px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_egg {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -362px;
|
||||
background-position: -1757px -214px;
|
||||
width: 165px;
|
||||
height: 207px;
|
||||
}
|
||||
.quest_evilsanta {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -1174px;
|
||||
background-position: -1757px -1026px;
|
||||
width: 118px;
|
||||
height: 131px;
|
||||
}
|
||||
.quest_evilsanta2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px -452px;
|
||||
background-position: -220px -672px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_falcon {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -660px -452px;
|
||||
background-position: -440px -672px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_ferret {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -880px 0px;
|
||||
background-position: -660px -672px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
@@ -90,19 +132,19 @@
|
||||
}
|
||||
.quest_ghost_stag {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -880px -440px;
|
||||
background-position: -1100px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_goldenknight1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -672px;
|
||||
background-position: -1100px -220px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_goldenknight2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1311px -1332px;
|
||||
background-position: -1345px -1332px;
|
||||
width: 250px;
|
||||
height: 150px;
|
||||
}
|
||||
@@ -120,13 +162,13 @@
|
||||
}
|
||||
.quest_guineapig {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -880px -672px;
|
||||
background-position: -220px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_harpy {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1100px 0px;
|
||||
background-position: -440px -892px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
@@ -138,103 +180,103 @@
|
||||
}
|
||||
.quest_hippo {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1100px -440px;
|
||||
background-position: -880px -892px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_horse {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1100px -660px;
|
||||
background-position: -1100px -892px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_kraken {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -877px -1332px;
|
||||
background-position: -443px -1332px;
|
||||
width: 216px;
|
||||
height: 177px;
|
||||
}
|
||||
.quest_lostMasterclasser1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px -892px;
|
||||
background-position: -1320px -220px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_lostMasterclasser2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px -892px;
|
||||
background-position: -1320px -440px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_lostMasterclasser3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -660px -892px;
|
||||
background-position: -1100px -660px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_mayhemMistiflying1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -570px;
|
||||
background-position: -1757px -875px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.quest_mayhemMistiflying2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1100px -892px;
|
||||
background-position: 0px -1112px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_mayhemMistiflying3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1320px 0px;
|
||||
background-position: -220px -1112px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_monkey {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1320px -220px;
|
||||
background-position: -440px -1112px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_moon1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1540px -651px;
|
||||
background-position: -1540px 0px;
|
||||
width: 216px;
|
||||
height: 216px;
|
||||
}
|
||||
.quest_moon2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px 0px;
|
||||
background-position: -660px -892px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_moon3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1320px -880px;
|
||||
background-position: -880px -672px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_moonstone1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -1112px;
|
||||
background-position: 0px -672px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_moonstone2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px -1112px;
|
||||
background-position: -440px -452px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_moonstone3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px -1112px;
|
||||
background-position: -660px -220px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_nudibranch {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1540px -434px;
|
||||
background-position: -1540px -868px;
|
||||
width: 216px;
|
||||
height: 216px;
|
||||
}
|
||||
@@ -246,67 +288,67 @@
|
||||
}
|
||||
.quest_owl {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1320px -660px;
|
||||
background-position: -220px -232px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_peacock {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1540px -217px;
|
||||
background-position: -1540px -434px;
|
||||
width: 216px;
|
||||
height: 216px;
|
||||
}
|
||||
.quest_penguin {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -178px;
|
||||
background-position: 0px -1706px;
|
||||
width: 190px;
|
||||
height: 183px;
|
||||
}
|
||||
.quest_pterodactyl {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1320px -440px;
|
||||
background-position: 0px -232px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_rat {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -880px -892px;
|
||||
background-position: -660px -1112px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_rock {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1540px -868px;
|
||||
background-position: -1540px -217px;
|
||||
width: 216px;
|
||||
height: 216px;
|
||||
}
|
||||
.quest_rooster {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -1670px;
|
||||
background-position: -428px -1519px;
|
||||
width: 213px;
|
||||
height: 174px;
|
||||
}
|
||||
.quest_sabretooth {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -892px;
|
||||
background-position: -1320px -880px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_sheep {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1100px -220px;
|
||||
background-position: -1320px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_slime {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -660px -672px;
|
||||
background-position: 0px -892px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_sloth {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px -672px;
|
||||
background-position: -1100px -440px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
@@ -318,85 +360,49 @@
|
||||
}
|
||||
.quest_snake {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1322px -1112px;
|
||||
background-position: -877px -1332px;
|
||||
width: 216px;
|
||||
height: 177px;
|
||||
}
|
||||
.quest_spider {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -1519px;
|
||||
background-position: -1094px -1332px;
|
||||
width: 250px;
|
||||
height: 150px;
|
||||
}
|
||||
.quest_stoikalmCalamity1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -721px;
|
||||
background-position: -1757px -422px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.quest_stoikalmCalamity2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -880px -220px;
|
||||
background-position: -880px -440px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_stoikalmCalamity3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px -452px;
|
||||
background-position: -660px -452px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_taskwoodsTerror1 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px -872px;
|
||||
background-position: -1757px -724px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.quest_taskwoodsTerror2 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1540px 0px;
|
||||
background-position: -1540px -651px;
|
||||
width: 216px;
|
||||
height: 216px;
|
||||
}
|
||||
.quest_taskwoodsTerror3 {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: 0px -452px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_treeling {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -443px -1332px;
|
||||
width: 216px;
|
||||
height: 177px;
|
||||
}
|
||||
.quest_trex {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1932px 0px;
|
||||
width: 204px;
|
||||
height: 177px;
|
||||
}
|
||||
.quest_trex_undead {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -1094px -1332px;
|
||||
width: 216px;
|
||||
height: 177px;
|
||||
}
|
||||
.quest_triceratops {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -440px -232px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_turtle {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -220px -232px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
.quest_unicorn {
|
||||
background-image: url('~assets/images/sprites/spritesmith-main-10.png');
|
||||
background-position: -660px -1112px;
|
||||
background-position: -440px 0px;
|
||||
width: 219px;
|
||||
height: 219px;
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 193 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 441 KiB After Width: | Height: | Size: 423 KiB |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 157 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 155 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 163 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 158 KiB |
@@ -1,9 +1,9 @@
|
||||
// this variables are used to determine which shop npc/backgrounds should be loaded
|
||||
// possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines
|
||||
// possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines, spring
|
||||
// more to be added on future seasons
|
||||
|
||||
$npc_market_flavor: 'normal';
|
||||
$npc_quests_flavor: 'normal';
|
||||
$npc_seasonal_flavor: 'normal';
|
||||
$npc_timetravelers_flavor: 'normal';
|
||||
$npc_tavern_flavor: 'normal';
|
||||
$npc_market_flavor: 'spring';
|
||||
$npc_quests_flavor: 'spring';
|
||||
$npc_seasonal_flavor: 'spring';
|
||||
$npc_timetravelers_flavor: 'spring';
|
||||
$npc_tavern_flavor: 'spring';
|
||||
|
||||
@@ -144,7 +144,7 @@ export default {
|
||||
healer: healerIcon,
|
||||
wizard: wizardIcon,
|
||||
}),
|
||||
selectedClass: '',
|
||||
selectedClass: 'warrior',
|
||||
};
|
||||
},
|
||||
directives: {
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
span(:class="member.preferences.size + '_shirt_' + member.preferences.shirt")
|
||||
span.head_0
|
||||
span(:class="member.preferences.size + '_' + getGearClass('armor')")
|
||||
span.head_0
|
||||
span(:class="getGearClass('back_collar')")
|
||||
span(:class="getGearClass('body')")
|
||||
template(v-for="type in ['bangs', 'base', 'mustache', 'beard']")
|
||||
|
||||
@@ -1,18 +1,65 @@
|
||||
<template lang="pug">
|
||||
b-modal#report-flag(:title='$t("abuseFlagModalHeading")', size='lg', :hide-footer='true')
|
||||
.modal-header
|
||||
h4(v-html="$t('abuseFlagModalHeading', reportData)")
|
||||
b-modal#report-flag(:title='$t("abuseFlagModalHeading")', size='md', :hide-footer='true')
|
||||
.modal-body
|
||||
strong(v-html="$t('abuseFlagModalHeading', reportData)")
|
||||
blockquote
|
||||
div(v-markdown='abuseObject.text')
|
||||
p(v-html="$t('abuseFlagModalBody', abuseFlagModalBody)")
|
||||
.modal-footer
|
||||
div
|
||||
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')
|
||||
| Reset Flag Count
|
||||
button.btn.btn-primary(@click='close()') {{ $t('cancel') }}
|
||||
button.btn.btn-danger(@click='reportAbuse()') {{ $t('abuseFlagModalButton') }}
|
||||
a.cancel-link(@click.prevent='close()') {{ $t('cancel') }}
|
||||
button.btn.btn-danger(@click='reportAbuse()') {{ $t('report') }}
|
||||
</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>
|
||||
import { mapState } from 'client/libs/store';
|
||||
import notifications from 'client/mixins/notifications';
|
||||
@@ -45,6 +92,7 @@ export default {
|
||||
abuseFlagModalBody,
|
||||
abuseObject: '',
|
||||
groupId: '',
|
||||
reportComment: '',
|
||||
};
|
||||
},
|
||||
created () {
|
||||
@@ -64,9 +112,11 @@ export default {
|
||||
},
|
||||
async reportAbuse () {
|
||||
this.notify('Thank you for reporting this violation. The moderators have been notified.');
|
||||
|
||||
await this.$store.dispatch('chat:flag', {
|
||||
groupId: this.groupId,
|
||||
chatId: this.abuseObject.id,
|
||||
comment: this.reportComment,
|
||||
});
|
||||
|
||||
this.close();
|
||||
|
||||
@@ -41,7 +41,7 @@ div
|
||||
.grey-progress-bar
|
||||
.collect-progress-bar(:style="{width: (group.quest.progress.collect[key] / value.count) * 100 + '%'}")
|
||||
strong {{group.quest.progress.collect[key]}} / {{value.count}}
|
||||
span.float-right {{parseFloat(user.party.quest.progress.collectedItems) || 0}} items found
|
||||
div.text-right {{parseFloat(user.party.quest.progress.collectedItems) || 0}} items found
|
||||
.boss-info(v-if='questData.boss')
|
||||
.row
|
||||
.col-6
|
||||
|
||||
@@ -963,25 +963,21 @@
|
||||
this.$root.$emit('bv::show::modal', 'hatching-modal');
|
||||
}
|
||||
},
|
||||
|
||||
async feedAction (petKey, foodKey) {
|
||||
let result = await this.$store.dispatch('common:feed', {pet: petKey, food: foodKey});
|
||||
const result = await this.$store.dispatch('common:feed', {pet: petKey, food: foodKey});
|
||||
|
||||
if (result.message) {
|
||||
this.text(result.message);
|
||||
}
|
||||
},
|
||||
|
||||
closeHatchPetDialog () {
|
||||
this.$root.$emit('bv::hide::modal', 'hatching-modal');
|
||||
},
|
||||
|
||||
resetHatchablePet ($event) {
|
||||
if (!$event) {
|
||||
this.hatchablePet = null;
|
||||
}
|
||||
},
|
||||
|
||||
onFoodClicked ($event, food) {
|
||||
if (this.currentDraggingFood === null || this.currentDraggingFood !== food) {
|
||||
this.currentDraggingFood = food;
|
||||
@@ -995,7 +991,6 @@
|
||||
this.foodClickMode = false;
|
||||
}
|
||||
},
|
||||
|
||||
mouseMoved ($event) {
|
||||
if (this.foodClickMode) {
|
||||
this.$refs.clickFoodInfo.style.left = `${$event.x - 70}px`;
|
||||
|
||||
@@ -204,6 +204,7 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
userHp (after, before) {
|
||||
if (this.user.needsCron) return;
|
||||
if (after <= 0) {
|
||||
this.playSound('Death');
|
||||
this.$root.$emit('bv::show::modal', 'death');
|
||||
@@ -252,6 +253,7 @@ export default {
|
||||
this.showLevelUpNotifications(after);
|
||||
},
|
||||
userClassSelect (after) {
|
||||
if (this.user.needsCron) return;
|
||||
if (!after) return;
|
||||
this.$root.$emit('bv::show::modal', 'choose-class');
|
||||
// @TODO: {controller:'UserCtrl', keyboard:false, backdrop:'static'}
|
||||
|
||||
@@ -241,6 +241,8 @@ export default {
|
||||
hello.init({
|
||||
facebook: process.env.FACEBOOK_KEY, // eslint-disable-line no-process-env
|
||||
google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line no-process-env
|
||||
}, {
|
||||
redirect_uri: '', // eslint-disable-line
|
||||
});
|
||||
},
|
||||
computed: {
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
:item="item"
|
||||
)
|
||||
|
||||
.purchase-amount
|
||||
.purchase-amount(v-if='item.value > 0')
|
||||
.how-many-to-buy(v-if='showAmountToBuy(item)')
|
||||
strong {{ $t('howManyToBuy') }}
|
||||
div(v-if='showAmountToBuy(item)')
|
||||
@@ -51,6 +51,9 @@
|
||||
span(:class="{'notEnough': notEnoughCurrency}")
|
||||
span.svg-icon.inline.icon-32(aria-hidden="true", v-html="icons[getPriceClass()]")
|
||||
span.cost(:class="getPriceClass()") {{ item.value }}
|
||||
div(v-else)
|
||||
span.svg-icon.inline.icon-32(aria-hidden="true", v-html="icons[getPriceClass()]")
|
||||
span.cost(:class="getPriceClass()") {{ item.value }}
|
||||
|
||||
.gems-left(v-if='item.key === "gem"')
|
||||
strong(v-if='gemsLeft > 0') {{ gemsLeft }} {{ $t('gemsRemaining') }}
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
)
|
||||
span.svg-icon.inline.icon-12.color(v-html="icons.pin")
|
||||
|
||||
//keys-to-kennel(v-if='category.identifier === "special"')
|
||||
keys-to-kennel(v-if='category.identifier === "special"')
|
||||
|
||||
div.fill-height
|
||||
|
||||
@@ -295,6 +295,7 @@
|
||||
.content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
z-index: 1; // Always cover background.
|
||||
}
|
||||
|
||||
.npc {
|
||||
@@ -466,7 +467,7 @@ export default {
|
||||
},
|
||||
async mounted () {
|
||||
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
||||
this.broken = worldState.worldBoss.extra.worldDmg.market;
|
||||
this.broken = worldState && worldState.worldBoss && worldState.worldBoss.extra && worldState.worldBoss.extra.worldDmg && worldState.worldBoss.extra.worldDmg.market;
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
@@ -702,8 +703,10 @@ export default {
|
||||
break;
|
||||
}
|
||||
case 'sortByNumber': {
|
||||
result = _sortBy(result, i => {
|
||||
return this.userItems[i.purchaseType][i.key] || 0;
|
||||
result = _sortBy(result, item => {
|
||||
if (item.showCount === false) return 0;
|
||||
|
||||
return this.userItems[item.purchaseType][item.key] || 0;
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:emptyItem="false",
|
||||
popoverPosition="'top'",
|
||||
@click="releasePets()",
|
||||
v-if='this.user.achievements.beastMaster'
|
||||
v-if='userHasAllPets'
|
||||
)
|
||||
shopItem(
|
||||
:key="keysToMounts.key",
|
||||
@@ -14,7 +14,7 @@
|
||||
:emptyItem="false",
|
||||
popoverPosition="'top'",
|
||||
@click="releaseMounts()",
|
||||
v-if='this.user.achievements.mountMaster'
|
||||
v-if='userHasAllMounts'
|
||||
)
|
||||
shopItem(
|
||||
:key="keysToBoth.key",
|
||||
@@ -22,7 +22,7 @@
|
||||
:emptyItem="false",
|
||||
popoverPosition="'top'",
|
||||
@click="releaseBoth()",
|
||||
v-if='this.user.achievements.mountMaster'
|
||||
v-if='userHasAllPets && userHasAllMounts'
|
||||
)
|
||||
</template>
|
||||
|
||||
@@ -61,9 +61,7 @@
|
||||
import { mapState } from 'client/libs/store';
|
||||
import ShopItem from '../shopItem';
|
||||
|
||||
import releasePets from 'common/script/ops/releasePets';
|
||||
import releaseMounts from 'common/script/ops/releaseMounts';
|
||||
import releaseBoth from 'common/script/ops/releaseBoth';
|
||||
import count from 'common/script/count';
|
||||
|
||||
import notifications from 'client/mixins/notifications';
|
||||
|
||||
@@ -88,11 +86,14 @@ export default {
|
||||
buy: () => {
|
||||
if (!confirm(this.$t('releasePetsConfirm'))) return;
|
||||
try {
|
||||
releasePets(this.user);
|
||||
this.$store.dispatch('shops:releasePets', {user: this.user});
|
||||
this.text(this.$t('releasePetsSuccess'));
|
||||
// this.$router.push({name: 'stable'});
|
||||
// Reload because achievement is set in user.save instead of common
|
||||
window.location.reload(true);
|
||||
} catch (err) {
|
||||
alert(err.message);
|
||||
}
|
||||
this.text(this.$t('releasePetsSuccess'));
|
||||
},
|
||||
},
|
||||
keysToMounts: {
|
||||
@@ -108,18 +109,21 @@ export default {
|
||||
buy: () => {
|
||||
if (!confirm(this.$t('releaseMountsConfirm'))) return;
|
||||
try {
|
||||
releaseMounts(this.user);
|
||||
this.$store.dispatch('shops:releaseMounts', {user: this.user});
|
||||
this.text(this.$t('releaseMountsSuccess'));
|
||||
// this.$router.push({name: 'stable'});
|
||||
// Reload because achievement is set in user.save instead of common
|
||||
window.location.reload(true);
|
||||
} catch (err) {
|
||||
alert(err.message);
|
||||
}
|
||||
this.text(this.$t('releaseMountsSuccess'));
|
||||
},
|
||||
},
|
||||
keysToBoth: {
|
||||
key: 'keysToBoth',
|
||||
text: this.$t('keyToBoth'),
|
||||
notes: this.$t('keyToBothDesc'),
|
||||
value: 6,
|
||||
value: 0,
|
||||
currency: 'gems',
|
||||
class: 'key_to_both',
|
||||
locked: false,
|
||||
@@ -128,17 +132,26 @@ export default {
|
||||
buy: () => {
|
||||
if (!confirm(this.$t('releaseBothConfirm'))) return;
|
||||
try {
|
||||
releaseBoth(this.user);
|
||||
this.$store.dispatch('shops:releaseBoth', {user: this.user});
|
||||
this.text(this.$t('releaseBothSuccess'));
|
||||
// this.$router.push({name: 'stable'});
|
||||
// Reload because achievement is set in user.save instead of common
|
||||
window.location.reload(true);
|
||||
} catch (err) {
|
||||
alert(err.message);
|
||||
}
|
||||
this.text(this.$t('releaseBothSuccess'));
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({user: 'user.data'}),
|
||||
userHasAllPets () {
|
||||
return count.beastCount(this.user.items.pets) === 90;
|
||||
},
|
||||
userHasAllMounts () {
|
||||
return count.mountMasterProgress(this.user.items.mounts) === 90;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
releasePets () {
|
||||
|
||||
@@ -400,7 +400,7 @@ export default {
|
||||
},
|
||||
async mounted () {
|
||||
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
||||
this.broken = worldState.worldBoss.extra.worldDmg.quests;
|
||||
this.broken = worldState && worldState.worldBoss && worldState.worldBoss.extra && worldState.worldBoss.extra.worldDmg && worldState.worldBoss.extra.worldDmg.quests;
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
|
||||
@@ -23,8 +23,7 @@
|
||||
)
|
||||
.standard-page
|
||||
div.featuredItems
|
||||
.background(:class="{opened: seasonal.opened && !broken, broken: broken}")
|
||||
.background(:class="{cracked: broken, broken: broken}")
|
||||
.background(:class="{opened: seasonal.opened}")
|
||||
div.npc
|
||||
div.featured-label
|
||||
span.rectangle
|
||||
@@ -373,7 +372,7 @@
|
||||
},
|
||||
async mounted () {
|
||||
const worldState = await this.$store.dispatch('worldState:getWorldState');
|
||||
this.broken = worldState.worldBoss.extra.worldDmg.seasonalShop;
|
||||
this.broken = worldState && worldState.worldBoss && worldState.worldBoss.extra && worldState.worldBoss.extra.worldDmg && worldState.worldBoss.extra.worldDmg.seasonalShop;
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
|
||||
@@ -79,11 +79,11 @@ export default {
|
||||
}
|
||||
|
||||
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) {
|
||||
correctSize = group.memberCount < 99;
|
||||
correctSize = group.memberCount < 100;
|
||||
}
|
||||
|
||||
return passedSearch && hasCategories && isMember && isLeader && correctSize;
|
||||
|
||||
@@ -69,8 +69,10 @@ export async function like (store, payload) {
|
||||
}
|
||||
|
||||
export async function flag (store, payload) {
|
||||
let url = `/api/v3/groups/${payload.groupId}/chat/${payload.chatId}/flag`;
|
||||
let response = await axios.post(url);
|
||||
const url = `/api/v3/groups/${payload.groupId}/chat/${payload.chatId}/flag`;
|
||||
const response = await axios.post(url, {
|
||||
comment: payload.comment,
|
||||
});
|
||||
return response.data.data;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,8 @@ export function hatch (store, params) {
|
||||
export async function feed (store, params) {
|
||||
const user = store.state.user.data;
|
||||
feedOp(user, {params});
|
||||
let response = await axios
|
||||
.post(`/api/v3/user/feed/${params.pet}/${params.food}`);
|
||||
|
||||
const response = await axios
|
||||
.post(`/api/v3/user/feed/${params.pet}/${params.food}`);
|
||||
return response.data;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,10 @@ import hourglassPurchaseOp from 'common/script/ops/buy/hourglassPurchase';
|
||||
import sellOp from 'common/script/ops/sell';
|
||||
import unlockOp from 'common/script/ops/unlock';
|
||||
import rerollOp from 'common/script/ops/reroll';
|
||||
import releasePetsOp from 'common/script/ops/releasePets';
|
||||
import releaseMountsOp from 'common/script/ops/releaseMounts';
|
||||
import releaseBothOp from 'common/script/ops/releaseBoth';
|
||||
|
||||
import { getDropClass } from 'client/libs/notifications';
|
||||
|
||||
// @TODO: Purchase means gems and buy means gold. That wording is misused below, but we should also change
|
||||
@@ -15,13 +19,9 @@ function buyItem (store, params) {
|
||||
const quantity = params.quantity || 1;
|
||||
const user = store.state.user.data;
|
||||
|
||||
const userPinned = user.pinnedItems.slice();
|
||||
let opResult = buyOp(user, {params, quantity});
|
||||
|
||||
// @TODO: Currently resetting the pinned items will reset the market. Purchasing some items does not reset pinned.
|
||||
// For now, I've added this hack for items like contributor gear to update while I am working on add more computed
|
||||
// properties to the market. We will use this quick fix while testing the other changes.
|
||||
user.pinnedItems = userPinned;
|
||||
user.pinnedItems = opResult[0].pinnedItems;
|
||||
|
||||
|
||||
return {
|
||||
@@ -176,3 +176,18 @@ export function sellItems (store, params) {
|
||||
sellOp(user, {params, query: {amount: params.amount}});
|
||||
axios.post(`/api/v3/user/sell/${params.type}/${params.key}?amount=${params.amount}`);
|
||||
}
|
||||
|
||||
export function releasePets (store, params) {
|
||||
releasePetsOp(params.user);
|
||||
axios.post('/api/v3/user/release-pets');
|
||||
}
|
||||
|
||||
export function releaseMounts (store, params) {
|
||||
releaseMountsOp(params.user);
|
||||
axios.post('/api/v3/user/release-mounts');
|
||||
}
|
||||
|
||||
export function releaseBoth (store, params) {
|
||||
releaseBothOp(params.user);
|
||||
axios.post('/api/v3/user/release-both');
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
"hatchingPotionShimmer": "Блещукащ цвят",
|
||||
"hatchingPotionFairy": "Фейски цвят",
|
||||
"hatchingPotionStarryNight": "Звездна нощ",
|
||||
"hatchingPotionRainbow": "Rainbow",
|
||||
"hatchingPotionRainbow": "Дъга",
|
||||
"hatchingPotionNotes": "Излейте това върху яйце и от него ще се излюпи любимец с(ъс) <%= potText(locale) %>.",
|
||||
"premiumPotionAddlNotes": "Не може да се използва върху яйца за любимци от мисии.",
|
||||
"foodMeat": "Месо",
|
||||
|
||||
@@ -250,6 +250,14 @@
|
||||
"weaponSpecialWinter2018MageNotes": "Магията (и лъскавината) е във въздуха! Увеличава интелигентността с <%= int %> и усета с <%= per %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"weaponSpecialWinter2018HealerText": "Магическа пръчка от имел",
|
||||
"weaponSpecialWinter2018HealerNotes": "Този имел със сигурност ще омагьоса и развесели минувачите! Увеличава интелигентността с <%= int %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"weaponSpecialSpring2018RogueText": "Buoyant Bullrush",
|
||||
"weaponSpecialSpring2018RogueNotes": "What might appear to be cute cattails are actually quite effective weapons in the right wings. Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018WarriorText": "Axe of Daybreak",
|
||||
"weaponSpecialSpring2018WarriorNotes": "Made of bright gold, this axe is mighty enough to attack the reddest task! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018MageText": "Tulip Stave",
|
||||
"weaponSpecialSpring2018MageNotes": "This magic flower never wilts! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018HealerText": "Garnet Rod",
|
||||
"weaponSpecialSpring2018HealerNotes": "The stones in this staff will focus your power when you cast healing spells! Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponMystery201411Text": "Вилица на изобилието",
|
||||
"weaponMystery201411Notes": "Наръгайте враговете си или си боцнете от любимата храна — тази универсална вилица може всичко! не променя показателите. Предмет за абонати: ноември 2014 г.",
|
||||
"weaponMystery201502Text": "Блестящият крилат скиптър на любовта и истината",
|
||||
@@ -552,6 +560,14 @@
|
||||
"armorSpecialWinter2018MageNotes": "Най-великият вълшебен официален костюм. Увеличава интелигентността с <%= int %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"armorSpecialWinter2018HealerText": "Имелови одежди",
|
||||
"armorSpecialWinter2018HealerNotes": "В тези одежди са втъкани вълшебни заклинания за допълнителна празнична радост. Увеличава якостта с <%= con %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"armorSpecialSpring2018RogueText": "Feather Suit",
|
||||
"armorSpecialSpring2018RogueNotes": "This fluffy yellow costume will trick your enemies into thinking you're just a harmless ducky! Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018WarriorText": "Armor of Dawn",
|
||||
"armorSpecialSpring2018WarriorNotes": "This colorful plate is forged with the sunrise's fire. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018MageText": "Tulip Robe",
|
||||
"armorSpecialSpring2018MageNotes": "Your spell casting can only improve while clad in these soft, silky petals. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018HealerText": "Garnet Armor",
|
||||
"armorSpecialSpring2018HealerNotes": "Let this bright armor infuse your heart with power for healing. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorMystery201402Text": "Одежди на вестоносец",
|
||||
"armorMystery201402Notes": "Блестящи и здрави, тези одежди имат много джобове за носене на писма. Не променя показателите. Предмет за абонати: февруари 2014 г.",
|
||||
"armorMystery201403Text": "Броня на горски бродник",
|
||||
@@ -926,6 +942,14 @@
|
||||
"headSpecialWinter2018MageNotes": "Искате ли допълнителна специална магия? Тази блестяща шапка със сигурност ще подобри всичките Ви заклинания! Увеличава усета с <%= per %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"headSpecialWinter2018HealerText": "Имелова качулка",
|
||||
"headSpecialWinter2018HealerNotes": "С тази забавна качулка ще Ви бъде топло и празнично! Увеличава интелигентността с <%= int %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"headSpecialSpring2018RogueText": "Duck-Billed Helm",
|
||||
"headSpecialSpring2018RogueNotes": "Quack quack! Your cuteness belies your clever and sneaky nature. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018WarriorText": "Helm of Rays",
|
||||
"headSpecialSpring2018WarriorNotes": "The brightness of this helm will dazzle any enemies nearby! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018MageText": "Tulip Helm",
|
||||
"headSpecialSpring2018MageNotes": "The fancy petals of this helm will grant you special springtime magic. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018HealerText": "Garnet Circlet",
|
||||
"headSpecialSpring2018HealerNotes": "The polished gems of this circlet will enhance your mental energy. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialGaymerxText": "Боен шлем с цветовете на дъгата",
|
||||
"headSpecialGaymerxNotes": "В чест на конференцията GaymerX, този специален шлем е оцветен с шарка на дъга! GaymerX е игрално изложение в чест на ЛГБТ културата и игрите и е отворено за всички.",
|
||||
"headMystery201402Text": "Крилат шлем",
|
||||
@@ -1230,6 +1254,10 @@
|
||||
"shieldSpecialWinter2018WarriorNotes": "В тази торба можете да откриете почти всички, от което се нуждаете, ако знаете правилните вълшебни думички. Увеличава якостта с <%= con %>. Ограничена серия: Зимна екипировка 2017-2018 г.",
|
||||
"shieldSpecialWinter2018HealerText": "Имелов звънец",
|
||||
"shieldSpecialWinter2018HealerNotes": "Какъв е този звук? Това е звукът на топлината и веселието, и всички ще го чуят. Увеличава якостта с <%= con %>. Ограничена серия: Зимна екипировка 2014-2015 г.",
|
||||
"shieldSpecialSpring2018WarriorText": "Shield of the Morning",
|
||||
"shieldSpecialSpring2018WarriorNotes": "This sturdy shield glows with the glory of first light. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldSpecialSpring2018HealerText": "Garnet Shield",
|
||||
"shieldSpecialSpring2018HealerNotes": "Despite its fancy appearance, this garnet shield is quite durable! Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldMystery201601Text": "Решителен убиец",
|
||||
"shieldMystery201601Notes": "Това острие може да отблъсне всички разсейващи Ви неща. Не променя показателите. Предмет за абонати: януари 2016 г.",
|
||||
"shieldMystery201701Text": "Спиращ времето щит",
|
||||
|
||||
@@ -143,11 +143,14 @@
|
||||
"badAmountOfGemsToSend": "Стойността трябва да бъде между 1 и текущия Ви брой диаманти.",
|
||||
"report": "Докладване",
|
||||
"abuseFlag": "Докладване на нарушение на Обществените правила",
|
||||
"abuseFlagModalHeading": "Докладване на <%= name %> за нарушение?",
|
||||
"abuseFlagModalBody": "Наистина ли искате да докладвате тази публикация? Трябва да докладвате САМО публикации, които нарушават <%= firstLinkStart %>Обществените правила<%= linkEnd %> и/или <%= secondLinkStart %>Условията на услугата<%= linkEnd %>. Неуместното докладване на публикация е нарушение на Обществените правила, и може да получите наказание. Правилните причина за докладване на публикация включват (но не се изчерпват):<br><br><ul style='margin-left: 10px;'><li>ругаене, религиозни клетви;</li><li>фанатизъм, обиди;</li><li>теми за възрастни;</li><li>насилие, дори и на шега;</li><li>нежелани или безсмислени съобщения.</li></ul>",
|
||||
"abuseFlagModalHeading": "Докладване за нарушение",
|
||||
"abuseFlagModalBody": "Наистина ли искате да докладвате тази публикация? Трябва да докладвате <strong>само</strong> публикации, които нарушават <%= firstLinkStart %>Обществените правила<%= linkEnd %> и/или <%= secondLinkStart %>Условията на услугата<%= linkEnd %>. Неуместното докладване на публикация е нарушение на Обществените правила, и може да получите наказание.",
|
||||
"abuseFlagModalButton": "Докладване за нарушение",
|
||||
"abuseReported": "Благодарим Ви, че докладвахте за това нарушение. Модераторите бяха уведомени.",
|
||||
"abuseAlreadyReported": "Вече сте докладвали това съобщение.",
|
||||
"whyReportingPost": "Защо докладвате тази публикация?",
|
||||
"whyReportingPostPlaceholder": "Моля, помогнете на модераторите, като ни кажете защо докладвате тази публикация за нарушение, например: защото е нежелана, включва ругатни, клетви, фанатизъм, обиди, теми за възрастни, насилие.",
|
||||
"optional": "Незадължително",
|
||||
"needsText": "Моля, напишете съобщение.",
|
||||
"needsTextPlaceholder": "Въведете съобщението си тук.",
|
||||
"copyMessageAsToDo": "Копиране на съобщението като задача",
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Лесли<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Сезонна Магьосница<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "Сезонният магазин в момента е затворен! Той е отворен само по време на четирите големи празненства на Хабитика.",
|
||||
"seasonalShopText": "Честито Буйно пролетно събитие!! Искате ли да си купите редки предмети? Те ще бъдат налични само до 30 април!",
|
||||
"seasonalShopSummerText": "Честито Смазващо лятно събитие!! Искате ли да си купите редки предмети? Те ще бъдат налични само до 31 юли!",
|
||||
"seasonalShopFallText": "Честит Есенен фестивал!! Искате ли да си купите редки предмети? Те ще бъдат налични само до 31 октомври!",
|
||||
"seasonalShopWinterText": "Честито Приказно зимно събитие!! Искате ли да си купите редки предмети? Те ще бъдат налични само до 31 януари!",
|
||||
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopFallTextBroken": "О… добре дошли в сезонния магазин… В момента предлагаме стоки от есенното сезонно издание, или нещо такова… Всичко тук ще бъде налично за купуване по време на Есенния фестивал всяка година, но магазинът ще бъде отворен само до 31-ви октомври… предполагам, че няма да е лошо да се запасите сега, или ще трябва да чакате… и чакате… и чакате… <strong>*въздишка*</strong>",
|
||||
"seasonalShopBrokenText": "Павилионът ми!!!!!!! Декорациите ми!!!! О, Обезсърчителят унищожи всичко :( Моля Ви, помогнете да го победим в кръчмата, за да мога да построя всичко отново!",
|
||||
"seasonalShopRebirth": "Ако сте купили някой от тези предмети преди време, но в момента не го притежавате, можете да го закупите отново в колонката с награди. Първоначално ще можете да закупувате само предметите за класа Ви (воин, по подразбиране), но не се безпокойте — останалите класово-специфични предмети ще се появят, ако превключите към съответния клас.",
|
||||
@@ -117,8 +117,12 @@
|
||||
"winter2018GiftWrappedSet": "Опакован като подарък воин (воин)",
|
||||
"winter2018MistletoeSet": "Имелен лечител (лечител)",
|
||||
"winter2018ReindeerSet": "Еленов мошеник (мошеник)",
|
||||
"spring2018SunriseWarriorSet": "Sunrise Warrior (Warrior)",
|
||||
"spring2018TulipMageSet": "Tulip Mage (Mage)",
|
||||
"spring2018GarnetHealerSet": "Garnet Healer (Healer)",
|
||||
"spring2018DucklingRogueSet": "Duckling Rogue (Rogue)",
|
||||
"eventAvailability": "Налично за купуване до <%= date(locale) %>.",
|
||||
"dateEndMarch": "March 31",
|
||||
"dateEndMarch": "31 март",
|
||||
"dateEndApril": "19 април",
|
||||
"dateEndMay": "17 май",
|
||||
"dateEndJune": "14 юни",
|
||||
|
||||
@@ -138,5 +138,8 @@
|
||||
"dragThisPotion": "Завлачете <%= potionName %> до яйце и ще се излюпи нов любимец!",
|
||||
"clickOnEggToHatch": "Щракнете върху яйце, за да използвате своята излюпваща отвара с(ъс) <%= potionName %> и ще се излюпи нов любимец!",
|
||||
"hatchDialogText": "Изсипете своята излюпваща отвара с(ъс) <%= potionName %> върху своето яйце на <%= eggName %> и от него ще се излюпи <%= petName %>.",
|
||||
"clickOnPotionToHatch": "Щракнете върху излюпваща отвара, която да използвате върху върху своето яйце на <%= eggName %> и от него ще се излюпи нов любимец!"
|
||||
"clickOnPotionToHatch": "Щракнете върху излюпваща отвара, която да използвате върху върху своето яйце на <%= eggName %> и от него ще се излюпи нов любимец!",
|
||||
"notEnoughPets": "Не сте събрали достатъчно любимци",
|
||||
"notEnoughMounts": "Не сте събрали достатъчно превози",
|
||||
"notEnoughPetsMounts": "Не сте събрали достатъчно любимци и превози"
|
||||
}
|
||||
@@ -198,8 +198,8 @@
|
||||
"weaponSpecialSummer2016RogueNotes": "Každého, kdo s tebou bude bojovat, čeká šokující překvapení... Zvyšuje sílu o <%= str %>. Limitovaná edice 2016 Letní výbavy.",
|
||||
"weaponSpecialSummer2016WarriorText": "Zahnutý meč",
|
||||
"weaponSpecialSummer2016WarriorNotes": "Zakousni se do těch těžkých úkolů s tímto zakřiveným mečem! Zvyšuje sílu o <%= str %>. Limitovaná edice 2016 Letní výbavy.",
|
||||
"weaponSpecialSummer2016MageText": "Seafoam Staff",
|
||||
"weaponSpecialSummer2016MageNotes": "All the power of the seas filters through this staff. Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2016 Summer Gear.",
|
||||
"weaponSpecialSummer2016MageText": "Hůl z Mořské pěny",
|
||||
"weaponSpecialSummer2016MageNotes": "Veškerá moc moří je filtrována skrze tuto hůl. Zvyšuje Inteligenci o <%= int %> a Vnímání o <%= per %>. Limitovaná edice letní výbavy 2016.",
|
||||
"weaponSpecialSummer2016HealerText": "Léčivý Trojzubec",
|
||||
"weaponSpecialSummer2016HealerNotes": "Jeden hrot zraňuje, druhý léčí. Zvyšuje Inteligenci o <%= int %>. Limitovaná edice 2015 Letní výbavy.",
|
||||
"weaponSpecialFall2016RogueText": "Dýka Pavoučího kousnutí",
|
||||
@@ -208,10 +208,10 @@
|
||||
"weaponSpecialFall2016WarriorNotes": "Zaútoč na tvé úkoly s těmito zakroucenými kořeny! Zvyšuje Sílu o <%= str %>. Limitovaná edice 2016 Podzimní výbavy.",
|
||||
"weaponSpecialFall2016MageText": "Zlověstná Koule",
|
||||
"weaponSpecialFall2016MageNotes": "Této koule se na svoji budoucnost raději neptej... Zvyšuje Inteligenci o <%= int %> a Vnímání o <%= per %>. Limitovaná edice 2016 Podzimní výbavy.",
|
||||
"weaponSpecialFall2016HealerText": "Venomous Serpent",
|
||||
"weaponSpecialFall2016HealerNotes": "One bite harms, and another bite heals. Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
|
||||
"weaponSpecialFall2016HealerText": "Jedovatý Had",
|
||||
"weaponSpecialFall2016HealerNotes": "Jedno kousnutí zraňuje, druhé léčí. Zvyšuje inteligenci o <%= int %>. Limitovaná edice podzimní výbavy 2016.",
|
||||
"weaponSpecialWinter2017RogueText": "Ledová Sekera",
|
||||
"weaponSpecialWinter2017RogueNotes": "This axe is great for attack, defense, and ice-climbing! Increases Strength by <%= str %>. Limited Edition 2016-2017 Winter Gear.",
|
||||
"weaponSpecialWinter2017RogueNotes": "Tato sekera je skvělá pro útok, obranu, a šplhání po ledu! Zvyšuje Sílu o <%= str %>. Limitovaná edice zimní výbavy 2016-2017.",
|
||||
"weaponSpecialWinter2017WarriorText": "Stick of Might",
|
||||
"weaponSpecialWinter2017WarriorNotes": "Conquer your goals by whacking them with this mighty stick! Increases Strength by <%= str %>. Limited Edition 2016-2017 Winter Gear.",
|
||||
"weaponSpecialWinter2017MageText": "Winter Wolf Crystal Staff",
|
||||
@@ -250,6 +250,14 @@
|
||||
"weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"weaponSpecialWinter2018HealerText": "Mistletoe Wand",
|
||||
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"weaponSpecialSpring2018RogueText": "Buoyant Bullrush",
|
||||
"weaponSpecialSpring2018RogueNotes": "What might appear to be cute cattails are actually quite effective weapons in the right wings. Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018WarriorText": "Axe of Daybreak",
|
||||
"weaponSpecialSpring2018WarriorNotes": "Made of bright gold, this axe is mighty enough to attack the reddest task! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018MageText": "Tulip Stave",
|
||||
"weaponSpecialSpring2018MageNotes": "This magic flower never wilts! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018HealerText": "Garnet Rod",
|
||||
"weaponSpecialSpring2018HealerNotes": "The stones in this staff will focus your power when you cast healing spells! Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponMystery201411Text": "Vidle hodů",
|
||||
"weaponMystery201411Notes": "Píchni své nepřátele nebo se pusť do svého oblíbeného jídla - tyhle všestranné vidle zvládnou všechno! Nepřináší žádný benefit.",
|
||||
"weaponMystery201502Text": "Třpytivá okřídlená hůl lásky a také pravdy",
|
||||
@@ -552,6 +560,14 @@
|
||||
"armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"armorSpecialWinter2018HealerText": "Mistletoe Robes",
|
||||
"armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"armorSpecialSpring2018RogueText": "Feather Suit",
|
||||
"armorSpecialSpring2018RogueNotes": "This fluffy yellow costume will trick your enemies into thinking you're just a harmless ducky! Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018WarriorText": "Armor of Dawn",
|
||||
"armorSpecialSpring2018WarriorNotes": "This colorful plate is forged with the sunrise's fire. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018MageText": "Tulip Robe",
|
||||
"armorSpecialSpring2018MageNotes": "Your spell casting can only improve while clad in these soft, silky petals. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018HealerText": "Garnet Armor",
|
||||
"armorSpecialSpring2018HealerNotes": "Let this bright armor infuse your heart with power for healing. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorMystery201402Text": "Oděv poslíčka",
|
||||
"armorMystery201402Notes": "Třpytivý a silný, tento oděv má spoustu kapes na dopisy. Nepřináší žádný benefit. Výbava pro předplatitele únor 2014",
|
||||
"armorMystery201403Text": "Zbroj lesáka",
|
||||
@@ -926,6 +942,14 @@
|
||||
"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.",
|
||||
"headSpecialWinter2018HealerText": "Mistletoe Hood",
|
||||
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"headSpecialSpring2018RogueText": "Duck-Billed Helm",
|
||||
"headSpecialSpring2018RogueNotes": "Quack quack! Your cuteness belies your clever and sneaky nature. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018WarriorText": "Helm of Rays",
|
||||
"headSpecialSpring2018WarriorNotes": "The brightness of this helm will dazzle any enemies nearby! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018MageText": "Tulip Helm",
|
||||
"headSpecialSpring2018MageNotes": "The fancy petals of this helm will grant you special springtime magic. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018HealerText": "Garnet Circlet",
|
||||
"headSpecialSpring2018HealerNotes": "The polished gems of this circlet will enhance your mental energy. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialGaymerxText": "Helma duhového bojovníka",
|
||||
"headSpecialGaymerxNotes": "Ku příležitosti oslav GaymerX je tato speciální helma zdobena zářivým, barevným, duhovým vzorem! GaymerX je herní veletrh oslavující LGBTQ a hry a je otevřený všem.",
|
||||
"headMystery201402Text": "Okřídlená přilba",
|
||||
@@ -1230,6 +1254,10 @@
|
||||
"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.",
|
||||
"shieldSpecialWinter2018HealerText": "Mistletoe Bell",
|
||||
"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.",
|
||||
"shieldSpecialSpring2018WarriorText": "Shield of the Morning",
|
||||
"shieldSpecialSpring2018WarriorNotes": "This sturdy shield glows with the glory of first light. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldSpecialSpring2018HealerText": "Garnet Shield",
|
||||
"shieldSpecialSpring2018HealerNotes": "Despite its fancy appearance, this garnet shield is quite durable! Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldMystery201601Text": "Kat odhodlání",
|
||||
"shieldMystery201601Notes": "Tento meč lze použít k odražení všech rozptýlení. Neposkytuje žádný bonus. Předplatitelský předmět ledna 2016.",
|
||||
"shieldMystery201701Text": "Time-Freezer Shield",
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"showLess": "Ukaž méně",
|
||||
"expandToolbar": "Rozbalit lištu",
|
||||
"collapseToolbar": "Zabalit lištu",
|
||||
"markdownHelpLink": "Markdown formatting help",
|
||||
"markdownHelpLink": "Nápověda k formátování.",
|
||||
"showFormattingHelp": "Ukázat nápovědu k formátování",
|
||||
"hideFormattingHelp": "Schovat nápovědu k formátování",
|
||||
"youType": "Napíšeš:",
|
||||
@@ -60,7 +60,7 @@
|
||||
"groupPlansTitle": "Skupinové plány",
|
||||
"newGroupTitle": "Nová skupina",
|
||||
"subscriberItem": "Záhadný předmět",
|
||||
"newSubscriberItem": "You have new <span class=\"notification-bold-blue\">Mystery Items</span>",
|
||||
"newSubscriberItem": "Máš nové <span class=\"notification-bold-blue\">Záhadné předměty</span>",
|
||||
"subscriberItemText": "Předplatitelé obdrží každý měsíc záhadný předmět. Ten je zpravidla představen týden před koncem měsíce. Pro více informací mrkni na stránku 'Mystery Item' na wiki.",
|
||||
"all": "Vše",
|
||||
"none": "Žádné",
|
||||
@@ -100,10 +100,10 @@
|
||||
"originalUserText": "Jeden z <em>velmi</em> ranných osvojitelů. Tomu říkám alfa tester!",
|
||||
"habitBirthday": "Narozeninový flám země Habitica",
|
||||
"habitBirthdayText": "Zúčastnil se narozeninového flámu země Habitica!",
|
||||
"habitBirthdayPluralText": "Celebrated <%= count %> Habitica Birthday Bashes!",
|
||||
"habitBirthdayPluralText": "Oslavil <%= count %> narozenin země Habitica!",
|
||||
"habiticaDay": "Jmeniny země Habitica",
|
||||
"habiticaDaySingularText": "Oslavil jmeniny země Habitica! Díky, že jsi tak fantastický uživatel.",
|
||||
"habiticaDayPluralText": "Celebrated <%= count %> Naming Days! Thanks for being a fantastic user.",
|
||||
"habiticaDayPluralText": "Oslavil <%= count %> jmenin! Díky, že jsi tak fantastický uživatel.",
|
||||
"achievementDilatory": "Zachránce Liknavosti",
|
||||
"achievementDilatoryText": "Pomohl přemoci obávaného Drag'ona z Liknavosti v průběhu letní Šplouch akce 2014!",
|
||||
"costumeContest": "Soutěžící s kostýmem",
|
||||
@@ -216,9 +216,9 @@
|
||||
"getwell2": "Myslím na tebe!",
|
||||
"getwell3": "Je mi líto, že se necítíš nejlépe!",
|
||||
"getwellCardAchievementTitle": "Caring Confidant",
|
||||
"getwellCardAchievementText": "Well-wishes are always appreciated. Sent or received <%= count %> get well cards.",
|
||||
"goodluckCard": "Good Luck Card",
|
||||
"goodluckCardExplanation": "You both receive the Lucky Letter achievement!",
|
||||
"getwellCardAchievementText": "Dobrá přání jsou vždy oceňovány. Pošli nebo obdrž <%= count %> kartu \"uzdrav se\".",
|
||||
"goodluckCard": "Karta \"Hodně štěstí!\"",
|
||||
"goodluckCardExplanation": "Oba obdržíte ocenění Šťastný dopis!!",
|
||||
"goodluckCardNotes": "Send a good luck card to a party member.",
|
||||
"goodluck0": "Nechť tě vždy provází štěstěna!",
|
||||
"goodluck1": "Přeji ti hodně štěstí!",
|
||||
|
||||
@@ -143,11 +143,14 @@
|
||||
"badAmountOfGemsToSend": "Částka musí být mezi 1 a vaším současným počtem drahokamů.",
|
||||
"report": "Report",
|
||||
"abuseFlag": "Nahlaš porušení Zásad komunity",
|
||||
"abuseFlagModalHeading": "Nahlásit <%= name %> za porušení?",
|
||||
"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>",
|
||||
"abuseFlagModalHeading": "Report a Violation",
|
||||
"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",
|
||||
"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.",
|
||||
"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.",
|
||||
"needsTextPlaceholder": "Napiš svou zprávu sem.",
|
||||
"copyMessageAsToDo": "Zkopírovat zprávu jako Úkol",
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Sezónní mudrci<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
||||
"seasonalShopText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? They’ll only be available until July 31st!",
|
||||
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? They’ll only be available until October 31st!",
|
||||
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? They’ll only be available until January 31st!",
|
||||
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopFallTextBroken": "Eh... vítej v Sezonním obchodě... Zrovna tu máme podzimní Sezonní edici zboží nebo tak... Všechno zde je možné zakoupit v průběhu Podzimního estivalu každý rok, ale máme otevřeno pouze do 31. října... asi si nakup teď, nebo budeš muset čekat... a čekat... a čekat <strong>*ugh*</strong>",
|
||||
"seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!",
|
||||
"seasonalShopRebirth": "If you bought any of this equipment in the past but don't currently own it, you can repurchase it in the Rewards Column. Initially, you'll only be able to purchase the items for your current class (Warrior by default), but fear not, the other class-specific items will become available if you switch to that class.",
|
||||
@@ -117,6 +117,10 @@
|
||||
"winter2018GiftWrappedSet": "Dárkově zabalený Válečník (Válečník)",
|
||||
"winter2018MistletoeSet": "Léčitel z Jmelí (Léčitel)",
|
||||
"winter2018ReindeerSet": "Sobí Zloděj (Zloděj)",
|
||||
"spring2018SunriseWarriorSet": "Sunrise Warrior (Warrior)",
|
||||
"spring2018TulipMageSet": "Tulip Mage (Mage)",
|
||||
"spring2018GarnetHealerSet": "Garnet Healer (Healer)",
|
||||
"spring2018DucklingRogueSet": "Duckling Rogue (Rogue)",
|
||||
"eventAvailability": "Dostupný k zakoupení do <%= date(locale) %>.",
|
||||
"dateEndMarch": "March 31",
|
||||
"dateEndApril": "Duben 19",
|
||||
|
||||
@@ -138,5 +138,8 @@
|
||||
"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!",
|
||||
"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"
|
||||
}
|
||||
@@ -250,6 +250,14 @@
|
||||
"weaponSpecialWinter2018MageNotes": "Magic--and glitter--is in the air! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"weaponSpecialWinter2018HealerText": "Mistletoe Wand",
|
||||
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"weaponSpecialSpring2018RogueText": "Buoyant Bullrush",
|
||||
"weaponSpecialSpring2018RogueNotes": "What might appear to be cute cattails are actually quite effective weapons in the right wings. Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018WarriorText": "Axe of Daybreak",
|
||||
"weaponSpecialSpring2018WarriorNotes": "Made of bright gold, this axe is mighty enough to attack the reddest task! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018MageText": "Tulip Stave",
|
||||
"weaponSpecialSpring2018MageNotes": "This magic flower never wilts! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018HealerText": "Garnet Rod",
|
||||
"weaponSpecialSpring2018HealerNotes": "The stones in this staff will focus your power when you cast healing spells! Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponMystery201411Text": "Høstfests-Høtyv",
|
||||
"weaponMystery201411Notes": "Stik dine fjender eller grib for dig af dine yndlingsretter - denne høtyv kan det hele! Giver ingen bonusser. November 2014 Abonnentvare.",
|
||||
"weaponMystery201502Text": "Glinsende Bevinget Stav af Kærlighed og Også Sandhed",
|
||||
@@ -552,6 +560,14 @@
|
||||
"armorSpecialWinter2018MageNotes": "The ultimate in magical formalwear. Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"armorSpecialWinter2018HealerText": "Mistletoe Robes",
|
||||
"armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"armorSpecialSpring2018RogueText": "Feather Suit",
|
||||
"armorSpecialSpring2018RogueNotes": "This fluffy yellow costume will trick your enemies into thinking you're just a harmless ducky! Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018WarriorText": "Armor of Dawn",
|
||||
"armorSpecialSpring2018WarriorNotes": "This colorful plate is forged with the sunrise's fire. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018MageText": "Tulip Robe",
|
||||
"armorSpecialSpring2018MageNotes": "Your spell casting can only improve while clad in these soft, silky petals. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018HealerText": "Garnet Armor",
|
||||
"armorSpecialSpring2018HealerNotes": "Let this bright armor infuse your heart with power for healing. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorMystery201402Text": "Sendebudsdragt",
|
||||
"armorMystery201402Notes": "En skinnende og stærk dragt med masser af lommer til at bære breve i. Giver ingen bonusser. Februar 2014 Abonnentting.",
|
||||
"armorMystery201403Text": "Skovvandrer-rustning",
|
||||
@@ -926,6 +942,14 @@
|
||||
"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.",
|
||||
"headSpecialWinter2018HealerText": "Mistletoe Hood",
|
||||
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"headSpecialSpring2018RogueText": "Duck-Billed Helm",
|
||||
"headSpecialSpring2018RogueNotes": "Quack quack! Your cuteness belies your clever and sneaky nature. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018WarriorText": "Helm of Rays",
|
||||
"headSpecialSpring2018WarriorNotes": "The brightness of this helm will dazzle any enemies nearby! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018MageText": "Tulip Helm",
|
||||
"headSpecialSpring2018MageNotes": "The fancy petals of this helm will grant you special springtime magic. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018HealerText": "Garnet Circlet",
|
||||
"headSpecialSpring2018HealerNotes": "The polished gems of this circlet will enhance your mental energy. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialGaymerxText": "Regnbuekrigerhjelm",
|
||||
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
|
||||
"headMystery201402Text": "Bevinget Hjelm",
|
||||
@@ -1230,6 +1254,10 @@
|
||||
"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.",
|
||||
"shieldSpecialWinter2018HealerText": "Mistletoe Bell",
|
||||
"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.",
|
||||
"shieldSpecialSpring2018WarriorText": "Shield of the Morning",
|
||||
"shieldSpecialSpring2018WarriorNotes": "This sturdy shield glows with the glory of first light. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldSpecialSpring2018HealerText": "Garnet Shield",
|
||||
"shieldSpecialSpring2018HealerNotes": "Despite its fancy appearance, this garnet shield is quite durable! Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldMystery201601Text": "Resolution Slayer",
|
||||
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
|
||||
"shieldMystery201701Text": "Tids-fryser skjold",
|
||||
|
||||
@@ -143,11 +143,14 @@
|
||||
"badAmountOfGemsToSend": "Mængden skal være mellem 1 og dit nuværende antal ædelsten.",
|
||||
"report": "Report",
|
||||
"abuseFlag": "Anmeld overtrædelse af Retningslinjer for Fællesskabet",
|
||||
"abuseFlagModalHeading": "Anmeld <%= name %> for overtrædelse?",
|
||||
"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>",
|
||||
"abuseFlagModalHeading": "Report a Violation",
|
||||
"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",
|
||||
"abuseReported": "Tak for at anmelde denne overtrædelse. Moderatorerne er blevet informeret.",
|
||||
"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.",
|
||||
"needsTextPlaceholder": "Skriv din besked her.",
|
||||
"copyMessageAsToDo": "Kopier besked som To-Do",
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Sæson-heksen<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "The Seasonal Shop is currently closed!! It’s only open during Habitica’s four Grand Galas.",
|
||||
"seasonalShopText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopSummerText": "Happy Summer Splash!! Would you like to buy some rare items? They’ll only be available until July 31st!",
|
||||
"seasonalShopFallText": "Happy Fall Festival!! Would you like to buy some rare items? They’ll only be available until October 31st!",
|
||||
"seasonalShopWinterText": "Happy Winter Wonderland!! Would you like to buy some rare items? They’ll only be available until January 31st!",
|
||||
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopFallTextBroken": "Åh.... Velkommen til Sæson-markedet... Vi har efterårs-sæson varer, eller noget... Alting her kan købes under Efterårsfestival-eventet hvert år, men vi har kun åbent indtil den 31. oktober... Du burde nok købe ind nu, ellers vil du skulle vente... og vente... og vente... <strong>*suk*</strong>",
|
||||
"seasonalShopBrokenText": "My pavilion!!!!!!! My decorations!!!! Oh, the Dysheartener's destroyed everything :( Please help defeat it in the Tavern so I can rebuild!",
|
||||
"seasonalShopRebirth": "Hvis du har købt noget af detteudstyr før, men ikke ejer det i øjeblikket, kan du genkøbe det i Belønningskolonnen. I starten vil du kun kunne købe de ting der passer til din nuværende klasse (Kriger som standard), men frygt ej, de andre klasse-specifikke varer bliver tilgængelige hvis du skifter til den klasse.",
|
||||
@@ -117,6 +117,10 @@
|
||||
"winter2018GiftWrappedSet": "Gift-Wrapped Warrior (Warrior)",
|
||||
"winter2018MistletoeSet": "Mistletoe Healer (Healer)",
|
||||
"winter2018ReindeerSet": "Reindeer Rogue (Rogue)",
|
||||
"spring2018SunriseWarriorSet": "Sunrise Warrior (Warrior)",
|
||||
"spring2018TulipMageSet": "Tulip Mage (Mage)",
|
||||
"spring2018GarnetHealerSet": "Garnet Healer (Healer)",
|
||||
"spring2018DucklingRogueSet": "Duckling Rogue (Rogue)",
|
||||
"eventAvailability": "Tilgændelig til køb indtil <%= date(locale) %>.",
|
||||
"dateEndMarch": "March 31",
|
||||
"dateEndApril": "19. april",
|
||||
|
||||
@@ -138,5 +138,8 @@
|
||||
"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!",
|
||||
"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"
|
||||
}
|
||||
@@ -71,7 +71,7 @@
|
||||
"costumeText": "Wenn Du das Aussehen einer anderen Ausrüstung Deiner Kampfausrüstung vorziehst, dann klicke auf die \"Verkleidung tragen\" Box um über Deiner Kampfausrüstung andere Ausrüstungsgegenstände zu tragen.",
|
||||
"useCostume": "Verkleidung tragen",
|
||||
"useCostumeInfo1": "Drücke auf \"Verwende Kostüm\" um deinem Avatar Ausrüstung anzulegen, ohne dass diese die Statuswerte deiner Kampf-Ausrüstung beeinträchtigt! Das heißt, während du dich links für die besten Statuswerte ausrüstest, kannst du rechts deinen Avatar opitsch anpassen. ",
|
||||
"useCostumeInfo2": "Once you click \"Use Costume\" your avatar will look pretty basic... but don't worry! If you look on the left, you'll see that your Battle Gear is still equipped. Next, you can make things fancy! Anything you equip on the right won't affect your Stats, but can make you look super awesome. Try out different combos, mixing sets, and coordinating your Costume with your pets, mounts, and backgrounds.<br><br>Got more questions? Check out the <a href=\"http://habitica.wikia.com/wiki/Equipment#Costumes\">Costume page</a> on the wiki. Find the perfect ensemble? Show it off in the <a href=\"/groups/guild/3884eeaa-2d6a-45e8-a279-ada6de9709e1\">Costume Carnival guild</a> or brag in the Tavern!",
|
||||
"useCostumeInfo2": "Sobald Du \"Verkleidung tragen\" anklickst, wird Dein Avatar ziemlich einfach aussehen... aber keine Sorge! Wie Du links sehen kannst, trägst Du immer noch Deine Kampfausrüstung. Jetzt kannst Du Dich herausputzen! Alles, was Du rechts anziehst, wird Deine Attributswerte nicht beeinflussen, lässt Dich aber super aussehen. Probier' verschiedene Kombinationen aus, mische Sets oder passe Dein Kostüm an Deine Haustiere, Reittiere und Hintergründe an. <br><br>Noch Fragen? Lies auf der <a href=\"http://habitica.wikia.com/wiki/Equipment#Costumes\">Kostümseite</a> im Wiki nach. Du hast das perfekte Ensemble gefunden? Führe es in der <a href=\"/groups/guild/3884eeaa-2d6a-45e8-a279-ada6de9709e1\">Costume Carnival Gilde</a> oder im Gasthaus vor!",
|
||||
"costumePopoverText": "Wähle \"Kostüm nutzen\", um Deinen Avatar mit Ausrüstung auszustatten, ohne die Werte Deiner Kampfausrüstung zu beeinflussen! Damit kannst Du Deinen Avatar anziehen, wie Du willst und gleichzeitig Deine beste Kampfausrüstung angelegt haben. ",
|
||||
"autoEquipPopoverText": "Wähle diese Option um Ausrüstung automatisch anzulegen, sobald Du sie erworben hast.",
|
||||
"costumeDisabled": "Du hast dein Kostüm deaktiviert. ",
|
||||
|
||||
@@ -161,9 +161,9 @@
|
||||
"questEggYarnText": "Wollknäuel",
|
||||
"questEggYarnMountText": "Fliegendes Teppichwesen",
|
||||
"questEggYarnAdjective": "wolliges",
|
||||
"questEggPterodactylText": "Pterodactylus",
|
||||
"questEggPterodactylMountText": "Pterodactylus",
|
||||
"questEggPterodactylAdjective": "zutraulicher",
|
||||
"questEggPterodactylText": "Pterodactylus-Jungtier",
|
||||
"questEggPterodactylMountText": "Pterodactylus-Reittier",
|
||||
"questEggPterodactylAdjective": "zutrauliches",
|
||||
"questEggBadgerText": "Dachs-Jungtier",
|
||||
"questEggBadgerMountText": "Dachs-Reittier",
|
||||
"questEggBadgerAdjective": "eifriges",
|
||||
@@ -191,7 +191,7 @@
|
||||
"hatchingPotionShimmer": "Schimmerndes",
|
||||
"hatchingPotionFairy": "Feenhaftes",
|
||||
"hatchingPotionStarryNight": "Sternenklare Nacht",
|
||||
"hatchingPotionRainbow": "Rainbow",
|
||||
"hatchingPotionRainbow": "Regenbogen",
|
||||
"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.",
|
||||
"foodMeat": "Fleisch",
|
||||
|
||||
@@ -250,6 +250,14 @@
|
||||
"weaponSpecialWinter2018MageNotes": "Magie - und Glitzer - liegt in der Luft! Erhöht Intelligenz um <%= int %> und Wahrnehmung um<%= per %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
|
||||
"weaponSpecialWinter2018HealerText": "Mistelzauberstab",
|
||||
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"weaponSpecialSpring2018RogueText": "Buoyant Bullrush",
|
||||
"weaponSpecialSpring2018RogueNotes": "What might appear to be cute cattails are actually quite effective weapons in the right wings. Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018WarriorText": "Axe of Daybreak",
|
||||
"weaponSpecialSpring2018WarriorNotes": "Made of bright gold, this axe is mighty enough to attack the reddest task! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018MageText": "Tulip Stave",
|
||||
"weaponSpecialSpring2018MageNotes": "This magic flower never wilts! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018HealerText": "Garnet Rod",
|
||||
"weaponSpecialSpring2018HealerNotes": "The stones in this staff will focus your power when you cast healing spells! Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponMystery201411Text": "Forke des Feierns",
|
||||
"weaponMystery201411Notes": "Erstich Deine Feinde oder verschling Dein Lieblingsessen - diese flexible Forke ist universell einsetzbar! Gewährt keinen Attributbonus. Abonnentengegenstand, November 2014.",
|
||||
"weaponMystery201502Text": "Schimmernder Flügelstab der Liebe und auch der Wahrheit",
|
||||
@@ -552,6 +560,14 @@
|
||||
"armorSpecialWinter2018MageNotes": "Das Nonplusultra der magischen formellen Kleidung. Erhöht Intelligenz um <%= int %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
|
||||
"armorSpecialWinter2018HealerText": "Mistelzweigrobe",
|
||||
"armorSpecialWinter2018HealerNotes": "In diese Roben wurden Zaubersprüche für extra Feiertagsfreude gewebt. Erhöht Ausdauer um <%= con %>. Limitierte Ausgabe 2017-2018 Winterausrüstung.",
|
||||
"armorSpecialSpring2018RogueText": "Feather Suit",
|
||||
"armorSpecialSpring2018RogueNotes": "This fluffy yellow costume will trick your enemies into thinking you're just a harmless ducky! Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018WarriorText": "Armor of Dawn",
|
||||
"armorSpecialSpring2018WarriorNotes": "This colorful plate is forged with the sunrise's fire. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018MageText": "Tulip Robe",
|
||||
"armorSpecialSpring2018MageNotes": "Your spell casting can only improve while clad in these soft, silky petals. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018HealerText": "Garnet Armor",
|
||||
"armorSpecialSpring2018HealerNotes": "Let this bright armor infuse your heart with power for healing. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorMystery201402Text": "Robe des Nachrichtenbringers",
|
||||
"armorMystery201402Notes": "Schimmernd, stabil und mit vielen Taschen für Briefe. Gewährt keinen Attributbonus. Abonnentengegenstand, Februar 2014.",
|
||||
"armorMystery201403Text": "Waldwanderer-Rüstung",
|
||||
@@ -926,6 +942,14 @@
|
||||
"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.",
|
||||
"headSpecialWinter2018HealerText": "Mistletoe Hood",
|
||||
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
"headSpecialSpring2018RogueText": "Duck-Billed Helm",
|
||||
"headSpecialSpring2018RogueNotes": "Quack quack! Your cuteness belies your clever and sneaky nature. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018WarriorText": "Helm of Rays",
|
||||
"headSpecialSpring2018WarriorNotes": "The brightness of this helm will dazzle any enemies nearby! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018MageText": "Tulip Helm",
|
||||
"headSpecialSpring2018MageNotes": "The fancy petals of this helm will grant you special springtime magic. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018HealerText": "Garnet Circlet",
|
||||
"headSpecialSpring2018HealerNotes": "The polished gems of this circlet will enhance your mental energy. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialGaymerxText": "Regenbogenkriegerhelm",
|
||||
"headSpecialGaymerxNotes": "Zur Feier der GaymerX-Konferenz ist dieser spezielle Helm dekoriert mit einem strahlenden, farbenfrohen Regenbogenmuster! GaymerX ist eine Videospiel-Tagung, die LGBTQ und Videospiele feiert und für alle offen ist.",
|
||||
"headMystery201402Text": "Geflügelter Helm",
|
||||
@@ -1230,6 +1254,10 @@
|
||||
"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.",
|
||||
"shieldSpecialWinter2018HealerText": "Mistelzweigglocke",
|
||||
"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.",
|
||||
"shieldSpecialSpring2018WarriorText": "Shield of the Morning",
|
||||
"shieldSpecialSpring2018WarriorNotes": "This sturdy shield glows with the glory of first light. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldSpecialSpring2018HealerText": "Garnet Shield",
|
||||
"shieldSpecialSpring2018HealerNotes": "Despite its fancy appearance, this garnet shield is quite durable! Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldMystery201601Text": "Töter der Vorsätze",
|
||||
"shieldMystery201601Notes": "Diese Klinge kann zur Entfernung aller Ablenkungen verwendet werden. Gewährt keinen Attributbonus. Abonnentengegenstand, Januar 2016.",
|
||||
"shieldMystery201701Text": "Zeitanhalterschild",
|
||||
|
||||
@@ -167,8 +167,8 @@
|
||||
"achievementBurnoutText": "Hat beim Herbstball 2015 dabei geholfen, Burnout zu besiegen und die Geister der Erschöpfung wiederherzustellen!",
|
||||
"achievementBewilder": "Retter von Mistiflying",
|
||||
"achievementBewilderText": "Hat bei der Frühlingsfeier 2016 geholfen, den Verwirrer zu besiegen.",
|
||||
"achievementDysheartener": "Savior of the Shattered",
|
||||
"achievementDysheartenerText": "Helped defeat the Dysheartener during the 2018 Valentine's Event!",
|
||||
"achievementDysheartener": "Retter der Entmutigten",
|
||||
"achievementDysheartenerText": "Hat beim Valentins-Event 2018 dabei geholfen, den Entmutiger zu besiegen!",
|
||||
"checkOutProgress": "Schau Dir meinen Fortschritt in Habitica an!",
|
||||
"cards": "Karten",
|
||||
"sentCardToUser": "Du hast eine Karte an <%= profileName %> gesendet",
|
||||
|
||||
@@ -143,11 +143,14 @@
|
||||
"badAmountOfGemsToSend": "Die Menge muss zwischen 1 und Deiner aktuellen Edelsteinanzahl liegen.",
|
||||
"report": "Melden",
|
||||
"abuseFlag": "Verletzung der Community-Richtlinien melden",
|
||||
"abuseFlagModalHeading": "<%= name %> melden?",
|
||||
"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>.",
|
||||
"abuseFlagModalHeading": "Melde einen Verstoß",
|
||||
"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",
|
||||
"abuseReported": "Danke, dass Du diesen Verstoß gemeldet hast. Die Moderatoren wurden benachrichtigt.",
|
||||
"abuseAlreadyReported": "Du hast diese Nachricht bereits gemeldet.",
|
||||
"whyReportingPost": "Wieso meldest Du diesen 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.",
|
||||
"needsTextPlaceholder": "Gib Deine Nachricht hier ein.",
|
||||
"copyMessageAsToDo": "Nachricht als To-Do übernehmen",
|
||||
@@ -219,11 +222,11 @@
|
||||
"inviteMissingUuid": "User-ID in der Einladung fehlt",
|
||||
"inviteMustNotBeEmpty": "Einladung muss Daten enthalten",
|
||||
"partyMustbePrivate": "Gruppen müssen privat sein",
|
||||
"userAlreadyInGroup": "UserID: <%= userId %>, User \"<%= username %>\" already in that group.",
|
||||
"userAlreadyInGroup": "Nutzer-ID: <%= userId %>, Nutzer \"<%= username %>\" ist bereits in dieser Gruppe.",
|
||||
"cannotInviteSelfToGroup": "Du kannst Dich nicht selbst in eine Gruppe einladen.",
|
||||
"userAlreadyInvitedToGroup": "UserID: <%= userId %>, User \"<%= username %>\" already invited to that group.",
|
||||
"userAlreadyPendingInvitation": "UserID: <%= userId %>, User \"<%= username %>\" already pending invitation.",
|
||||
"userAlreadyInAParty": "UserID: <%= userId %>, User \"<%= username %>\" already in a party.",
|
||||
"userAlreadyInvitedToGroup": "Nutzer-ID: <%= userId %>, Nutzer \"<%= username %>\" wurde bereits zu dieser Gruppe eingeladen.",
|
||||
"userAlreadyPendingInvitation": "Nutzer-ID: <%= userId %>, Nutzer \"<%= username %>\" hat bereits eine ausstehende Einladung.",
|
||||
"userAlreadyInAParty": "Nutzer-ID: <%= userId %>, Nutzer \"<%= username %>\" ist bereits in einer Gruppe.",
|
||||
"userWithIDNotFound": "Benutzer mit ID \"<%= userId %>\" nicht gefunden",
|
||||
"userHasNoLocalRegistration": "Benutzer ist lokal nicht registriert (Benutzername, E-Mail, Passwort).",
|
||||
"uuidsMustBeAnArray": "Benutzer-ID-Einladungen müssen ein Array sein.",
|
||||
|
||||
@@ -29,10 +29,10 @@
|
||||
"seasonalShopClosedTitle": "<%= linkStart %>Leslie<%= linkEnd %>",
|
||||
"seasonalShopTitle": "<%= linkStart %>Saisonzauberin<%= linkEnd %>",
|
||||
"seasonalShopClosedText": "Der Jahreszeitenmarkt ist gerade geschlossen!! Er öffnet nur während Habiticas vier großen Galas.",
|
||||
"seasonalShopText": "Fröhliche Frühlingsfeier!! Wärst du daran interessiert einige seltene Gegenstände zu erwerben? Sie werden nur bis zum 30. April verfügbar sein!",
|
||||
"seasonalShopSummerText": "Fröhliche Sommer-Strandparty!! Wärst du daran interessiert einige seltene Gegenstände zu erwerben? Sie werden nur bis zum 31. Juli verfügbar sein!",
|
||||
"seasonalShopFallText": "Fröhlichen Herbstball!! Wärst du daran interessiert einige seltene Gegenstände zu erwerben? Sie werden nur bis zum 31. Oktober verfügbar sein!",
|
||||
"seasonalShopWinterText": "Fröhliches Winter-Wunderland!! Wärst du daran interessiert einige seltene Gegenstände zu erwerben? Sie werden nur bis zum 31. Januar verfügbar sein!",
|
||||
"seasonalShopSpringText": "Happy Spring Fling!! Would you like to buy some rare items? They’ll only be available until April 30th!",
|
||||
"seasonalShopFallTextBroken": "Oh… Willkommen auf dem Jahreszeitenmarkt… Momentan haben wir Herbst-Gegenstände, oder so, auf Lager… Alles hier wird während des Herbstballs, der jedes Jahr stattfindet, verfügbar sein. Allerdings nur bis zum 31. Oktober, also stocke jetzt Deine Vorräte auf, ansonsten musst Du bis nächstes Jahr warten... und warten... und warten... <strong>*seufz*</strong>",
|
||||
"seasonalShopBrokenText": "Mein Pavillon!!!!!!! Meine Einrichtung!!!! Oh, der Entmutiger hat alles zerstört :( Bitte helft im Gasthaus mit, ihn zu besiegen, damit ich bald wieder alles aufbauen kann!",
|
||||
"seasonalShopRebirth": "Wenn Du etwas von dieser Ausrüstung bereits früher gekauft hast aber im Moment nicht im Besitz hast, kannst Du diesen Ausrüstungsgegenstand in der Belohnungsspalte erneut kaufen. Anfangs wirst Du nur Gegenstände für Deine momentane Klasse (Standard ist Krieger) kaufen können, aber keine Sorge, die anderen klassenspezifischen Gegenstände werden verfügbar, sobald Du zur jeweiligen Klasse wechselst.",
|
||||
@@ -117,8 +117,12 @@
|
||||
"winter2018GiftWrappedSet": "Geschenkpapierverpackter Krieger (Krieger)",
|
||||
"winter2018MistletoeSet": "Mistelzweigheiler (Heiler)",
|
||||
"winter2018ReindeerSet": "Rentier-Schurke (Schurke)",
|
||||
"spring2018SunriseWarriorSet": "Sunrise Warrior (Warrior)",
|
||||
"spring2018TulipMageSet": "Tulip Mage (Mage)",
|
||||
"spring2018GarnetHealerSet": "Garnet Healer (Healer)",
|
||||
"spring2018DucklingRogueSet": "Duckling Rogue (Rogue)",
|
||||
"eventAvailability": "Zum Kauf verfügbar bis zum <%= date(locale) %>.",
|
||||
"dateEndMarch": "March 31",
|
||||
"dateEndMarch": "31. März",
|
||||
"dateEndApril": "19. April",
|
||||
"dateEndMay": "17. Mai",
|
||||
"dateEndJune": "14. Juni",
|
||||
@@ -128,7 +132,7 @@
|
||||
"dateEndNovember": "30. November",
|
||||
"dateEndJanuary": "31. Januar",
|
||||
"dateEndFebruary": "28. Februar",
|
||||
"winterPromoGiftHeader": "Schenke ein Abonnement und bekomme ein weiteres umsonst! ",
|
||||
"winterPromoGiftHeader": "Verschenke ein Abonnement und bekomme eins umsonst! ",
|
||||
"winterPromoGiftDetails1": "Wenn Du bis 12. Januar jemandem ein Abonnement schenkst, bekommst Du das geiche Abonnement für Dich selbst umsonst!",
|
||||
"winterPromoGiftDetails2": "Bitte bedenke, dass das geschenkte Abonnement, falls Du oder Deine beschenkte Person bereits über ein sich wiederholendes Abonnement verfügen, erst dann startet, wenn das alte Abonnement gekündigt wird oder ausläuft. Herzlichen Dank für Deine Unterstützung! <3",
|
||||
"discountBundle": "Paket"
|
||||
|
||||
@@ -138,5 +138,8 @@
|
||||
"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!",
|
||||
"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": "Du hast noch nicht genug Haustiere gesammelt",
|
||||
"notEnoughMounts": "Du hast noch nicht genug Reittiere gesammelt",
|
||||
"notEnoughPetsMounts": "Du hast noch nicht genug Haus- und Reittiere gesammelt"
|
||||
}
|
||||
@@ -276,6 +276,15 @@
|
||||
"weaponSpecialWinter2018HealerText": "Mistletoe Wand",
|
||||
"weaponSpecialWinter2018HealerNotes": "This mistletoe ball is sure to enchant and delight passersby! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
|
||||
"weaponSpecialSpring2018RogueText": "Buoyant Bullrush",
|
||||
"weaponSpecialSpring2018RogueNotes": "What might appear to be cute cattails are actually quite effective weapons in the right wings. Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018WarriorText": "Axe of Daybreak",
|
||||
"weaponSpecialSpring2018WarriorNotes": "Made of bright gold, this axe is mighty enough to attack the reddest task! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018MageText": "Tulip Stave",
|
||||
"weaponSpecialSpring2018MageNotes": "This magic flower never wilts! Increases Intelligence by <%= int %> and Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"weaponSpecialSpring2018HealerText": "Garnet Rod",
|
||||
"weaponSpecialSpring2018HealerNotes": "The stones in this staff will focus your power when you cast healing spells! Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
|
||||
"weaponMystery201411Text": "Pitchfork of Feasting",
|
||||
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
|
||||
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
|
||||
@@ -605,6 +614,15 @@
|
||||
"armorSpecialWinter2018HealerText": "Mistletoe Robes",
|
||||
"armorSpecialWinter2018HealerNotes": "These robes are woven with spells for extra holiday joy. Increases Constitution by <%= con %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
|
||||
"armorSpecialSpring2018RogueText": "Feather Suit",
|
||||
"armorSpecialSpring2018RogueNotes": "This fluffy yellow costume will trick your enemies into thinking you're just a harmless ducky! Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018WarriorText": "Armor of Dawn",
|
||||
"armorSpecialSpring2018WarriorNotes": "This colorful plate is forged with the sunrise's fire. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018MageText": "Tulip Robe",
|
||||
"armorSpecialSpring2018MageNotes": "Your spell casting can only improve while clad in these soft, silky petals. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
"armorSpecialSpring2018HealerText": "Garnet Armor",
|
||||
"armorSpecialSpring2018HealerNotes": "Let this bright armor infuse your heart with power for healing. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
|
||||
"armorMystery201402Text": "Messenger Robes",
|
||||
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
|
||||
"armorMystery201403Text": "Forest Walker Armor",
|
||||
@@ -1005,6 +1023,15 @@
|
||||
"headSpecialWinter2018HealerText": "Mistletoe Hood",
|
||||
"headSpecialWinter2018HealerNotes": "This fancy hood will keep you warm with happy holiday feelings! Increases Intelligence by <%= int %>. Limited Edition 2017-2018 Winter Gear.",
|
||||
|
||||
"headSpecialSpring2018RogueText": "Duck-Billed Helm",
|
||||
"headSpecialSpring2018RogueNotes": "Quack quack! Your cuteness belies your clever and sneaky nature. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018WarriorText": "Helm of Rays",
|
||||
"headSpecialSpring2018WarriorNotes": "The brightness of this helm will dazzle any enemies nearby! Increases Strength by <%= str %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018MageText": "Tulip Helm",
|
||||
"headSpecialSpring2018MageNotes": "The fancy petals of this helm will grant you special springtime magic. Increases Perception by <%= per %>. Limited Edition 2018 Spring Gear.",
|
||||
"headSpecialSpring2018HealerText": "Garnet Circlet",
|
||||
"headSpecialSpring2018HealerNotes": "The polished gems of this circlet will enhance your mental energy. Increases Intelligence by <%= int %>. Limited Edition 2018 Spring Gear.",
|
||||
|
||||
"headSpecialGaymerxText": "Rainbow Warrior Helm",
|
||||
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
|
||||
|
||||
@@ -1334,6 +1361,11 @@
|
||||
"shieldSpecialWinter2018HealerText": "Mistletoe Bell",
|
||||
"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.",
|
||||
|
||||
"shieldSpecialSpring2018WarriorText": "Shield of the Morning",
|
||||
"shieldSpecialSpring2018WarriorNotes": "This sturdy shield glows with the glory of first light. Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
"shieldSpecialSpring2018HealerText": "Garnet Shield",
|
||||
"shieldSpecialSpring2018HealerNotes": "Despite its fancy appearance, this garnet shield is quite durable! Increases Constitution by <%= con %>. Limited Edition 2018 Spring Gear.",
|
||||
|
||||
"shieldMystery201601Text": "Resolution Slayer",
|
||||
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
|
||||
"shieldMystery201701Text": "Time-Freezer Shield",
|
||||
|
||||
@@ -145,11 +145,14 @@
|
||||
"badAmountOfGemsToSend": "Amount must be within 1 and your current number of gems.",
|
||||
"report": "Report",
|
||||
"abuseFlag": "Report violation of Community Guidelines",
|
||||
"abuseFlagModalHeading": "Report <%= name %> for 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>",
|
||||
"abuseFlagModalHeading": "Report a Violation",
|
||||
"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",
|
||||
"abuseReported": "Thank you for reporting this violation. The moderators have been notified.",
|
||||
"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.",
|
||||
"needsTextPlaceholder": "Type your message here.",
|
||||
"copyMessageAsToDo": "Copy message as To-Do",
|
||||
|
||||