Compare commits

..

120 Commits

Author SHA1 Message Date
Sabe Jones 4696237b21 4.163.0 2020-10-13 14:37:40 -05:00
Sabe Jones b7956a82ee feat(content): Pet Quest Bundle 2020-10-13 14:36:38 -05:00
Sabe Jones a5babc493f fix(tests): update analytics expectations 2020-10-13 11:08:35 -05:00
Sabe Jones 708bd4a292 chore(analytics): track first-time-purchase info 2020-10-13 10:35:44 -05:00
Sabe Jones 7cac574c31 4.162.0 2020-10-06 15:49:26 -05:00
Sabe Jones 86619a2ac9 chore(sprites): compile 2020-10-06 15:49:18 -05:00
Sabe Jones 058c1464d3 feat(content): Armoire and BGs 2020/10 2020-10-06 15:49:09 -05:00
Matteo Pagliazzi 362dea6c5c fix(shopItem): correct syntax for popover triggers, fix #12638 2020-10-03 16:55:34 +02:00
Sabe Jones 2c34972629 4.161.4 2020-10-02 15:08:26 -05:00
Sabe Jones 9bd07034a5 fix(events): make sure we don't create "fall interim" gear 2020-10-02 15:08:13 -05:00
Sabe Jones 5c7227fc02 4.161.3 2020-10-02 14:36:25 -05:00
Sabe Jones 4a99fc5a74 fix(mobile): provide interim event 2020-10-02 14:36:15 -05:00
Sabe Jones 21d008aaee 4.161.2 2020-10-01 17:08:04 -05:00
Sabe Jones 0d4ed102a0 chore(news): Bailey 2020-10-01 17:07:51 -05:00
Sabe Jones 83bcfcde06 Merge branch 'develop' into release 2020-10-01 16:52:42 -05:00
Bart Enkelaar 32ac00b417 Fix vue test stacktraces (#12612)
* Issue 10786 - Add unit test for Home component

* Issue 10786 - Improve test setup and test invite parameter variations

* Issue 10786 - Improve Vue.js test isolation by adding async keyword to dispatch function

* Issue 10786 - Missing action does not need to be awaited

* fix(vuejs-unit-tests): Fewer stacktraces in avatar.spec.js

* No more stacktraces in avatar.spec.js

* Register dummy directive in chatCard.spec.js

* Resolve stacktraces in column.spec.js

* Resolve stacktrace in notifications.spec.js

* Resolve warnings in user.spec.js

* Resolve asynchronous stacktrace from home.spec.js

* Remove unnecessary mount call.

* Clear up some let clutter in column.spec.js
2020-10-01 19:08:34 +02:00
Sabe Jones 2a00aefdd6 4.161.1 2020-10-01 11:24:41 -05:00
Sabe Jones 679d615224 Squashed commit of the following:
commit dd4d53a68ccf547857c05402cdb569460589a223
Author: Sabe Jones <sabrecat@gmail.com>
Date:   Thu Oct 1 11:17:04 2020 -0500

    refactor(event): needless event thing

commit d1254af5218f6ae85bc64b45c55aea46388b665b
Author: Sabe Jones <sabrecat@gmail.com>
Date:   Thu Oct 1 10:56:06 2020 -0500

    fix(event): clone, not reassign

commit 50bd3199dc35ff215f7cb80b8e5db6770e7f436a
Author: Sabe Jones <sabrecat@gmail.com>
Date:   Thu Oct 1 10:36:39 2020 -0500

    fix(event): create interim period and handle it in gear generation
2020-10-01 11:24:31 -05:00
Melior 73c5764d63 Merge branch 'develop' of github.com:HabitRPG/habitica into develop 2020-09-29 21:54:24 +02:00
Sabe Jones 205d2758de Merge branch 'release' into develop 2020-09-29 14:19:29 -05:00
Sabe Jones efe7ea52bc 4.161.0 2020-09-29 14:16:38 -05:00
Sabe Jones 938152edea chore(news): Bailey 2020-09-29 14:16:25 -05:00
Jostein Skjånes 3e1e9b6d56 Translated using Weblate (Norwegian Bokmål)
Currently translated at 71.4% (125 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/nb_NO/
2020-09-29 18:02:36 +02:00
Jostein Skjånes 8b01d1a88c Translated using Weblate (Norwegian Bokmål)
Currently translated at 92.4% (196 of 212 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/nb_NO/
2020-09-29 18:02:36 +02:00
Kitty Kat 9910fb7b99 Translated using Weblate (Hindi)
Currently translated at 13.1% (43 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/hi/
2020-09-29 15:01:40 +02:00
Yowi a91d639606 Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/es_419/
2020-09-29 15:01:39 +02:00
そら eaeb942ad8 Translated using Weblate (Japanese)
Currently translated at 96.0% (168 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2020-09-29 15:01:38 +02:00
Yowi c509d0edbd Translated using Weblate (Spanish (Latin America))
Currently translated at 87.0% (108 of 124 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/es_419/
2020-09-29 15:01:37 +02:00
Yowi 59566d9d65 Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/es_419/
2020-09-29 15:01:37 +02:00
Yowi e457b8ddc0 Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/es_419/
2020-09-29 15:01:36 +02:00
Yowi a43f7734dc Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Challenge
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/es_419/
2020-09-29 15:01:36 +02:00
Yowi 2618825ce2 Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/es_419/
2020-09-29 15:01:35 +02:00
そら af35cbb743 Translated using Weblate (Japanese)
Currently translated at 98.8% (178 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
2020-09-29 15:01:34 +02:00
Yıldıray 989361bb46 Translated using Weblate (Turkish)
Currently translated at 97.9% (292 of 298 strings)

Translation: Habitica/Generic
Translate-URL: https://translate.habitica.com/projects/habitica/generic/tr/
2020-09-29 05:42:40 +02:00
Yıldıray b18225561e Translated using Weblate (Turkish)
Currently translated at 94.4% (170 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/tr/
2020-09-29 05:42:39 +02:00
そら a500119879 Translated using Weblate (Japanese)
Currently translated at 96.0% (168 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2020-09-28 21:28:48 +02:00
Yowi 4d2a738748 Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (140 of 140 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/es_419/
2020-09-28 21:28:47 +02:00
Yowi 38047b9d5c Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (230 of 230 strings)

Translation: Habitica/Character
Translate-URL: https://translate.habitica.com/projects/habitica/character/es_419/
2020-09-28 21:28:46 +02:00
そら 035a6be8b7 Translated using Weblate (Japanese)
Currently translated at 99.0% (499 of 504 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
2020-09-28 21:28:45 +02:00
Chalda Pnuzig e3bc4a5fc7 Translated using Weblate (Italian)
Currently translated at 100.0% (716 of 716 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/it/
2020-09-28 21:28:44 +02:00
そら d8d825c6b0 Translated using Weblate (Japanese)
Currently translated at 98.8% (178 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
2020-09-28 21:28:41 +02:00
Sabe Jones f47c243cb0 fix(potions): previously-available text 2020-09-28 09:52:49 -05:00
dependabot-preview[bot] 8c31f944fa build(deps): bump vue-router from 3.4.3 to 3.4.5 in /website/client (#12622)
Bumps [vue-router](https://github.com/vuejs/vue-router) from 3.4.3 to 3.4.5.
- [Release notes](https://github.com/vuejs/vue-router/releases)
- [Changelog](https://github.com/vuejs/vue-router/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-router/compare/v3.4.3...v3.4.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-28 11:03:22 +02:00
dependabot-preview[bot] 931403ef0b build(deps): bump amplitude-js from 7.1.1 to 7.2.2 in /website/client (#12626)
Bumps [amplitude-js](https://github.com/amplitude/amplitude-javascript) from 7.1.1 to 7.2.2.
- [Release notes](https://github.com/amplitude/amplitude-javascript/releases)
- [Changelog](https://github.com/amplitude/Amplitude-JavaScript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/amplitude/amplitude-javascript/compare/v7.1.1...v7.2.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-28 11:03:06 +02:00
dependabot-preview[bot] 17ff5f4640 build(deps): bump moment from 2.28.0 to 2.29.0 in /website/client (#12620)
Bumps [moment](https://github.com/moment/moment) from 2.28.0 to 2.29.0.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.28.0...2.29.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-28 11:02:52 +02:00
dependabot-preview[bot] ea590307c9 build(deps): bump moment from 2.28.0 to 2.29.0 (#12619)
Bumps [moment](https://github.com/moment/moment) from 2.28.0 to 2.29.0.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.28.0...2.29.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-28 11:02:45 +02:00
dependabot-preview[bot] e12597b330 build(deps): bump jwks-rsa from 1.9.0 to 1.10.1 (#12616)
Bumps [jwks-rsa](https://github.com/auth0/node-jwks-rsa) from 1.9.0 to 1.10.1.
- [Release notes](https://github.com/auth0/node-jwks-rsa/releases)
- [Changelog](https://github.com/auth0/node-jwks-rsa/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/node-jwks-rsa/compare/v1.9.0...v1.10.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
2020-09-28 11:02:30 +02:00
Dennis Spaag dd92b20ef5 Translated using Weblate (Latin)
Currently translated at 78.7% (1710 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/la/
2020-09-28 08:05:16 +02:00
blacksheep47 fd0365eec9 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2020-09-28 08:05:12 +02:00
blacksheep47 cdeefcf4e9 Translated using Weblate (Chinese (Simplified))
Currently translated at 99.0% (2150 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2020-09-28 03:13:28 +02:00
blacksheep47 5d799546ff Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
2020-09-28 02:30:53 +02:00
Yowi 931bd33a9f Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (328 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/es_419/
2020-09-28 02:30:53 +02:00
Yowi 0b07aae1bb Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (362 of 362 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/
2020-09-28 02:30:52 +02:00
blacksheep47 4ff769db0c Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
2020-09-28 02:30:51 +02:00
blacksheep47 5456cc2348 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.7% (2143 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
2020-09-28 02:30:50 +02:00
blacksheep47 97baa69a8d Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
2020-09-28 02:30:46 +02:00
そら 66644b7369 Translated using Weblate (Japanese)
Currently translated at 96.0% (168 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2020-09-27 17:15:38 +02:00
Chalda Pnuzig 4dcac53d6d Translated using Weblate (Italian)
Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/it/
2020-09-27 17:15:37 +02:00
Chalda Pnuzig ead1c1b851 Translated using Weblate (Italian)
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/it/
2020-09-27 17:15:37 +02:00
Chalda Pnuzig f3a1ac425f Translated using Weblate (Italian)
Currently translated at 100.0% (504 of 504 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/it/
2020-09-27 17:15:36 +02:00
Chalda Pnuzig e450e7d975 Translated using Weblate (Italian)
Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/it/
2020-09-27 17:15:35 +02:00
そら 4984f99de0 Translated using Weblate (Japanese)
Currently translated at 100.0% (124 of 124 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/
2020-09-27 17:15:31 +02:00
Chalda Pnuzig 3ae6bfcb57 Translated using Weblate (Italian)
Currently translated at 100.0% (362 of 362 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/it/
2020-09-27 17:15:30 +02:00
Koldo Almandoz Forcen 5c6f727c4b Translated using Weblate (Basque)
Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/eu/
2020-09-27 01:40:50 +02:00
Anonymous 4bbb75a6a3 Translated using Weblate (Basque)
Currently translated at 37.6% (35 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-27 01:40:50 +02:00
Koldo Almandoz Forcen a2dee15289 Translated using Weblate (Basque)
Currently translated at 37.6% (35 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-27 01:40:50 +02:00
Koldo Almandoz Forcen db59a4b925 Translated using Weblate (Spanish)
Currently translated at 82.2% (144 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/es/
2020-09-27 01:40:49 +02:00
@ALESTHETIC 96aaa6f0e3 Translated using Weblate (Spanish)
Currently translated at 96.4% (537 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2020-09-27 01:40:49 +02:00
Koldo Almandoz Forcen 9eb7654a3c Translated using Weblate (Spanish)
Currently translated at 96.4% (537 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2020-09-27 01:40:48 +02:00
Anonymous d2902910bd Translated using Weblate (Turkish)
Currently translated at 61.2% (57 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/tr/
2020-09-27 01:40:47 +02:00
Ahmet Burak Baraklı 3a7c9b1c1f Translated using Weblate (Turkish)
Currently translated at 61.2% (57 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/tr/
2020-09-27 01:40:47 +02:00
@ALESTHETIC 6c214df289 Translated using Weblate (Spanish)
Currently translated at 95.8% (534 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2020-09-26 23:52:17 +02:00
Koldo Almandoz Forcen c2fe33650c Translated using Weblate (Spanish)
Currently translated at 95.8% (534 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2020-09-26 23:52:14 +02:00
Anonymous 53748d62f6 Translated using Weblate (Spanish)
Currently translated at 95.5% (532 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
2020-09-26 23:48:10 +02:00
Anonymous c0364c0e00 Translated using Weblate (Basque)
Currently translated at 15.0% (14 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-26 22:40:48 +02:00
Koldo Almandoz Forcen 2ccaa02e7e Translated using Weblate (Basque)
Currently translated at 15.0% (14 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-26 22:40:45 +02:00
Anonymous 943bf1442d Translated using Weblate (Basque)
Currently translated at 7.5% (7 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-26 22:36:47 +02:00
Koldo Almandoz Forcen 76f13abee1 Translated using Weblate (Basque)
Currently translated at 7.5% (7 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-26 22:36:45 +02:00
Anonymous 06a0147a97 Translated using Weblate (Basque)
Currently translated at 6.4% (6 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/eu/
2020-09-26 22:35:23 +02:00
そら 03984df562 Translated using Weblate (Japanese)
Currently translated at 96.0% (168 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2020-09-26 09:52:29 +02:00
Yowi f95ad1201d Translated using Weblate (Spanish (Latin America))
Currently translated at 85.3% (611 of 716 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/es_419/
2020-09-26 05:40:00 +02:00
Yowi 91e311284a Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (1 of 1 strings)

Translation: Habitica/Merch
Translate-URL: https://translate.habitica.com/projects/habitica/merch/es_419/
2020-09-26 05:39:56 +02:00
Benoit Hetru ab554320f3 Translated using Weblate (French)
Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
2020-09-26 05:39:56 +02:00
Bénédicte Botelle e5afb89706 Translated using Weblate (French)
Currently translated at 100.0% (56 of 56 strings)

Translation: Habitica/Spells
Translate-URL: https://translate.habitica.com/projects/habitica/spells/fr/
2020-09-26 05:39:55 +02:00
Yowi 0c1d78acdb Translated using Weblate (Spanish (Latin America))
Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es_419/
2020-09-26 05:39:55 +02:00
Bénédicte Botelle 3361ed1f2d Translated using Weblate (French)
Currently translated at 100.0% (124 of 124 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/
2020-09-26 05:39:54 +02:00
Benoit Hetru 4d7d8e84c5 Translated using Weblate (French)
Currently translated at 100.0% (124 of 124 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/
2020-09-26 05:39:53 +02:00
Benoit Hetru 28d3611c4a Translated using Weblate (French)
Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
2020-09-26 05:39:53 +02:00
Benoit Hetru fbb758fa89 Translated using Weblate (French)
Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
2020-09-26 05:39:52 +02:00
Bénédicte Botelle 40f9651378 Translated using Weblate (French)
Currently translated at 100.0% (557 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
2020-09-26 05:39:48 +02:00
Benoit Hetru e90041976b Translated using Weblate (French)
Currently translated at 100.0% (557 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
2020-09-26 05:39:48 +02:00
Sabe Jones 6d737330f2 chore(sprites): compile 2020-09-25 16:06:45 -05:00
Sabe Jones 910c49df4f feat(content): Mystery Items and avatar customizations 2020-09-25 16:06:37 -05:00
Melior 1a46fac7bf Translated using Weblate (French)
Currently translated at 100.0% (124 of 124 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/

Translated using Weblate (French)

Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/

Translated using Weblate (Japanese)

Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ja/

Translated using Weblate (Japanese)

Currently translated at 96.0% (168 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/es_419/

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/es_419/

Translated using Weblate (Spanish (Latin America))

Currently translated at 81.5% (1771 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es_419/
2020-09-25 22:38:13 +02:00
Sabe Jones 6bbdd74927 Merge branch 'release' into develop 2020-09-25 14:47:10 -05:00
Sabe Jones dd4c9c2536 4.160.1 2020-09-25 14:46:14 -05:00
Sabe Jones 0a6b22fdd9 fix(potions): erroneous Ghost overbuy warnings 2020-09-25 14:45:56 -05:00
RaitheOfDureya d940066ea2 Removed unused I18N strings from the pets.json files (related to issue #9957) (#12559)
* Removed unused I18N strings from the `pets.json` file (locales\en)

* Removed unused I18N strings from the `pets.json` file in all the languages

Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
2020-09-25 11:49:13 +02:00
RaitheOfDureya 7be3143e55 Removed unused I18N strings from the messages.json files (related to issue #9957) (#12563)
* Removed unused I18N strings from the `messages.json` file (locales\en)

* Removed unused I18N `messages.json` strings from all the other languages

Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
2020-09-25 11:47:36 +02:00
RaitheOfDureya b42875e2e1 Removed unused I18N strings from the quests.json files (related to issue #9957) (#12558)
* Removed unused I18N strings from the `quests.json` file (locales/en)

* Remove whereAreMyQuests, yourQuests and getMoreQuests (locales/en)

* Removed unused I18N `quests.json` strings from all the others languages

Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
2020-09-25 11:47:17 +02:00
Matteo Pagliazzi 6c6e8f0001 Merge branch 'benkelaar-12482-xml-export' into develop 2020-09-25 11:21:35 +02:00
Matteo Pagliazzi 8219dfd9e6 fix(integration tests): remove duplicate test file 2020-09-25 11:21:24 +02:00
Matteo Pagliazzi 025b994224 Merge branch '12482-xml-export' of https://github.com/benkelaar/habitica into benkelaar-12482-xml-export 2020-09-25 11:20:11 +02:00
Alexandrea Beh b056763f09 Issue 11450 Adding keyboard accessibility to task board controls and purchases (#12363)
* intial draft adding keyboard accessibility to task board controls

* cleanup

* finish adding keyboard accessibility for task dropdown, rewards

* add notEnough conditions to disable purchase button

* fix(lint): remove console.log from buy modal

* add missing comma, use focus-within instead of focus-visible

* missed one more focus visible

* override browser default focus styling

* move focus styling to tasks only

* add rounded border

* fix element height on focus, rounded borders

* fix dropdown margin to avoid element resizing

* styling updates on focus

* fix spacing around task checklist

* fix border around dropdown item

* remove spacing that made tasks with notes jump

* keep disabled habit control styling when not focused

* revert unintended spacing

Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
2020-09-25 10:29:13 +02:00
Bart Enkelaar 6e91326648 fix(dataexport) - 12482 - Extract xml marshalling into library
- Add integration test on dataexport endpoint
- Add library with unit test for xml marshalling
2020-09-25 08:57:05 +02:00
Bart Enkelaar 8b9c76a2b7 fix(12842) - Remove duplication in gulp-tests.js 2020-09-25 08:57:05 +02:00
Bart Enkelaar c4fc2d825d fix(export) - Issue 12482 - Fix messages in xml export. 2020-09-25 08:57:05 +02:00
Melior 411ac94986 Merge branch 'develop' of github.com:HabitRPG/habitica into develop 2020-09-24 21:34:24 +02:00
Jostein Skjånes 8b952a6caf Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (173 of 173 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/nb_NO/
2020-09-24 21:21:28 +02:00
Jostein Skjånes b21bf0d428 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (134 of 134 strings)

Translation: Habitica/Tasks
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/nb_NO/
2020-09-24 21:21:26 +02:00
Jostein Skjånes 1b5134c0bc Translated using Weblate (Norwegian Bokmål)
Currently translated at 88.5% (124 of 140 strings)

Translation: Habitica/Quests
Translate-URL: https://translate.habitica.com/projects/habitica/quests/nb_NO/
2020-09-24 21:21:26 +02:00
Jostein Skjånes 22eaefb3b2 Translated using Weblate (Norwegian Bokmål)
Currently translated at 100.0% (173 of 173 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/nb_NO/
2020-09-24 15:42:24 +02:00
Anas HARNOUCH b9710c4180 Translated using Weblate (French)
Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
2020-09-24 15:42:23 +02:00
blacksheep47 919b30c237 Translated using Weblate (Chinese (Simplified))
Currently translated at 97.8% (185 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
2020-09-24 15:42:22 +02:00
Anas HARNOUCH 9a51d200f7 Translated using Weblate (French)
Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
2020-09-24 15:42:22 +02:00
Bénédicte Botelle 170df77c3d Translated using Weblate (French)
Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
2020-09-24 15:42:21 +02:00
Anas HARNOUCH 043f34d619 Translated using Weblate (French)
Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
2020-09-24 15:42:21 +02:00
Kitty Kat 0b20f8a980 Translated using Weblate (Hindi)
Currently translated at 75.7% (422 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/hi/
2020-09-24 06:30:57 +02:00
そら 7f208eb141 Translated using Weblate (Japanese)
Currently translated at 96.0% (168 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
2020-09-24 06:30:56 +02:00
Melior 75a196dd3b Translated using Weblate (Hindi)
Currently translated at 11.8% (39 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/hi/

Translated using Weblate (Chinese (Hong Kong))

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hant_HK/

Translated using Weblate (Hungarian)

Currently translated at 31.1% (29 of 93 strings)

Translation: Habitica/Achievements
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/hu/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (146 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (173 of 173 strings)

Translation: Habitica/Npc
Translate-URL: https://translate.habitica.com/projects/habitica/npc/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 67.4% (118 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (28 of 28 strings)

Translation: Habitica/Rebirth
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 86.8% (622 of 716 strings)

Translation: Habitica/Questscontent
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (362 of 362 strings)

Translation: Habitica/Content
Translate-URL: https://translate.habitica.com/projects/habitica/content/nb_NO/

Translated using Weblate (Dutch)

Currently translated at 98.6% (2141 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 36.3% (53 of 146 strings)

Translation: Habitica/Pets
Translate-URL: https://translate.habitica.com/projects/habitica/pets/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 2.4% (8 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 80.3% (45 of 56 strings)

Translation: Habitica/Faq
Translate-URL: https://translate.habitica.com/projects/habitica/faq/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 78.2% (436 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (8 of 8 strings)

Translation: Habitica/Overview
Translate-URL: https://translate.habitica.com/projects/habitica/overview/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (67 of 67 strings)

Translation: Habitica/Messages
Translate-URL: https://translate.habitica.com/projects/habitica/messages/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (27 of 27 strings)

Translation: Habitica/Loginincentives
Translate-URL: https://translate.habitica.com/projects/habitica/loginincentives/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 78.4% (1703 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (63 of 63 strings)

Translation: Habitica/Defaulttasks
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (4 of 4 strings)

Translation: Habitica/Noscript
Translate-URL: https://translate.habitica.com/projects/habitica/noscript/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 75.5% (421 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (6 of 6 strings)

Translation: Habitica/Inventory
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 78.4% (1703 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (15 of 15 strings)

Translation: Habitica/Death
Translate-URL: https://translate.habitica.com/projects/habitica/death/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (70 of 70 strings)

Translation: Habitica/Contrib
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (124 of 124 strings)

Translation: Habitica/Communityguidelines
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/nb_NO/

Translated using Weblate (Spanish (Latin America))

Currently translated at 81.5% (1771 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es_419/

Translated using Weblate (Japanese)

Currently translated at 99.0% (499 of 504 strings)

Translation: Habitica/Groups
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 75.5% (421 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nb_NO/

Translated using Weblate (Norwegian Bokmål)

Currently translated at 75.5% (421 of 557 strings)

Translation: Habitica/Backgrounds
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nb_NO/

Translated using Weblate (Italian)

Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/it/

Translated using Weblate (French)

Currently translated at 98.8% (173 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/

Translated using Weblate (Italian)

Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/it/

Translated using Weblate (Italian)

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/it/

Translated using Weblate (Italian)

Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/it/

Translated using Weblate (Hindi)

Currently translated at 11.8% (39 of 328 strings)

Translation: Habitica/Front
Translate-URL: https://translate.habitica.com/projects/habitica/front/hi/

Translated using Weblate (Russian)

Currently translated at 91.4% (160 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/

Translated using Weblate (German)

Currently translated at 100.0% (175 of 175 strings)

Translation: Habitica/Subscriber
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/de/

Translated using Weblate (Spanish (Latin America))

Currently translated at 81.5% (1771 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es_419/

Translated using Weblate (Russian)

Currently translated at 98.4% (186 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/

Translated using Weblate (German)

Currently translated at 100.0% (189 of 189 strings)

Translation: Habitica/Limited
Translate-URL: https://translate.habitica.com/projects/habitica/limited/de/

Translated using Weblate (Russian)

Currently translated at 94.6% (2054 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2171 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/

Translated using Weblate (German)

Currently translated at 99.5% (2162 of 2171 strings)

Translation: Habitica/Gear
Translate-URL: https://translate.habitica.com/projects/habitica/gear/de/

Translated using Weblate (Russian)

Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt_BR/

Translated using Weblate (French)

Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/fr/

Translated using Weblate (German)

Currently translated at 100.0% (180 of 180 strings)

Translation: Habitica/Settings
Translate-URL: https://translate.habitica.com/projects/habitica/settings/de/
2020-09-24 02:59:26 +02:00
399 changed files with 23663 additions and 28895 deletions
+41 -103
View File
@@ -3,9 +3,7 @@ import { exec } from 'child_process';
import gulp from 'gulp';
import os from 'os';
import nconf from 'nconf';
import {
pipe,
} from './taskHelper';
import { pipe } from './taskHelper';
import {
getDevelopmentConnectionUrl,
getDefaultConnectionOptions,
@@ -21,15 +19,16 @@ const TEST_DB_URI = nconf.get('TEST_DB_URI');
const SANITY_TEST_COMMAND = 'npm run test:sanity';
const COMMON_TEST_COMMAND = 'npm run test:common';
const CONTENT_TEST_COMMAND = 'npm run test:content';
const CONTENT_OPTIONS = { maxBuffer: 1024 * 500 };
const LIMIT_MAX_BUFFER_OPTIONS = { maxBuffer: 1024 * 500 };
/* Helper methods for reporting test summary */
/* Helper method for reporting test summary */
const testResults = [];
const testCount = (stdout, regexp) => {
const match = stdout.match(regexp);
return parseInt(match && (match[1] || 0), 10);
};
/* Helper methods to correctly run child test processes */
const testBin = (string, additionalEnvVariables = '') => {
if (os.platform() === 'win32') {
if (additionalEnvVariables !== '') {
@@ -41,6 +40,15 @@ const testBin = (string, additionalEnvVariables = '') => {
return `NODE_ENV=test ${additionalEnvVariables} ${string}`;
};
function runInChildProcess (command, options = {}, envVariables = '') {
return done => pipe(exec(testBin(command, envVariables), options, done));
}
function integrationTestCommand (testDir, coverageDir) {
return `istanbul cover --dir coverage/${coverageDir} --report lcovonly node_modules/mocha/bin/_mocha -- ${testDir} --recursive --require ./test/helpers/start-server`;
}
/* Test task definitions */
gulp.task('test:nodemon', gulp.series(done => {
process.env.PORT = TEST_SERVER_PORT; // eslint-disable-line no-process-env
process.env.NODE_DB_URI = TEST_DB_URI; // eslint-disable-line no-process-env
@@ -82,31 +90,9 @@ gulp.task('test:prepare', gulp.series(
done => done(),
));
gulp.task('test:sanity', cb => {
const runner = exec(
testBin(SANITY_TEST_COMMAND),
err => {
if (err) {
process.exit(1);
}
cb();
},
);
pipe(runner);
});
gulp.task('test:sanity', runInChildProcess(SANITY_TEST_COMMAND));
gulp.task('test:common', gulp.series('test:prepare:build', cb => {
const runner = exec(
testBin(COMMON_TEST_COMMAND),
err => {
if (err) {
process.exit(1);
}
cb();
},
);
pipe(runner);
}));
gulp.task('test:common', gulp.series('test:prepare:build', runInChildProcess(COMMON_TEST_COMMAND)));
gulp.task('test:common:clean', cb => {
pipe(exec(testBin(COMMON_TEST_COMMAND), () => cb()));
@@ -130,22 +116,11 @@ gulp.task('test:common:safe', gulp.series('test:prepare:build', cb => {
pipe(runner);
}));
gulp.task('test:content', gulp.series('test:prepare:build', cb => {
const runner = exec(
testBin(CONTENT_TEST_COMMAND),
CONTENT_OPTIONS,
err => {
if (err) {
process.exit(1);
}
cb();
},
);
pipe(runner);
}));
gulp.task('test:content', gulp.series('test:prepare:build',
runInChildProcess(CONTENT_TEST_COMMAND, LIMIT_MAX_BUFFER_OPTIONS)));
gulp.task('test:content:clean', cb => {
pipe(exec(testBin(CONTENT_TEST_COMMAND), CONTENT_OPTIONS, () => cb()));
pipe(exec(testBin(CONTENT_TEST_COMMAND), LIMIT_MAX_BUFFER_OPTIONS, () => cb()));
});
gulp.task('test:content:watch', gulp.series('test:content:clean', () => gulp.watch(['common/script/content/**', 'test/**'], gulp.series('test:content:clean', done => done()))));
@@ -153,7 +128,7 @@ gulp.task('test:content:watch', gulp.series('test:content:clean', () => gulp.wat
gulp.task('test:content:safe', gulp.series('test:prepare:build', cb => {
const runner = exec(
testBin(CONTENT_TEST_COMMAND),
CONTENT_OPTIONS,
LIMIT_MAX_BUFFER_OPTIONS,
(err, stdout) => { // eslint-disable-line handle-callback-err
testResults.push({
suite: 'Content Specs\t',
@@ -167,76 +142,39 @@ gulp.task('test:content:safe', gulp.series('test:prepare:build', cb => {
pipe(runner);
}));
gulp.task('test:api:unit:run', done => {
const runner = exec(
testBin('istanbul cover --dir coverage/api-unit node_modules/mocha/bin/_mocha -- test/api/unit --recursive --require ./test/helpers/start-server'),
err => {
if (err) {
process.exit(1);
}
done();
},
);
pipe(runner);
});
gulp.task('test:api:unit:run',
runInChildProcess(integrationTestCommand('test/api/unit', 'coverage/api-unit')));
gulp.task('test:api:unit:watch', () => gulp.watch(['website/server/libs/*', 'test/api/unit/**/*', 'website/server/controllers/**/*'], gulp.series('test:api:unit:run', done => done())));
gulp.task('test:api-v3:integration', gulp.series('test:prepare:mongo', done => {
const runner = exec(
testBin('istanbul cover --dir coverage/api-v3-integration --report lcovonly node_modules/mocha/bin/_mocha -- test/api/v3/integration --recursive --require ./test/helpers/start-server'),
{ maxBuffer: 500 * 1024 },
err => {
if (err) {
process.exit(1);
}
done();
},
);
pipe(runner);
}));
gulp.task('test:api-v3:integration', gulp.series('test:prepare:mongo',
runInChildProcess(
integrationTestCommand('test/api/v3/integration', 'coverage/api-v3-integration'),
LIMIT_MAX_BUFFER_OPTIONS,
)));
gulp.task('test:api-v3:integration:watch', () => gulp.watch([
'website/server/controllers/api-v3/**/*', 'common/script/ops/*', 'website/server/libs/*.js',
'test/api/v3/integration/**/*',
], gulp.series('test:api-v3:integration', done => done())));
gulp.task('test:api-v3:integration:separate-server', done => {
const runner = exec(
testBin('mocha test/api/v3/integration --recursive --require ./test/helpers/start-server', 'LOAD_SERVER=0'),
{ maxBuffer: 500 * 1024 },
err => done(err),
);
gulp.task('test:api-v3:integration:separate-server', runInChildProcess(
'mocha test/api/v3/integration --recursive --require ./test/helpers/start-server',
LIMIT_MAX_BUFFER_OPTIONS,
'LOAD_SERVER=0',
));
pipe(runner);
});
gulp.task('test:api-v4:integration', gulp.series('test:prepare:mongo',
runInChildProcess(
integrationTestCommand('test/api/v4', 'api-v4-integration'),
LIMIT_MAX_BUFFER_OPTIONS,
)));
gulp.task('test:api-v4:integration', gulp.series('test:prepare:mongo', done => {
const runner = exec(
testBin('istanbul cover --dir coverage/api-v4-integration --report lcovonly node_modules/mocha/bin/_mocha -- test/api/v4 --recursive --require ./test/helpers/start-server'),
{ maxBuffer: 500 * 1024 },
err => {
if (err) {
process.exit(1);
}
done();
},
);
pipe(runner);
}));
gulp.task('test:api-v4:integration:separate-server', done => {
const runner = exec(
testBin('mocha test/api/v4 --recursive --require ./test/helpers/start-server', 'LOAD_SERVER=0'),
{ maxBuffer: 500 * 1024 },
err => done(err),
);
pipe(runner);
});
gulp.task('test:api-v4:integration:separate-server', runInChildProcess(
'mocha test/api/v4 --recursive --require ./test/helpers/start-server',
LIMIT_MAX_BUFFER_OPTIONS,
'LOAD_SERVER=0',
));
gulp.task('test:api:unit', gulp.series(
'test:prepare:mongo',
+18 -27
View File
@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.160.0",
"version": "4.163.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -1312,9 +1312,9 @@
"integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g=="
},
"@types/express": {
"version": "4.17.7",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz",
"integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==",
"version": "4.17.8",
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.8.tgz",
"integrity": "sha512-wLhcKh3PMlyA2cNAB9sjM1BntnhPMiM0JOBwPBqttjHev2428MLEB4AYVN+d8s2iyCVZac+o41Pflm/ZH5vLXQ==",
"requires": {
"@types/body-parser": "*",
"@types/express-serve-static-core": "*",
@@ -1332,9 +1332,9 @@
}
},
"@types/express-serve-static-core": {
"version": "4.17.9",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz",
"integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==",
"version": "4.17.13",
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz",
"integrity": "sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==",
"requires": {
"@types/node": "*",
"@types/qs": "*",
@@ -1445,9 +1445,9 @@
"optional": true
},
"@types/qs": {
"version": "6.9.4",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz",
"integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ=="
"version": "6.9.5",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz",
"integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ=="
},
"@types/range-parser": {
"version": "1.2.3",
@@ -2141,7 +2141,6 @@
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
"dev": true,
"requires": {
"follow-redirects": "1.5.10"
}
@@ -8379,27 +8378,19 @@
}
},
"jwks-rsa": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.9.0.tgz",
"integrity": "sha512-UPCfQQg0s2kF2Ju6UFJrQH73f7MaVN/hKBnYBYOp+X9KN4y6TLChhLtaXS5nRKbZqshwVdrZ9OY63m/Q9CLqcg==",
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.10.1.tgz",
"integrity": "sha512-UmjOsATVu7eQr17wbBCS+BSoz5LFtl57PtNXHbHFeT1WKomHykCHtn7c8inWVI7tpnsy6CZ1KOMJTgipFwXPig==",
"requires": {
"@types/express-jwt": "0.0.42",
"axios": "^0.19.2",
"debug": "^4.1.0",
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "^5.0.0",
"jsonwebtoken": "^8.5.1",
"limiter": "^1.1.5",
"lru-memoizer": "^2.1.2",
"ms": "^2.1.2"
},
"dependencies": {
"axios": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
"requires": {
"follow-redirects": "1.5.10"
}
}
}
},
"jws": {
@@ -9355,9 +9346,9 @@
"integrity": "sha1-EUyUlnPiqKNenTV4hSeqN7Z52is="
},
"moment": {
"version": "2.28.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz",
"integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw=="
"version": "2.29.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.0.tgz",
"integrity": "sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA=="
},
"moment-recur": {
"version": "1.0.7",
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.160.0",
"version": "4.163.0",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.11.6",
@@ -42,11 +42,11 @@
"in-app-purchase": "^1.11.3",
"js2xmlparser": "^4.0.1",
"jsonwebtoken": "^8.5.1",
"jwks-rsa": "^1.9.0",
"jwks-rsa": "^1.10.1",
"lodash": "^4.17.20",
"merge-stream": "^2.0.0",
"method-override": "^3.0.0",
"moment": "^2.28.0",
"moment": "^2.29.0",
"moment-recur": "^1.0.7",
"mongoose": "^5.10.3",
"morgan": "^1.10.0",
@@ -248,6 +248,7 @@ describe('payments/index', () => {
quantity: 1,
gift: true,
purchaseValue: 15,
firstPurchase: true,
headers: {
'x-client': 'habitica-web',
'user-agent': '',
@@ -345,6 +346,7 @@ describe('payments/index', () => {
quantity: 1,
gift: false,
purchaseValue: 15,
firstPurchase: true,
headers: {
'x-client': 'habitica-web',
'user-agent': '',
+44
View File
@@ -0,0 +1,44 @@
import * as xmlMarshaller from '../../../../website/server/libs/xmlMarshaller';
describe('xml marshaller marshalls user data', () => {
const minimumUser = {
pinnedItems: [],
unpinnedItems: [],
inbox: {},
};
function userDataWith (fields) {
return { ...minimumUser, ...fields };
}
it('maps the newMessages field to have id as a value in a list.', () => {
const userData = userDataWith({
newMessages: {
'283171a5-422c-4991-bc78-95b1b5b51629': {
name: 'The Language Hackers',
value: true,
},
'283171a6-422c-4991-bc78-95b1b5b51629': {
name: 'The Bug Hackers',
value: false,
},
},
});
const xml = xmlMarshaller.marshallUserData(userData);
expect(xml).to.equal(`<user>
<inbox/>
<newMessages>
<id>283171a5-422c-4991-bc78-95b1b5b51629</id>
<name>The Language Hackers</name>
<value>true</value>
</newMessages>
<newMessages>
<id>283171a6-422c-4991-bc78-95b1b5b51629</id>
<name>The Bug Hackers</name>
<value>false</value>
</newMessages>
</user>`);
});
});
+35 -31
View File
@@ -4891,14 +4891,6 @@
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
"integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
},
"@types/mini-css-extract-plugin": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/@types/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.1.tgz",
"integrity": "sha512-+mN04Oszdz9tGjUP/c1ReVwJXxSniLd7lF++sv+8dkABxVNthg6uccei+4ssKxRHGoMmPxdn7uBdJWONSJGTGQ==",
"requires": {
"@types/webpack": "*"
}
},
"@types/minimatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@@ -6444,6 +6436,11 @@
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6547,22 +6544,19 @@
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.0.0-beta.7",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.7.tgz",
"integrity": "sha512-xQ8/GZmRPdQ3EinnE0IXwdVoDzh7Dowo0MowoyBuScEBXrRabw6At5/IdtD3waKklKW5PGokPsm8KRN6rvQ1cw==",
"version": "npm:vue-loader@16.0.0-beta.8",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.8.tgz",
"integrity": "sha512-oouKUQWWHbSihqSD7mhymGPX1OQ4hedzAHyvm8RdyHh6m3oIvoRF+NM45i/bhNOlo8jCnuJhaSUf/6oDjv978g==",
"requires": {
"@types/mini-css-extract-plugin": "^0.9.1",
"chalk": "^3.0.0",
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^1.2.3",
"merge-source-map": "^1.1.0",
"source-map": "^0.6.1"
"loader-utils": "^2.0.0"
},
"dependencies": {
"chalk": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -6573,6 +6567,16 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"loader-utils": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -6965,9 +6969,9 @@
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM="
},
"amplitude-js": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-7.1.1.tgz",
"integrity": "sha512-grEQf0p4V/q4aIcGYdGEJ6EquBXu91R/RorsYTQvh9O6sxjpwHf5vSDICQJq7twEElBrSHoSF77GUvC9ZTBj4A==",
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/amplitude-js/-/amplitude-js-7.2.2.tgz",
"integrity": "sha512-Y1/kw/NaxMdqwBnkbjPywpjPbSmuVuszFLQ9tw56P6YraljvbMC93afHQvLC/3zG5SImDnykbg/8HxrWFDhsLg==",
"requires": {
"@amplitude/ua-parser-js": "0.7.24",
"blueimp-md5": "^2.10.0",
@@ -8193,9 +8197,9 @@
"integrity": "sha512-aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg=="
},
"blueimp-md5": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.17.0.tgz",
"integrity": "sha512-x5PKJHY5rHQYaADj6NwPUR2QRCUVSggPzrUKkeENpj871o9l9IefJbO2jkT5UvYykeOK9dx0VmkIo6dZ+vThYw=="
"version": "2.18.0",
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.18.0.tgz",
"integrity": "sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q=="
},
"bn.js": {
"version": "5.1.3",
@@ -15242,9 +15246,9 @@
}
},
"moment": {
"version": "2.28.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.28.0.tgz",
"integrity": "sha512-Z5KOjYmnHyd/ukynmFd/WwyXHd7L4J9vTI/nn5Ap9AVUgaAE15VvQ9MOGmJJygEUklupqIrFnor/tjTwRU+tQw=="
"version": "2.29.0",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.0.tgz",
"integrity": "sha512-z6IJ5HXYiuxvFTI6eiQ9dm77uE0gyy1yXNApVHqTcnIKfY9tIwEjlzsZ6u1LQXvVgKeTnv9Xm7NDvJ7lso3MtA=="
},
"move-concurrently": {
"version": "1.0.1",
@@ -20977,9 +20981,9 @@
}
},
"vue-router": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.3.tgz",
"integrity": "sha512-BADg1mjGWX18Dpmy6bOGzGNnk7B/ZA0RxuA6qedY/YJwirMfKXIDzcccmHbQI0A6k5PzMdMloc0ElHfyOoX35A=="
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.4.5.tgz",
"integrity": "sha512-ioRY5QyDpXM9TDjOX6hX79gtaMXSVDDzSlbIlyAmbHNteIL81WIVB2e+jbzV23vzxtoV0krdS2XHm+GxFg+Nxg=="
},
"vue-style-loader": {
"version": "4.1.2",
+3 -3
View File
@@ -24,7 +24,7 @@
"@vue/cli-plugin-unit-mocha": "^4.5.6",
"@vue/cli-service": "^4.5.6",
"@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^7.1.1",
"amplitude-js": "^7.2.2",
"axios": "^0.19.2",
"axios-progress-bar": "^1.2.0",
"babel-eslint": "^10.1.0",
@@ -42,7 +42,7 @@
"intro.js": "^2.9.3",
"jquery": "^3.5.1",
"lodash": "^4.17.20",
"moment": "^2.28.0",
"moment": "^2.29.0",
"nconf": "^0.10.0",
"sass": "^1.26.11",
"sass-loader": "^8.0.2",
@@ -56,7 +56,7 @@
"vue": "^2.6.12",
"vue-cli-plugin-storybook": "^0.6.1",
"vue-mugen-scroll": "^0.2.6",
"vue-router": "^3.4.3",
"vue-router": "^3.4.5",
"vue-template-compiler": "^2.6.12",
"vuedraggable": "^2.24.1",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0",
@@ -1,36 +1,60 @@
.promo_armoire_backgrounds_202009 {
.promo_armoire_backgrounds_202010 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -434px;
background-position: 0px -452px;
width: 423px;
height: 147px;
}
.promo_fall_festival_2019 {
.promo_fall_customizations {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: 0px -244px;
width: 336px;
height: 207px;
}
.promo_fall_festival_2019 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -532px 0px;
width: 360px;
height: 189px;
}
.promo_fall_festival_2020 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -532px 0px;
background-position: -532px -190px;
width: 360px;
height: 174px;
}
.promo_mystery_202009 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -532px -175px;
background-position: -893px 0px;
width: 282px;
height: 147px;
}
.promo_mystery_202010 {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -893px -148px;
width: 282px;
height: 147px;
}
.promo_sandy_sidekicks_bundle {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -600px;
width: 420px;
height: 147px;
}
.promo_spooky_sparkles {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -452px;
width: 423px;
height: 147px;
}
.promo_take_this {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -532px -323px;
background-position: -1035px -426px;
width: 96px;
height: 69px;
}
.promo_vampire_potions {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -424px -434px;
background-position: 0px -600px;
width: 423px;
height: 147px;
}
@@ -42,7 +66,13 @@
}
.scene_squall {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -361px -244px;
background-position: -893px -426px;
width: 141px;
height: 169px;
}
.scene_strength {
background-image: url('~@/assets/images/sprites/spritesmith-largeSprites-0.png');
background-position: -893px -296px;
width: 192px;
height: 129px;
}
@@ -748,487 +748,487 @@
width: 141px;
height: 147px;
}
.background_crosscountry_ski_trail {
.background_crescent_moon {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -296px;
width: 141px;
height: 147px;
}
.background_crystal_cave {
.background_crosscountry_ski_trail {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -444px;
width: 141px;
height: 147px;
}
.background_dark_deep {
.background_crystal_cave {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -592px;
width: 141px;
height: 147px;
}
.background_deep_mine {
.background_dark_deep {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -740px;
width: 141px;
height: 147px;
}
.background_deep_sea {
.background_deep_mine {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -888px;
width: 141px;
height: 147px;
}
.background_desert_dunes {
.background_deep_sea {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -888px;
width: 141px;
height: 147px;
}
.background_desert_with_snow {
.background_desert_dunes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -888px;
width: 141px;
height: 147px;
}
.background_dilatory_castle {
.background_desert_with_snow {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -888px;
width: 141px;
height: 147px;
}
.background_dilatory_city {
.background_dilatory_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -888px;
width: 141px;
height: 147px;
}
.background_dilatory_ruins {
.background_dilatory_city {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -888px;
width: 141px;
height: 147px;
}
.background_distant_castle {
.background_dilatory_ruins {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -888px;
width: 141px;
height: 147px;
}
.background_dojo {
.background_distant_castle {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -888px;
width: 141px;
height: 147px;
}
.background_drifting_raft {
.background_dojo {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px 0px;
width: 141px;
height: 147px;
}
.background_driving_a_coach {
.background_drifting_raft {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -148px;
width: 141px;
height: 147px;
}
.background_driving_a_sleigh {
.background_driving_a_coach {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -296px;
width: 141px;
height: 147px;
}
.background_duck_pond {
.background_driving_a_sleigh {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -444px;
width: 141px;
height: 147px;
}
.background_dungeon {
.background_duck_pond {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -592px;
width: 141px;
height: 147px;
}
.background_dusty_canyons {
.background_dungeon {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -740px;
width: 141px;
height: 147px;
}
.background_elegant_balcony {
.background_dusty_canyons {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -888px;
width: 141px;
height: 147px;
}
.background_elegant_ballroom {
.background_elegant_balcony {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1036px;
width: 141px;
height: 147px;
}
.background_fairy_ring {
.background_elegant_ballroom {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1036px;
width: 141px;
height: 147px;
}
.background_fantastical_shoe_store {
.background_fairy_ring {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1036px;
width: 141px;
height: 147px;
}
.background_farmers_market {
.background_fantastical_shoe_store {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1036px;
width: 141px;
height: 147px;
}
.background_farmhouse {
.background_farmers_market {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1036px;
width: 141px;
height: 147px;
}
.background_fiber_arts_room {
.background_farmhouse {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1036px;
width: 141px;
height: 147px;
}
.background_field_with_colored_eggs {
.background_fiber_arts_room {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1036px;
width: 141px;
height: 147px;
}
.background_floating_islands {
.background_field_with_colored_eggs {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1036px;
width: 141px;
height: 147px;
}
.background_floral_meadow {
.background_floating_islands {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1036px;
width: 141px;
height: 147px;
}
.background_flower_market {
.background_floral_meadow {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px 0px;
width: 141px;
height: 147px;
}
.customize-option.background_flower_market {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1303px -15px;
width: 60px;
height: 60px;
}
.background_flying_in_a_thunderstorm {
.background_flower_market {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -148px;
width: 141px;
height: 147px;
}
.background_flying_over_a_field_of_wildflowers {
.customize-option.background_flower_market {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1303px -163px;
width: 60px;
height: 60px;
}
.background_flying_in_a_thunderstorm {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -296px;
width: 141px;
height: 147px;
}
.customize-option.background_flying_over_a_field_of_wildflowers {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1303px -311px;
width: 60px;
height: 60px;
}
.background_flying_over_an_ancient_forest {
.background_flying_over_a_field_of_wildflowers {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -444px;
width: 141px;
height: 147px;
}
.background_flying_over_an_autumn_forest {
.customize-option.background_flying_over_a_field_of_wildflowers {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1303px -459px;
width: 60px;
height: 60px;
}
.background_flying_over_an_ancient_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -592px;
width: 141px;
height: 147px;
}
.background_flying_over_icy_steppes {
.background_flying_over_an_autumn_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -740px;
width: 141px;
height: 147px;
}
.background_flying_over_rocky_canyon {
.background_flying_over_icy_steppes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -888px;
width: 141px;
height: 147px;
}
.background_flying_over_snowy_mountains {
.background_flying_over_rocky_canyon {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1036px;
width: 141px;
height: 147px;
}
.background_flying_over_tropical_islands {
.background_flying_over_snowy_mountains {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1184px;
width: 141px;
height: 147px;
}
.background_foggy_moor {
.background_flying_over_tropical_islands {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1184px;
width: 141px;
height: 147px;
}
.background_forest {
.background_foggy_moor {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1184px;
width: 141px;
height: 147px;
}
.background_frigid_peak {
.background_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1184px;
width: 141px;
height: 147px;
}
.background_frosty_forest {
.background_frigid_peak {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1184px;
width: 141px;
height: 147px;
}
.background_frozen_lake {
.background_frosty_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1184px;
width: 141px;
height: 147px;
}
.background_garden_shed {
.background_frozen_lake {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1184px;
width: 141px;
height: 147px;
}
.background_gazebo {
.background_garden_shed {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1184px;
width: 141px;
height: 147px;
}
.background_giant_autumn_leaf {
.background_gazebo {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1184px;
width: 141px;
height: 147px;
}
.background_giant_birdhouse {
.background_giant_autumn_leaf {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1184px;
width: 141px;
height: 147px;
}
.background_giant_book {
.background_giant_birdhouse {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px 0px;
width: 141px;
height: 147px;
}
.background_giant_dandelions {
.background_giant_book {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -148px;
width: 141px;
height: 147px;
}
.background_giant_florals {
.background_giant_dandelions {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -296px;
width: 141px;
height: 147px;
}
.background_giant_seashell {
.background_giant_florals {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -444px;
width: 141px;
height: 147px;
}
.background_giant_wave {
.background_giant_seashell {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -592px;
width: 141px;
height: 147px;
}
.background_glowing_mushroom_cave {
.background_giant_wave {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -740px;
width: 141px;
height: 147px;
}
.background_gorgeous_greenhouse {
.background_glowing_mushroom_cave {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -888px;
width: 141px;
height: 147px;
}
.background_grand_staircase {
.background_gorgeous_greenhouse {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1036px;
width: 141px;
height: 147px;
}
.background_graveyard {
.background_grand_staircase {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1184px;
width: 141px;
height: 147px;
}
.background_green {
.background_graveyard {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1332px;
width: 141px;
height: 147px;
}
.background_guardian_statues {
.background_green {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1332px;
width: 141px;
height: 147px;
}
.background_gumdrop_land {
.background_guardian_statues {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1332px;
width: 141px;
height: 147px;
}
.background_habit_city_rooftops {
.background_gumdrop_land {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -426px -1332px;
width: 141px;
height: 147px;
}
.background_habit_city_streets {
.background_habit_city_rooftops {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -568px -1332px;
width: 141px;
height: 147px;
}
.background_halflings_house {
.background_habit_city_streets {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -710px -1332px;
width: 141px;
height: 147px;
}
.background_hall_of_heroes {
.background_halflings_house {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -852px -1332px;
width: 141px;
height: 147px;
}
.background_harvest_feast {
.background_hall_of_heroes {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -994px -1332px;
width: 141px;
height: 147px;
}
.background_harvest_fields {
.background_harvest_feast {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1136px -1332px;
width: 141px;
height: 147px;
}
.background_harvest_moon {
.background_harvest_fields {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1278px -1332px;
width: 141px;
height: 147px;
}
.background_haunted_house {
.background_harvest_moon {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1420px -1332px;
width: 141px;
height: 147px;
}
.background_heather_field {
.background_haunted_forest {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px 0px;
width: 141px;
height: 147px;
}
.background_herding_sheep_in_autumn {
.background_haunted_house {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -148px;
width: 141px;
height: 147px;
}
.background_holiday_market {
.background_heather_field {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -296px;
width: 141px;
height: 147px;
}
.background_holiday_wreath {
.background_herding_sheep_in_autumn {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -444px;
width: 141px;
height: 147px;
}
.background_hot_air_balloon {
.background_holiday_market {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -592px;
width: 141px;
height: 147px;
}
.background_ice_cave {
.background_holiday_wreath {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -740px;
width: 141px;
height: 147px;
}
.background_iceberg {
.background_hot_air_balloon {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -888px;
width: 141px;
height: 147px;
}
.background_idyllic_cabin {
.background_ice_cave {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1036px;
width: 141px;
height: 147px;
}
.background_in_a_classroom {
.background_iceberg {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1184px;
width: 141px;
height: 147px;
}
.background_in_an_ancient_tomb {
.background_idyllic_cabin {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -1562px -1332px;
width: 141px;
height: 147px;
}
.background_island_waterfalls {
.background_in_a_classroom {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: 0px -1480px;
width: 141px;
height: 147px;
}
.background_jungle_canopy {
.background_in_an_ancient_tomb {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -142px -1480px;
width: 141px;
height: 147px;
}
.background_kelp_forest {
.background_island_waterfalls {
background-image: url('~@/assets/images/sprites/spritesmith-main-0.png');
background-position: -284px -1480px;
width: 141px;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,576 +1,714 @@
.shop_weapon_wizard_5 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px -1547px;
width: 68px;
height: 68px;
}
.shop_weapon_wizard_6 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -220px -324px;
width: 68px;
height: 68px;
}
.weapon_healer_0 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1313px -1095px;
width: 90px;
height: 90px;
}
.weapon_healer_1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1313px -1186px;
width: 90px;
height: 90px;
}
.weapon_healer_2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1513px -1315px;
width: 90px;
height: 90px;
}
.weapon_healer_3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -702px -1466px;
width: 90px;
height: 90px;
}
.weapon_healer_4 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -793px -1466px;
width: 90px;
height: 90px;
}
.weapon_healer_5 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -884px -1466px;
width: 90px;
height: 90px;
}
.weapon_healer_6 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -975px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_0 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1066px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1157px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1248px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1339px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_4 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1430px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_5 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1521px -1466px;
width: 90px;
height: 90px;
}
.weapon_rogue_6 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px 0px;
width: 90px;
height: 90px;
}
.weapon_special_1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1410px -1315px;
width: 102px;
height: 90px;
}
.weapon_special_2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px -91px;
width: 90px;
height: 90px;
}
.weapon_special_3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px -182px;
width: 90px;
height: 90px;
}
.weapon_special_aetherCrystals {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1295px -1315px;
width: 114px;
height: 90px;
}
.weapon_special_bardInstrument {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px -273px;
width: 90px;
height: 90px;
}
.weapon_special_fencingFoil {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px -364px;
width: 90px;
height: 90px;
}
.weapon_special_lunarScythe {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1624px -455px;
width: 90px;
height: 90px;
}
.weapon_special_mammothRiderSpear {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1428px -1315px;
background-position: -1624px -546px;
width: 90px;
height: 90px;
}
.weapon_special_nomadsScimitar {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1519px -1315px;
background-position: -1624px -637px;
width: 90px;
height: 90px;
}
.weapon_special_pageBanner {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -190px -1529px;
background-position: -1624px -728px;
width: 90px;
height: 90px;
}
.weapon_special_roguishRainbowMessage {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -281px -1529px;
background-position: -1624px -819px;
width: 90px;
height: 90px;
}
.weapon_special_skeletonKey {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -372px -1529px;
background-position: -1624px -910px;
width: 90px;
height: 90px;
}
.weapon_special_tachi {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -463px -1529px;
background-position: -1624px -1001px;
width: 90px;
height: 90px;
}
.weapon_special_taskwoodsLantern {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -554px -1529px;
background-position: -1624px -1092px;
width: 90px;
height: 90px;
}
.weapon_special_tridentOfCrashingTides {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -645px -1529px;
background-position: -1624px -1183px;
width: 90px;
height: 90px;
}
.weapon_warrior_0 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -736px -1529px;
background-position: -1624px -1274px;
width: 90px;
height: 90px;
}
.weapon_warrior_1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -827px -1529px;
background-position: -1624px -1365px;
width: 90px;
height: 90px;
}
.weapon_warrior_2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -918px -1529px;
background-position: -1624px -1456px;
width: 90px;
height: 90px;
}
.weapon_warrior_3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1009px -1529px;
background-position: 0px -1617px;
width: 90px;
height: 90px;
}
.weapon_warrior_4 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1100px -1529px;
background-position: -91px -1617px;
width: 90px;
height: 90px;
}
.weapon_warrior_5 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1191px -1529px;
background-position: -182px -1617px;
width: 90px;
height: 90px;
}
.weapon_warrior_6 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1282px -1529px;
background-position: -273px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_0 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1373px -1529px;
background-position: -364px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1464px -1529px;
background-position: -455px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1555px -1529px;
background-position: -546px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1646px -1529px;
background-position: -637px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_4 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: 0px -1671px;
background-position: -728px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_5 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -91px -1671px;
background-position: -819px -1617px;
width: 90px;
height: 90px;
}
.weapon_wizard_6 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -182px -1671px;
background-position: -910px -1617px;
width: 90px;
height: 90px;
}
.Pet_Currency_Gem {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1214px -1671px;
background-position: -1715px -828px;
width: 68px;
height: 68px;
}
.Pet_Currency_Gem1x {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -596px;
background-position: -1767px -1232px;
width: 15px;
height: 13px;
}
.Pet_Currency_Gem2x {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1746px -828px;
background-position: -1715px -1644px;
width: 30px;
height: 26px;
}
.PixelPaw-Gold {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1746px -724px;
background-position: -1715px -1232px;
width: 51px;
height: 51px;
}
.PixelPaw {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1746px -776px;
background-position: -1715px -1284px;
width: 51px;
height: 51px;
}
.PixelPaw002 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -856px;
background-position: -1715px -1336px;
width: 51px;
height: 51px;
}
.avatar_floral_healer {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -1401px;
background-position: -302px -1466px;
width: 99px;
height: 99px;
}
.avatar_floral_rogue {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1128px -1315px;
background-position: -402px -1466px;
width: 99px;
height: 99px;
}
.avatar_floral_warrior {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1228px -1315px;
background-position: -502px -1466px;
width: 99px;
height: 99px;
}
.avatar_floral_wizard {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1328px -1315px;
background-position: -602px -1466px;
width: 99px;
height: 99px;
}
.avatar_snowball_healer {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -856px;
background-position: -811px -1315px;
width: 120px;
height: 105px;
}
.avatar_snowball_rogue {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -962px;
background-position: -932px -1315px;
width: 120px;
height: 105px;
}
.avatar_snowball_warrior {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -1068px;
background-position: -1053px -1315px;
width: 120px;
height: 105px;
}
.avatar_snowball_wizard {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -1174px;
background-position: -1174px -1315px;
width: 120px;
height: 105px;
}
.empty_bottles {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -222px -1466px;
background-position: -1715px -1177px;
width: 64px;
height: 54px;
}
.ghost {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -273px -1671px;
background-position: -1001px -1617px;
width: 90px;
height: 90px;
}
.inventory_present {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1100px -944px;
background-position: -1390px -1617px;
width: 68px;
height: 68px;
}
.inventory_present_01 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1712px -1280px;
background-position: -660px -435px;
width: 68px;
height: 68px;
}
.inventory_present_02 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1727px -1401px;
background-position: -660px -504px;
width: 68px;
height: 68px;
}
.inventory_present_03 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -220px -203px;
background-position: -660px -573px;
width: 68px;
height: 68px;
}
.inventory_present_04 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -220px -272px;
background-position: -880px -655px;
width: 68px;
height: 68px;
}
.inventory_present_05 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -220px -341px;
background-position: -880px -724px;
width: 68px;
height: 68px;
}
.inventory_present_06 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -660px -435px;
background-position: -880px -793px;
width: 68px;
height: 68px;
}
.inventory_present_07 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -660px -504px;
background-position: -1100px -875px;
width: 68px;
height: 68px;
}
.inventory_present_08 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -660px -573px;
background-position: -1100px -944px;
width: 68px;
height: 68px;
}
.inventory_present_09 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -880px -655px;
background-position: -1100px -1013px;
width: 68px;
height: 68px;
}
.inventory_present_10 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -880px -724px;
background-position: -1183px -1617px;
width: 68px;
height: 68px;
}
.inventory_present_11 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -880px -793px;
background-position: -1252px -1617px;
width: 68px;
height: 68px;
}
.inventory_present_12 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1100px -875px;
background-position: -1321px -1617px;
width: 68px;
height: 68px;
}
.inventory_special_birthday {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1100px -1013px;
background-position: -1459px -1617px;
width: 68px;
height: 68px;
}
.inventory_special_congrats {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1320px -1095px;
background-position: -1528px -1617px;
width: 68px;
height: 68px;
}
.inventory_special_fortify {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1320px -1164px;
background-position: -1597px -1617px;
width: 68px;
height: 68px;
}
.inventory_special_getwell {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1320px -1233px;
background-position: -1715px 0px;
width: 68px;
height: 68px;
}
.inventory_special_goodluck {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -455px -1671px;
background-position: -1715px -69px;
width: 68px;
height: 68px;
}
.inventory_special_greeting {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -524px -1671px;
background-position: -1715px -138px;
width: 68px;
height: 68px;
}
.inventory_special_nye {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -593px -1671px;
background-position: -1715px -207px;
width: 68px;
height: 68px;
}
.inventory_special_opaquePotion {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -662px -1671px;
background-position: -1715px -276px;
width: 68px;
height: 68px;
}
.inventory_special_seafoam {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -731px -1671px;
background-position: -1715px -345px;
width: 68px;
height: 68px;
}
.inventory_special_shinySeed {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -800px -1671px;
background-position: -1715px -414px;
width: 68px;
height: 68px;
}
.inventory_special_snowball {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -869px -1671px;
background-position: -1715px -483px;
width: 68px;
height: 68px;
}
.inventory_special_spookySparkles {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -938px -1671px;
background-position: -1715px -552px;
width: 68px;
height: 68px;
}
.inventory_special_thankyou {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1007px -1671px;
background-position: -1715px -621px;
width: 68px;
height: 68px;
}
.inventory_special_trinket {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1076px -1671px;
background-position: -1715px -690px;
width: 68px;
height: 68px;
}
.inventory_special_valentine {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1145px -1671px;
background-position: -1715px -759px;
width: 68px;
height: 68px;
}
.knockout {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px -1251px;
background-position: -1407px -1237px;
width: 120px;
height: 47px;
}
.pet_key {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1283px -1671px;
background-position: -1715px -897px;
width: 68px;
height: 68px;
}
.rebirth_orb {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1352px -1671px;
background-position: -1715px -966px;
width: 68px;
height: 68px;
}
.seafoam_star {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -364px -1671px;
background-position: -1092px -1617px;
width: 90px;
height: 90px;
}
.shop_armoire {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1421px -1671px;
background-position: -1715px -1035px;
width: 68px;
height: 68px;
}
.zzz {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -962px;
background-position: -1715px -1429px;
width: 40px;
height: 40px;
}
.zzz_light {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -908px;
background-position: -1715px -1388px;
width: 40px;
height: 40px;
}
.notif_inventory_present_01 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1003px;
background-position: -1715px -1470px;
width: 28px;
height: 28px;
}
.notif_inventory_present_02 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1032px;
background-position: -1744px -1470px;
width: 28px;
height: 28px;
}
.notif_inventory_present_03 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1068px;
background-position: -1715px -1499px;
width: 28px;
height: 28px;
}
.notif_inventory_present_04 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1097px;
background-position: -1744px -1499px;
width: 28px;
height: 28px;
}
.notif_inventory_present_05 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1126px;
background-position: -1715px -1528px;
width: 28px;
height: 28px;
}
.notif_inventory_present_06 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1174px;
background-position: -1744px -1528px;
width: 28px;
height: 28px;
}
.notif_inventory_present_07 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1203px;
background-position: -1715px -1557px;
width: 28px;
height: 28px;
}
.notif_inventory_present_08 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1748px -1232px;
background-position: -1744px -1557px;
width: 28px;
height: 28px;
}
.notif_inventory_present_09 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1712px -1368px;
background-position: -1715px -1586px;
width: 28px;
height: 28px;
}
.notif_inventory_present_10 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1741px -1368px;
background-position: -1744px -1586px;
width: 28px;
height: 28px;
}
.notif_inventory_present_11 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1770px -1368px;
background-position: -1715px -1615px;
width: 28px;
height: 28px;
}
.notif_inventory_present_12 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1727px -1470px;
background-position: -1744px -1615px;
width: 28px;
height: 28px;
}
.notif_inventory_special_birthday {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -449px;
background-position: -1746px -1644px;
width: 20px;
height: 24px;
}
.notif_inventory_special_congrats {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -524px;
background-position: -1757px -1671px;
width: 20px;
height: 22px;
}
.notif_inventory_special_getwell {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -547px;
background-position: -1693px -1547px;
width: 20px;
height: 22px;
}
.notif_inventory_special_goodluck {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -422px;
background-position: -1756px -1429px;
width: 20px;
height: 26px;
}
.notif_inventory_special_greeting {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -573px;
background-position: -1693px -1570px;
width: 20px;
height: 22px;
}
.notif_inventory_special_nye {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1777px -828px;
background-position: -1756px -1388px;
width: 24px;
height: 26px;
}
.notif_inventory_special_thankyou {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -474px;
background-position: -1715px -1671px;
width: 20px;
height: 24px;
}
.notif_inventory_special_valentine {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1778px -499px;
background-position: -1736px -1671px;
width: 20px;
height: 24px;
}
.npc_bailey {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1737px -1529px;
background-position: -1715px -1104px;
width: 60px;
height: 72px;
}
.npc_justin {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -1280px;
background-position: -220px -203px;
width: 84px;
height: 120px;
}
.npc_matt {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -932px -1315px;
background-position: -1407px -1098px;
width: 195px;
height: 138px;
}
@@ -582,19 +720,19 @@
}
.banner_flair_dysheartener {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1712px -1349px;
background-position: -1528px -1237px;
width: 69px;
height: 18px;
}
.phobia_dysheartener {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1187px -880px;
background-position: -307px -220px;
width: 201px;
height: 195px;
}
.quest_alligator {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px -648px;
background-position: -967px -660px;
width: 201px;
height: 213px;
}
@@ -612,19 +750,19 @@
}
.quest_atom1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -222px -1315px;
background-position: 0px -1315px;
width: 250px;
height: 150px;
}
.quest_atom2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -724px -1315px;
background-position: -1407px -959px;
width: 207px;
height: 138px;
}
.quest_atom3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -747px -440px;
background-position: -1407px 0px;
width: 216px;
height: 180px;
}
@@ -642,13 +780,13 @@
}
.quest_basilist {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: 0px -1529px;
background-position: -502px -1315px;
width: 189px;
height: 141px;
}
.quest_beetle {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px -862px;
background-position: -747px -440px;
width: 204px;
height: 201px;
}
@@ -660,7 +798,7 @@
}
.quest_bunny {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -967px -660px;
background-position: -1102px -1095px;
width: 210px;
height: 186px;
}
@@ -678,7 +816,7 @@
}
.quest_cow {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px 0px;
background-position: -1407px -537px;
width: 174px;
height: 213px;
}
@@ -690,13 +828,13 @@
}
.quest_dilatoryDistress1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px -437px;
background-position: -1187px -880px;
width: 210px;
height: 210px;
}
.quest_dilatoryDistress2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -422px;
background-position: 0px -1466px;
width: 150px;
height: 150px;
}
@@ -726,13 +864,13 @@
}
.quest_egg {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -214px;
background-position: -1407px -751px;
width: 165px;
height: 207px;
}
.quest_evilsanta {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -724px;
background-position: -692px -1315px;
width: 118px;
height: 131px;
}
@@ -762,7 +900,7 @@
}
.quest_frog {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: 0px -1315px;
background-position: -880px -1095px;
width: 221px;
height: 213px;
}
@@ -780,7 +918,7 @@
}
.quest_goldenknight2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -473px -1315px;
background-position: -251px -1315px;
width: 250px;
height: 150px;
}
@@ -792,7 +930,7 @@
}
.quest_gryphon {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -527px -220px;
background-position: -1407px -181px;
width: 216px;
height: 177px;
}
@@ -810,7 +948,7 @@
}
.quest_hedgehog {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px -1064px;
background-position: -527px -220px;
width: 219px;
height: 186px;
}
@@ -834,7 +972,7 @@
}
.quest_kraken {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -307px -220px;
background-position: -1407px -359px;
width: 216px;
height: 177px;
}
@@ -858,7 +996,7 @@
}
.quest_mayhemMistiflying1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1627px -573px;
background-position: -151px -1466px;
width: 150px;
height: 150px;
}
@@ -868,27 +1006,3 @@
width: 219px;
height: 219px;
}
.quest_mayhemMistiflying3 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -880px -1095px;
width: 219px;
height: 219px;
}
.quest_monkey {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1100px -1095px;
width: 219px;
height: 219px;
}
.quest_moon1 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px -220px;
width: 216px;
height: 216px;
}
.quest_moon2 {
background-image: url('~@/assets/images/sprites/spritesmith-main-13.png');
background-position: -1407px 0px;
width: 219px;
height: 219px;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 KiB

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 KiB

After

Width:  |  Height:  |  Size: 555 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 355 KiB

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 KiB

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

After

Width:  |  Height:  |  Size: 152 KiB

+4 -1
View File
@@ -295,7 +295,10 @@
&-control {
&-bg { background: $gray-600; }
&-inner {
border: 1px solid $gray-300;
&:not(:focus) {
border: 1px solid $gray-300 !important;
}
opacity: 0.75;
.negative, .positive {
+1 -1
View File
@@ -227,7 +227,7 @@ export default {
return this.member.preferences.costume ? 'costume' : 'equipped';
},
specialMountClass () {
if (!this.avatarOnly && this.member.items.currentMount && this.member.items.currentMount.indexOf('Kangaroo') !== -1) {
if (!this.avatarOnly && this.member.items.currentMount && this.member.items.currentMount.includes('Kangaroo')) {
return 'offset-kangaroo';
}
@@ -8,6 +8,8 @@
v-if="withPin"
class="badge-dialog"
@click.prevent.stop="togglePinned()"
@keypress.enter.prevent.stop="togglePinned()"
tabindex="0"
>
<pin-badge
:pinned="isPinned"
@@ -18,6 +20,8 @@
class="svg-icon icon-12 close-icon"
aria-hidden="true"
@click="hideDialog()"
@keypress.enter="hideDialog()"
tabindex="0"
v-html="icons.close"
></span>
</div>
@@ -145,10 +149,13 @@
v-else
class="btn btn-primary"
:disabled="item.key === 'gem' && gemsLeft === 0 ||
attemptingToPurchaseMoreGemsThanAreLeft || numberInvalid || item.locked"
attemptingToPurchaseMoreGemsThanAreLeft || numberInvalid || item.locked ||
!preventHealthPotion ||
!enoughCurrency(getPriceClass(), item.value * selectedAmountToBuy)"
:class="{'notEnough': !preventHealthPotion ||
!enoughCurrency(getPriceClass(), item.value * selectedAmountToBuy)}"
@click="buyItem()"
tabindex="0"
>
{{ $t('buyNow') }}
</button>
@@ -289,6 +296,10 @@
margin-top: 24px;
margin-bottom: 24px;
min-width: 6rem;
&:focus {
border: 2px solid black;
}
}
.balance {
@@ -554,12 +565,16 @@ export default {
}
const ownedPets = reduce(this.user.items.pets, (sum, petValue, petKey) => {
if (petKey.includes(this.item.key) && petValue > 0) return sum + 1;
if (petKey.includes(this.item.key) && petValue > 0
&& !petKey.includes('JackOLantern') // Jack-O-Lantern has "Ghost" version
) return sum + 1;
return sum;
}, 0);
const ownedMounts = reduce(this.user.items.mounts, (sum, mountValue, mountKey) => {
if (mountKey.includes(this.item.key) && mountValue === true) return sum + 1;
if (mountKey.includes(this.item.key) && mountValue === true
&& !mountKey.includes('JackOLantern')
) return sum + 1;
return sum;
}, 0);
@@ -4,6 +4,8 @@
:id="itemId"
class="item-wrapper"
@click="click()"
@keypress.enter="click()"
tabindex="0"
>
<div
class="item"
@@ -63,7 +65,7 @@
<b-popover
v-if="showPopover"
:target="itemId"
triggers="hover"
triggers="hover focus"
:placement="popoverPosition"
>
<slot
@@ -31,6 +31,8 @@
class="filter small-text"
:class="{active: activeFilter.label === filter}"
@click="activateFilter(type, filter)"
@keypress.enter="activateFilter(type, filter)"
tabindex="0"
>
{{ $t(filter) }}
</div>
@@ -128,6 +130,7 @@
<span
class="badge-top"
@click.prevent.stop="togglePinned(ctx.item)"
@keypress.enter.prevent.stop="togglePinned(ctx.item)"
>
<pin-badge
:pinned="ctx.item.pinned"
@@ -156,6 +159,10 @@
display: block;
}
.item:focus-within .badge-pin {
display: block;
}
.tasks-column {
min-height: 556px;
}
+88 -13
View File
@@ -38,6 +38,9 @@
}, controlClass.up.inner]"
@click="(isUser && task.up && (!task.group.approval.requested
|| task.group.approval.approved)) ? score('up') : null"
@keypress.enter="(isUser && task.up && (!task.group.approval.requested
|| task.group.approval.approved)) ? score('up') : null"
tabindex="0"
>
<div
v-if="!isUser"
@@ -65,6 +68,9 @@
:class="controlClass.inner"
@click="isUser && !task.group.approval.requested
? score(task.completed ? 'down' : 'up' ) : null"
@keypress.enter="isUser && !task.group.approval.requested
? score(task.completed ? 'down' : 'up' ) : null"
tabindex="0"
>
<div
v-if="!isUser"
@@ -92,6 +98,8 @@
class="task-clickable-area"
:class="{'task-clickable-area-user': isUser}"
@click="edit($event, task)"
@keypress.enter="edit($event, task)"
tabindex="0"
>
<div class="d-flex justify-content-between">
<h3
@@ -103,6 +111,7 @@
v-if="!isRunningYesterdailies && showOptions"
ref="taskDropdown"
v-b-tooltip.hover.top="$t('options')"
tabindex="0"
class="task-dropdown"
:right="task.type === 'reward'"
>
@@ -117,6 +126,8 @@
v-if="showEdit"
ref="editTaskItem"
class="dropdown-item edit-task-item"
tabindex="0"
@keypress.enter="edit($event, task)"
>
<span class="dropdown-icon-item">
<span
@@ -130,6 +141,8 @@
v-if="isUser"
class="dropdown-item"
@click="moveToTop"
tabindex="0"
@keypress.enter="moveToTop"
>
<span class="dropdown-icon-item">
<span
@@ -143,6 +156,8 @@
v-if="isUser"
class="dropdown-item"
@click="moveToBottom"
tabindex="0"
@keypress.enter="moveToBottom"
>
<span class="dropdown-icon-item">
<span
@@ -156,6 +171,8 @@
v-if="showDelete"
class="dropdown-item"
@click="destroy"
tabindex="0"
@keypress.enter="destroy"
>
<span class="dropdown-icon-item delete-task-item">
<span
@@ -185,7 +202,9 @@
? 'expand': 'collapse'}Checklist`)"
class="collapse-checklist mb-2 d-flex align-items-center expand-toggle"
:class="{open: !task.collapseChecklist}"
tabindex="0"
@click="collapseChecklist(task)"
@keypress.enter="collapseChecklist(task)"
>
<div
v-once
@@ -207,10 +226,12 @@
<input
:id="`checklist-${item.id}-${random}`"
class="custom-control-input"
tabindex="0"
type="checkbox"
:checked="item.completed"
:disabled="castingSpell || !isUser"
@change="toggleChecklistItem(item)"
@keypress.enter="toggleChecklistItem(item)"
>
<label
v-markdown="item.text"
@@ -330,6 +351,9 @@
}, controlClass.down.inner]"
@click="(isUser && task.down && (!task.group.approval.requested
|| task.group.approval.approved)) ? score('down') : null"
@keypress.enter="(isUser && task.down && (!task.group.approval.requested
|| task.group.approval.approved)) ? score('down') : null"
tabindex="0"
>
<div
v-if="!isUser"
@@ -350,6 +374,8 @@
class="right-control d-flex align-items-center justify-content-center reward-control"
:class="controlClass.bg"
@click="isUser ? score('down') : null"
@keypress.enter="isUser ? score('down') : null"
tabindex="0"
>
<div
class="svg-icon"
@@ -373,6 +399,19 @@
<!-- eslint-disable max-len -->
<style lang="scss" scoped>
@import '~@/assets/scss/colors.scss';
.task-best-control-inner-habit:focus {
transition: none;
}
*:focus {
outline: none;
transition: none;
border: $purple-400 solid 1px;
:not(task-best-control-inner-habit) { // round icon
border-radius: 2px;
}
}
.control-bottom-box {
border-bottom-left-radius: 0 !important;
@@ -395,14 +434,16 @@
border-radius: 2px;
position: relative;
&:hover:not(.task-not-editable) {
&:hover:not(.task-not-editable),
&:focus-within:not(.task-not-editable) {
box-shadow: 0 1px 8px 0 rgba($black, 0.12), 0 4px 4px 0 rgba($black, 0.16);
z-index: 11;
}
}
.task:not(.groupTask) {
&:hover {
&:hover,
&:focus-within {
.left-control, .right-control, .task-content {
border-color: $purple-400;
}
@@ -410,7 +451,8 @@
}
.task.groupTask {
&:hover:not(.task-not-editable) {
&:hover:not(.task-not-editable),
&:focus-within:not(.task-not-editable) {
border: $purple-400 solid 1px;
border-radius: 3px;
margin: -1px; // to counter the border width
@@ -455,10 +497,16 @@
.task-clickable-area {
padding: 7px 8px;
padding-bottom: 0px;
border: transparent solid 1px;
&-user {
padding-right: 0px;
}
&:focus {
border-radius: 2px;
border: $purple-400 solid 1px;
}
}
.task-title + .task-dropdown ::v-deep .dropdown-menu {
@@ -482,6 +530,20 @@
opacity: 1;
}
.task:focus-within ::v-deep .habitica-menu-dropdown .habitica-menu-dropdown-toggle {
opacity: 1;
}
.task ::v-deep .habitica-menu-dropdown:focus-within {
opacity: 1;
border: $purple-400 solid 1px;
border-radius: 2px;
}
.task ::v-deep .habitica-menu-dropdown {
border: transparent solid 1px;
}
.task-clickable-area ::v-deep .habitica-menu-dropdown.open .habitica-menu-dropdown-toggle {
opacity: 1;
@@ -494,20 +556,26 @@
color: $purple-400 !important;
}
.task-clickable-area ::v-deep .habitica-menu-dropdown .habitica-menu-dropdown-toggle:focus-within .svg-icon {
color: $purple-400 !important;
}
.task-dropdown {
max-height: 16px;
max-height: 18px;
}
.task-dropdown ::v-deep .dropdown-menu {
.dropdown-item {
cursor: pointer !important;
transition: none;
border: transparent solid 1px;
* {
transition: none;
}
&:hover {
&:hover,
&:focus {
color: $purple-300;
.svg-icon.push-to-top, .svg-icon.push-to-bottom {
@@ -516,6 +584,11 @@
}
}
}
&:focus {
border-radius: 2px;
border: $purple-400 solid 1px;
}
}
}
@@ -551,12 +624,8 @@
}
}
.checklist {
&.isOpen {
margin-bottom: 2px;
}
margin-top: -3px;
.checklist.isOpen {
margin-bottom: 2px;
}
.collapse-checklist {
@@ -567,8 +636,10 @@
line-height: 1.2;
text-align: center;
color: $gray-200;
border: transparent solid 1px;
&.open {
&:focus {
border: $purple-400 solid 1px;
}
span {
@@ -706,6 +777,11 @@
transition-duration: 0.15s;
transition-property: border-color, background, color;
transition-timing-function: ease-in;
border: transparent solid 1px;
&:focus {
border: $purple-400 solid 1px;
}
}
.left-control {
border-top-left-radius: 2px;
@@ -1012,7 +1088,6 @@ export default {
},
edit (e, task) {
if (this.isRunningYesterdailies || !this.showEdit) return;
const target = e.target || e.srcElement;
/*
@@ -1,4 +1,6 @@
import Vue from 'vue';
import merge from 'lodash/merge';
import Avatar from '@/components/avatar';
import generateStore from '@/store';
@@ -6,26 +8,27 @@ context('avatar.vue', () => {
let Constructr;
let vm;
const baseMember = {
stats: {
buffs: {},
class: 'warrior',
},
preferences: {
hair: {},
},
items: {
gear: {
equipped: {},
},
},
};
beforeEach(() => {
Constructr = Vue.extend(Avatar);
vm = new Constructr({
propsData: {
member: {
stats: {
buffs: {},
},
preferences: {
hair: {},
},
items: {
gear: {
equipped: {},
},
},
},
},
}).$mount();
propsData: { member: baseMember },
});
vm.$store = generateStore();
});
@@ -36,11 +39,11 @@ context('avatar.vue', () => {
describe('hasClass', () => {
beforeEach(() => {
vm.member = {
vm.member = merge({
stats: { lvl: 17 },
preferences: { disableClasses: true },
flags: { classSelected: false },
};
}, baseMember);
});
it('accurately reports class status', () => {
@@ -54,14 +57,6 @@ context('avatar.vue', () => {
});
describe('isBuffed', () => {
beforeEach(() => {
vm.member = {
stats: {
buffs: {},
},
};
});
it('accurately reports if buffed', () => {
expect(vm.isBuffed).to.equal(undefined);
@@ -72,29 +67,23 @@ context('avatar.vue', () => {
});
describe('paddingTop', () => {
beforeEach(() => {
vm.member = {
items: {},
};
});
xit('defaults to 27px', () => {
vm.avatarOnly = true;
expect(vm.paddingTop).to.equal('27px');
});
it('is 24px if user has a pet', () => {
vm.member.items = {
vm.member.items = merge({
currentPet: { name: 'Foo' },
};
}, baseMember.items);
expect(vm.paddingTop).to.equal('24px');
});
it('is 0px if user has a mount', () => {
vm.member.items = {
currentMount: { name: 'Bar' },
};
vm.member.items = merge({
currentMount: 'Bar',
}, baseMember.items);
expect(vm.paddingTop).to.equal('0px');
});
@@ -106,28 +95,25 @@ context('avatar.vue', () => {
});
describe('costumeClass', () => {
beforeEach(() => {
vm.member = {
preferences: {},
};
});
it('returns if showing equipped gear', () => {
expect(vm.costumeClass).to.equal('equipped');
});
it('returns if wearing a costume', () => {
vm.member.preferences = { costume: true };
vm.member.preferences = { costume: true, hair: {} };
vm.member.items.gear.costume = {};
expect(vm.costumeClass).to.equal('costume');
});
});
describe('visualBuffs', () => {
it('returns an array of buffs', () => {
vm.member = {
vm.member = merge({
stats: {
class: 'warrior',
},
};
}, baseMember);
expect(vm.visualBuffs).to.include({ snowball: 'avatar_snowball_warrior' });
expect(vm.visualBuffs).to.include({ spookySparkles: 'ghost' });
@@ -138,7 +124,10 @@ context('avatar.vue', () => {
describe('backgroundClass', () => {
beforeEach(() => {
vm.member.preferences = { background: 'pony' };
vm.member.preferences = {
hair: {},
background: 'pony',
};
});
it('shows the background', () => {
@@ -161,17 +150,11 @@ context('avatar.vue', () => {
describe('specialMountClass', () => {
it('checks if riding a Kangaroo', () => {
vm.member = {
stats: {
class: 'None',
},
items: {},
};
expect(vm.specialMountClass).to.equal(null);
vm.member.items = {
currentMount: ['Kangaroo'],
currentMount: 'Kangaroo',
gear: { equipped: {} },
};
expect(vm.specialMountClass).to.equal('offset-kangaroo');
@@ -180,24 +163,22 @@ context('avatar.vue', () => {
describe('skinClass', () => {
it('returns current skin color', () => {
vm.member = {
stats: {},
vm.member = merge({
preferences: {
skin: 'blue',
},
};
}, baseMember);
expect(vm.skinClass).to.equal('skin_blue');
});
it('returns if sleep or not', () => {
vm.member = {
stats: {},
vm.member = merge({
preferences: {
skin: 'blue',
sleep: false,
},
};
}, baseMember);
expect(vm.skinClass).to.equal('skin_blue');
@@ -210,14 +191,14 @@ context('avatar.vue', () => {
context('methods', () => {
describe('getGearClass', () => {
beforeEach(() => {
vm.member = {
vm.member = merge({
items: {
gear: {
equipped: { Hat: 'Fancy Tophat' },
},
},
preferences: { costume: false },
};
}, baseMember);
});
it('returns undefined if no match', () => {
@@ -242,7 +223,7 @@ context('avatar.vue', () => {
});
beforeEach(() => {
vm.member = {
vm.member = merge({
items: {
gear: {
equipped: {
@@ -254,13 +235,13 @@ context('avatar.vue', () => {
},
},
preferences: { costume: false },
};
}, baseMember);
});
});
describe('show avatar', () => {
beforeEach(() => {
vm.member = {
vm.member = merge({
stats: {
buffs: {
snowball: false,
@@ -269,7 +250,7 @@ context('avatar.vue', () => {
shinySeed: false,
},
},
};
}, baseMember);
});
it('does if not showing visual buffs', () => {
expect(vm.showAvatar()).to.equal(true);
@@ -1,3 +1,4 @@
import Vue from 'vue';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import ChatCard from '@/components/chat/chatCard.vue';
@@ -5,6 +6,7 @@ import Store from '@/libs/store';
const localVue = createLocalVue();
localVue.use(Store);
localVue.use(Vue.directive('b-tooltip', {}));
describe('ChatCard', () => {
function createMessage (text) {
@@ -0,0 +1,109 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import Home from '@/components/static/home.vue';
import Store from '@/libs/store';
import * as Analytics from '@/libs/analytics';
const localVue = createLocalVue();
localVue.use(Store);
describe('Home', () => {
let registerStub;
let socialAuthStub;
let store;
let wrapper;
function mountWrapper (query) {
return shallowMount(Home, {
store,
localVue,
mocks: {
$t: string => string,
$route: { query: query || {} },
},
});
}
async function fillOutUserForm (username, email, password) {
await wrapper.find('#usernameInput').setValue(username);
await wrapper.find('input[type=email]').setValue(email);
await wrapper.findAll('input[type=password]').setValue(password);
}
beforeEach(() => {
registerStub = sinon.stub();
socialAuthStub = sinon.stub();
store = new Store({
state: {},
getters: {},
actions: {
'auth:register': registerStub,
'auth:socialAuth': socialAuthStub,
'auth:verifyUsername': () => Promise.resolve({}),
},
});
sinon.stub(Analytics, 'track');
wrapper = mountWrapper();
});
afterEach(sinon.restore);
it('has a visible title', () => {
expect(wrapper.find('h1').text()).to.equal('motivateYourself');
});
describe('signup form', () => {
it('registers a user from the form', async () => {
const username = 'newUser';
const email = 'rookie@habitica.com';
const password = 'ImmaG3tProductive!';
await fillOutUserForm(username, email, password);
await wrapper.find('form').trigger('submit');
expect(registerStub.calledOnce).to.be.true;
expect(registerStub.getCall(0).args[1]).to.deep.equal({
username,
email,
password,
passwordConfirm: password,
groupInvite: '',
});
});
it('registers a user with group invite if groupInvite in the query', async () => {
const groupInvite = 'TheBestGroup';
wrapper = mountWrapper({ groupInvite });
await fillOutUserForm('invitedUser', 'invited@habitica.com', '1veGotFri3ndsHooray!');
await wrapper.find('form').trigger('submit');
expect(registerStub.calledOnce).to.be.true;
expect(registerStub.getCall(0).args[1].groupInvite).to.equal(groupInvite);
});
it('registers a user with group invite if p in the query', async () => {
const p = 'ThePiGroup';
wrapper = mountWrapper({ p });
await fillOutUserForm('alsoInvitedUser', 'invited2@habitica.com', '1veGotFri3nds2!');
await wrapper.find('form').trigger('submit');
expect(registerStub.calledOnce).to.be.true;
expect(registerStub.getCall(0).args[1].groupInvite).to.equal(p);
});
it('registers a user with group invite invite if both p and groupInvite are in the query', async () => {
const groupInvite = 'StillTheBestGroup';
wrapper = mountWrapper({ p: 'LesserGroup', groupInvite });
await fillOutUserForm('doublyInvitedUser', 'invited3@habitica.com', '1veGotSm4rtFri3nds!');
await wrapper.find('form').trigger('submit');
expect(registerStub.calledOnce).to.be.true;
expect(registerStub.getCall(0).args[1].groupInvite).to.equal(groupInvite);
});
});
});
@@ -20,7 +20,7 @@ describe('Notifications', () => {
lvl: 0,
},
flags: {},
preferences: {},
preferences: { suppressModals: {} },
party: {
quest: {
},
@@ -55,6 +55,7 @@ describe('Notifications', () => {
expect(wrapper.vm.userHasClass).to.be.true;
});
describe('user exp notifcation', () => {
it('notifies when user gets more exp', () => {
const expSpy = sinon.spy(wrapper.vm, 'exp');
@@ -1,4 +1,4 @@
import { mount, createLocalVue } from '@vue/test-utils';
import { shallowMount, createLocalVue } from '@vue/test-utils';
import TaskColumn from '@/components/tasks/column.vue';
import Store from '@/libs/store';
@@ -7,10 +7,6 @@ localVue.use(Store);
describe('Task Column', () => {
let wrapper;
let store; let
getters;
let habits; let taskListOverride; let
tasks;
function makeWrapper (additionalSetup = {}) {
const type = 'habit';
@@ -19,9 +15,12 @@ describe('Task Column', () => {
};
const stubs = ['b-modal']; // <b-modal> is a custom component and not tested here
return mount(TaskColumn, {
propsData: {
type,
return shallowMount(TaskColumn, {
propsData: { type },
store: {
getters: {
'tasks:getFilteredTaskList': () => [],
},
},
mocks,
stubs,
@@ -56,6 +55,9 @@ describe('Task Column', () => {
});
describe('Computed Properties', () => {
let taskListOverride;
let habits;
beforeEach(() => {
habits = [
{ id: 1 },
@@ -67,14 +69,14 @@ describe('Task Column', () => {
{ id: 4 },
];
getters = {
const getters = {
// (...) => { ... } will return a value
// (...) => (...) => { ... } will return a function
// Task Column expects a function
'tasks:getFilteredTaskList': () => () => habits,
};
store = new Store({ getters });
const store = new Store({ getters });
wrapper = makeWrapper({ store });
});
@@ -103,6 +105,8 @@ describe('Task Column', () => {
});
describe('Methods', () => {
let tasks;
describe('Filter By Tags', () => {
beforeEach(() => {
tasks = [
@@ -6,6 +6,19 @@ const localVue = createLocalVue();
localVue.use(Store);
describe('Tasks User', () => {
function createWrapper (challengeTag) {
const store = new Store({
state: { user: { data: { tags: [challengeTag] } } },
getters: {},
});
return shallowMount(User, {
store,
localVue,
mocks: { $t: s => s },
stubs: ['b-tooltip'],
});
}
describe('Computed Properties', () => {
it('should render a challenge tag under challenge header in tag filter popup when the challenge is active', () => {
const activeChallengeTag = {
@@ -13,20 +26,7 @@ describe('Tasks User', () => {
name: 'Challenge1',
challenge: true,
};
const state = {
user: {
data: {
tags: [activeChallengeTag],
},
},
};
const getters = {};
const store = new Store({ state, getters });
const wrapper = shallowMount(User, {
store,
localVue,
});
const wrapper = createWrapper(activeChallengeTag);
const computedTagsByType = wrapper.vm.tagsByType;
expect(computedTagsByType.challenges.tags.length).to.equal(1);
@@ -40,20 +40,7 @@ describe('Tasks User', () => {
name: 'Challenge1',
challenge: false,
};
const state = {
user: {
data: {
tags: [inactiveChallengeTag],
},
},
};
const getters = {};
const store = new Store({ state, getters });
const wrapper = shallowMount(User, {
store,
localVue,
});
const wrapper = createWrapper(inactiveChallengeTag);
const computedTagsByType = wrapper.vm.tagsByType;
expect(computedTagsByType.challenges.tags.length).to.equal(0);
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Your <%= itemText %> broke.",
"messageTaskNotFound": "Task not found.",
"messageDuplicateTaskID": "A task with that ID already exists.",
"messageTagNotFound": "Tag not found.",
"messagePetNotFound": ":pet not found in user.items.pets",
"messageFoodNotFound": ":food not found in user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
"messageBought": "Bought <%= itemText %>",
"messageEquipped": " <%= itemText %> equipped.",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageMissingEggPotion": "You're missing either that egg or that potion",
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
@@ -24,10 +22,7 @@
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "You've found a quest!",
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
"messageInsufficientGems": "Not enough gems!",
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
"messageAuthEmailTaken": "Email already taken",
"messageAuthNoUserFound": "No user found.",
"messageAuthMustBeLoggedIn": "You must be logged in.",
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not found",
"messageNotificationNotFound": "Notification not found.",
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
"notificationsRequired": "Notification ids are required.",
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "Quests",
"quest": "quest",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "Your Quests",
"questsForSale": "Quests for Sale",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "Completed!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "You've Received",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "Quest Invitation",
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Ask Later",
"questLater": "Quest Later",
"buyQuest": "Buy Quest",
"accepted": "Accepted",
"declined": "Declined",
"rejected": "Rejected",
"pending": "Pending",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
@@ -43,56 +29,20 @@
"rage": "Rage",
"collect": "Collect",
"collected": "Collected",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "Abort",
"leaveQuest": "Leave Quest",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "Quest Owner",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items collected today",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "Quest Scrolls",
"noScrolls": "You don't have any quest scrolls.",
"scrollsText1": "Quests require parties. If you want to quest solo,",
"scrollsText2": "create an empty party",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "Completed the following quests",
"mustComplete": "You must first complete <%= quest %>.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "Rage",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "START A QUEST",
"startQuest": "Start Quest",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "Get more quests",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Jou <%= itemText %> het gebreek.",
"messageTaskNotFound": "Taak nie gevind nie.",
"messageDuplicateTaskID": "'n Taak met daardie ID bestaan reeds.",
"messageTagNotFound": "Etiket nie gevind nie.",
"messagePetNotFound": ":pet was nie gevind in user.items.pets nie",
"messageFoodNotFound": ":food was nie gevind in user.items.food nie",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
"messageBought": "Bought <%= itemText %>",
"messageEquipped": " <%= itemText %> equipped.",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageMissingEggPotion": "You're missing either that egg or that potion",
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
@@ -24,10 +22,7 @@
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "You've found a quest!",
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "Jy stoei met die Kast en ontvang Ondervinding. Vat so!",
"messageInsufficientGems": "Nie genoeg edelstene nie!",
"messageAuthPasswordMustMatch": ":password en :confirmPassword is nie dieselfde nie",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword is vereis",
"messageAuthEmailTaken": "E-Pos reeds gevat",
"messageAuthNoUserFound": "Geen verbruiker gevind nie.",
"messageAuthMustBeLoggedIn": "Jy moet ingesluit wees.",
"messageAuthMustIncludeTokens": "Jy moet 'n teiken en 'n vid(verbruiker id) in jou versoek insluit",
"messageGroupAlreadyInParty": "Reeds in 'n party, probeer herlaai.",
"messageGroupOnlyLeaderCanUpdate": "Net die groep leier kan die groep op dateer!",
"messageGroupRequiresInvite": "Kan nie by 'n groep aansluit waarnatoe jy nie genooi is nie.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "pad `<%= operation %>` was nie gespaar nie, want dit is 'n beskermde pad.",
"messageUserOperationNotFound": "<%= operation %> instruksie nie gevind nie",
"messageNotificationNotFound": "Notification not found.",
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
"notificationsRequired": "Notification ids are required.",
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "Quests",
"quest": "quest",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "Your Quests",
"questsForSale": "Quests for Sale",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "Completed!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "You've Received",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "Quest Invitation",
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Ask Later",
"questLater": "Quest Later",
"buyQuest": "Buy Quest",
"accepted": "Accepted",
"declined": "Declined",
"rejected": "Rejected",
"pending": "Pending",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
@@ -43,56 +29,20 @@
"rage": "Rage",
"collect": "Collect",
"collected": "Collected",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "Abort",
"leaveQuest": "Leave Quest",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "Quest Owner",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items collected today",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "Quest Scrolls",
"noScrolls": "You don't have any quest scrolls.",
"scrollsText1": "Quests require parties. If you want to quest solo,",
"scrollsText2": "create an empty party",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "Completed the following quests",
"mustComplete": "You must first complete <%= quest %>.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "Rage",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "START A QUEST",
"startQuest": "Start Quest",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "Get more quests",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "انكسر <%= itemText %> الخاص بك.",
"messageTaskNotFound": "لم توجد المهمة.",
"messageDuplicateTaskID": "A task with that ID already exists.",
"messageTagNotFound": "الوسم لم يوجد.",
"messagePetNotFound": "لم يتم العثور على :pet في user.items.pets",
"messageFoodNotFound": "لم يتم العثور على :food في user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> يحب <%= foodText %> كثيراً!",
"messageDontEnjoyFood": "<%= egg %> يأكل <%= foodText %> ولكنه لا يبدو مستمتعاً.",
"messageBought": "لقد اشتريت <%= itemText %>",
"messageEquipped": " <%= itemText %> equipped.",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageMissingEggPotion": "تفتقد أيًا من تلك البيضة أو جرعة الفقس.",
"messageInvalidEggPotionCombo": "لا يمكنك فقس بيض حيوانات التنقيب مع جرع فقس سحرية! جرب بيضة أخرى.",
@@ -24,10 +22,7 @@
"messageDropFood": "لقد عثرت على <%= dropText %>!",
"messageDropEgg": "لقد عثرت على بيضة <%= dropText %>!",
"messageDropPotion": "لقد عثرت على جرعة فقس <%= dropText %>!",
"messageDropQuest": "You've found a quest!",
"messageDropMysteryItem": "لقد فتحت الصندوع وعثرت على <%= dropText %>!",
"messageFoundQuest": "لقد عثرت على التنقيب \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "لقد اشتريت هذه المعدة في الماضي، ولكنك لا تملكها حاليًا. يمكنك شراؤها مرة أخرى في عمود المكافآت في صفحة المهام.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
"previousGearNotOwned": "أنت بحاجة إلى شراء معدة منخفضة المستوى قبل هذه.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
"messageInsufficientGems": "Not enough gems!",
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
"messageAuthEmailTaken": "البريد الالكتروني مأخوذ",
"messageAuthNoUserFound": "لم يتم العثور على المستخدم.",
"messageAuthMustBeLoggedIn": "يجب أن تكون قد سجلت دخولك.",
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
"messageGroupAlreadyInParty": "بالفعل في فريق، جرّب إعادة التحميل.",
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "عملية <%= operation %> غير موجودة",
"messageNotificationNotFound": "الإشعار غير موجود.",
"messageNotAbleToBuyInBulk": "لا يمكن شراء هذا العنصر بكميات أكثر من ١.",
"notificationsRequired": "Notification ids are required.",
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "التناقيب",
"quest": "تنقيب",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "مغامراتك",
"questsForSale": "مغامرات للبيع",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "\t\nمنتهى!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "لقد استلمت",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "دعوة إلى مغامرة",
"questInvitationInfo": "دعوة للمشاركة في المغامرة <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "اسألني فيما بعد",
"questLater": "Quest Later",
"buyQuest": "شراء التنقيب",
"accepted": "مقبول",
"declined": "Declined",
"rejected": "مرفوض",
"pending": "جار الانتظار",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "البدء",
@@ -43,56 +29,20 @@
"rage": "غضب",
"collect": "اجمع",
"collected": "جمع",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "أغراض للجمع",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "إلغاء",
"leaveQuest": "اترك المغامرة",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "صاحب المغامرة",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items collected today",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "لفائف التنقيب",
"noScrolls": "ليس لديك أية لفائف تنقيب.",
"scrollsText1": "التناقيب تحتاج إلى فرق. إن كنت تريد أن تشارك في تنقيب لوحدك،",
"scrollsText2": "فقم بإنشاء فريق فاضي",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "تم إكمال التناقيب التالية",
"mustComplete": "يجب عليك أن تكمل <%= quest %> أولاً.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "يجب أن تكون في المستوى <%= level %> لتتمكن من شراء هذا التنقيب!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "غضب",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "إبدأ مغامرة",
"startQuest": "إبدأ المغامرة",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "احصل على المزيد من المغامرت",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Your <%= itemText %> broke.",
"messageTaskNotFound": "Task not found.",
"messageDuplicateTaskID": "A task with that ID already exists.",
"messageTagNotFound": "Tag not found.",
"messagePetNotFound": ":pet not found in user.items.pets",
"messageFoodNotFound": ":food not found in user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
"messageBought": "Bought <%= itemText %>",
"messageEquipped": " <%= itemText %> equipped.",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageMissingEggPotion": "You're missing either that egg or that potion",
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
@@ -24,10 +22,7 @@
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "You've found a quest!",
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
"messageInsufficientGems": "Not enough gems!",
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
"messageAuthEmailTaken": "Email already taken",
"messageAuthNoUserFound": "No user found.",
"messageAuthMustBeLoggedIn": "You must be logged in.",
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not found",
"messageNotificationNotFound": "Notification not found.",
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
"notificationsRequired": "Notification ids are required.",
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "Quests",
"quest": "quest",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "Your Quests",
"questsForSale": "Quests for Sale",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "Completed!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "You've Received",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "Quest Invitation",
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Ask Later",
"questLater": "Quest Later",
"buyQuest": "Buy Quest",
"accepted": "Accepted",
"declined": "Declined",
"rejected": "Rejected",
"pending": "Pending",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
@@ -43,56 +29,20 @@
"rage": "Rage",
"collect": "Collect",
"collected": "Collected",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "Abort",
"leaveQuest": "Leave Quest",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "Quest Owner",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items collected today",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "Quest Scrolls",
"noScrolls": "You don't have any quest scrolls.",
"scrollsText1": "Quests require parties. If you want to quest solo,",
"scrollsText2": "create an empty party",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "Completed the following quests",
"mustComplete": "You must first complete <%= quest %>.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "Rage",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "START A QUEST",
"startQuest": "Start Quest",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "Get more quests",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Ваш предмет се счупи: <%= itemText %>.",
"messageTaskNotFound": "Задачата не е намерена.",
"messageDuplicateTaskID": "Вече съществува задача с този идентификатор.",
"messageTagNotFound": "Етикетът не е намерен.",
"messagePetNotFound": ":pet не е открит в user.items.pets",
"messageFoodNotFound": ":food не е открита в user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> много хареса <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> изяде <%= foodText %> , но не му/ѝ хареса.",
"messageBought": "Закупихте <%= itemText %>",
"messageEquipped": " Екипирахте <%= itemText %>.",
"messageUnEquipped": "Разекипирахте <%= itemText %>.",
"messageMissingEggPotion": "Липсва Ви яйцето или отварата",
"messageInvalidEggPotionCombo": "Не можете да излюпите яйце на любимец от мисия с магическа излюпваща отвара! Опитайте с друго яйце.",
@@ -24,10 +22,7 @@
"messageDropFood": "Намерихте <%= dropText %>!",
"messageDropEgg": "Намерихте яйце на <%= dropText %>!",
"messageDropPotion": "Намерихте излюпваща отвара с(ъс) <%= dropText %>!",
"messageDropQuest": "Намерихте мисия!",
"messageDropMysteryItem": "Отваряте кутията и намирате <%= dropText %>!",
"messageFoundQuest": "Намерихте мисията „<%= questText %>“!",
"messageAlreadyPurchasedGear": "Вие сте купували тази екипировка в миналото, но в момента не я притежавате. Можете да я купите отново от колоната с награди на страницата със задачи.",
"messageAlreadyOwnGear": "Вече притежавате този предмет. Можете да го екипирате като отидете на страницата с екипировката.",
"previousGearNotOwned": "Трябва да закупите екипировка от по-ниско ниво преди тази.",
"messageHealthAlreadyMax": "Здравето Ви вече е пълно.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> Тършувате из гардероба и намирате <%= dropText %>. Какво ли прави това там?",
"armoireExp": "Сборвате се с гардероба и получавате опит. Така му се пада!",
"messageInsufficientGems": "Нямате достатъчно диаманти!",
"messageAuthPasswordMustMatch": ":password и :confirmPassword не съвпадат",
"messageAuthCredentialsRequired": ":username, :email, :password и :confirmPassword са задължителни",
"messageAuthEmailTaken": "Е-пощата вече се използва",
"messageAuthNoUserFound": "Потребителят не е намерен.",
"messageAuthMustBeLoggedIn": "Трябва да сте влезли в системата.",
"messageAuthMustIncludeTokens": "Трябва да включите жетон и потребителски идентификатор в заявката си",
"messageGroupAlreadyInParty": "Вече сте в група, опитайте да опресните.",
"messageGroupOnlyLeaderCanUpdate": "Само водачът на групата може да я актуализира!",
"messageGroupRequiresInvite": "Не можете да се присъедините към група, за която не сте получили покана.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Опа! Изглежда публикувате твърде много съобщения. Моля, изчакайте малко и опитайте отново. Чатът в кръчмата може да показва най-много 200 съобщения, така че съветваме потребителите да публикуват по-дълги и добре обмислени съобщения, както и да обединяват отговорите си. Скоро ще можете да пишете отново! :)",
"messageCannotLeaveWhileQuesting": "Не можете да приемете тази покана за присъединяване в група, докато изпълнявате мисия. Ако искате да се присъедините към тази група, трябва първо да прекратите мисията си – можете да направите това от екрана за групата. Ще си получите обратно свитъка с мисията.",
"messageUserOperationProtected": "Пътят `<%= operation %>` не беше запазен, тъй като е защитен път.",
"messageUserOperationNotFound": "Операцията „<%= operation %>“ не е намерена",
"messageNotificationNotFound": "Известието не е намерено.",
"messageNotAbleToBuyInBulk": "Не може да се закупи повече от един брой от този предмет.",
"notificationsRequired": "Идентификаторите на известията са задължителни.",
-35
View File
@@ -5,7 +5,6 @@
"noActivePet": "Няма текущ Любимец",
"petsFound": "Намерени Любимци",
"magicPets": "Любимци от магически отвари",
"rarePets": "Редки Любимци",
"questPets": "Любимци от мисии",
"mounts": "Превози",
"activeMount": "Текущ Превоз",
@@ -13,7 +12,6 @@
"mountsTamed": "Опитомени Превози",
"questMounts": "Превози от мисии",
"magicMounts": "Превози от магически отвари",
"rareMounts": "Редки Превози",
"etherealLion": "Етерен лъв",
"veteranWolf": "Вълк ветеран",
"veteranTiger": "Тигър ветеран",
@@ -32,18 +30,13 @@
"hopefulHippogriffMount": "Обнадежден хипогриф",
"royalPurpleJackalope": "Царствено лилав рогат заек",
"invisibleAether": "Невидим етер",
"rarePetPop1": "Щракнете златната лапа, за да научите как може да получите този рядък любимец чрез принос към Хабитика!",
"rarePetPop2": "Как да получите този любимец!",
"potion": "Отвара с(ъс) <%= potionType %>",
"egg": "Яйце на <%= eggType %>",
"eggs": "Яйца",
"eggSingular": "яйце",
"noEggs": "Вие нямате никакви яйца.",
"hatchingPotions": "Излюпващи отвари",
"magicHatchingPotions": "Магически излюпващи отвари",
"hatchingPotion": "излюпваща отвара",
"noHatchingPotions": "Вие нямате никакви излюпващи отвари.",
"inventoryText": "Щракнете яйце, за да видите приложимите за него отвари, осветени в зелено, а след това изберете някоя от осветените отвари, за да излюпите любимеца си. Ако няма осветени отвари, щракнете яйцето отново, за да премахнете избора и щракнете някоя отвара, за да видите върху кои яйца може да се използва. Можете също да продадете ненужните яйца и отвари на Александър Търговеца.",
"haveHatchablePet": "Имате излюпваща отвара с(ъс) <%= potion %> и яйце на <%= egg %>, с които можете да излюпите този любимец! <b>Натиснете</b> за да го излюпите!",
"quickInventory": "Бърз инвентар",
"foodText": "храна",
@@ -55,41 +48,28 @@
"dropsExplanationEggs": "Използвайте диамантите, за да получавате яйца по-бързо, ако не искате да чакате да Ви се паднат яйца по нормалния начин, или да повтаряте мисиите, за да получите яйца от мисии. <a href=\"http://habitica.fandom.com/wiki/Drops\">Научете повече за падането на предмети.</a>",
"premiumPotionNoDropExplanation": "Магическите излюпващи отвари не могат да бъдат използвани за яйца, придобити от мисии. Единственият начин да получите магическа излюпваща отвара, е като я закупите по-долу; тя няма никога да Ви се падне.",
"beastMasterProgress": "Напредък за „Господар на зверовете“",
"stableBeastMasterProgress": "Напредък за „Господар на зверовете“: намерени любимци: <%= number %>",
"beastAchievement": "Спечелихте постижението „Господар на зверовете“ защото събрахте всички любимци!",
"beastMasterName": "Господар на зверовете",
"beastMasterText": "Открил/а всички 90 любимци (това е изключително трудно; поздравете този потребител!)",
"beastMasterText2": " и освободил(а) любимците си общо <%= count %> път(и)",
"mountMasterProgress": "Напредък за „Господар на превозите“",
"stableMountMasterProgress": "Напредък за „Господар на превозите“: опитомени превози: <%= number %>",
"mountAchievement": "Спечелихте постижението „Господар на превозите“, за това, че опитомихте всички превози!",
"mountMasterName": "Господар на превозите",
"mountMasterText": "Опитомил(а) всички 90 превоза (още по-трудно; поздравете този потребител!)",
"mountMasterText2": " и освободил(а) всичките си 90 превоза общо <%= count %> път(и)",
"beastMountMasterName": "Господар на зверовете и Господар на превозите",
"triadBingoName": "Тройно бинго",
"triadBingoText": "Намерил/а всички 90 любимци, всички 90 превоза и всички 90 любимци ОТНОВО (КАК СТАВА ТОВА!)",
"triadBingoText2": " и освободил(а) пълната си конюшня общо <%= count %> път(и)",
"triadBingoAchievement": "Спечелихте постижението „Тройно бинго“ за това, че намерихте всички любимци, опитомихте всички превози и намерихте всички любимци отново!",
"dropsEnabled": "Падането на предмети е включено!",
"itemDrop": "Намерихте предмет!",
"firstDrop": "Отключихте системата за падане на предмети! Сега като изпълните задача, има малък шанс да Ви се падне някакъв предмет, включително яйца, отвари и храна! Току-що намерихте <strong>яйце на <%= eggText %></strong>! <%= eggNotes %>",
"useGems": "Ако сте харесали животно, но не можете да чакате повече, за да Ви се падне, може да използвате диаманти, за да го купите в <strong>Инвентар > Пазар</strong>!",
"hatchAPot": "Искате ли да излюпите <%= egg %> с <%= potion %>?",
"hatchedPet": "Вие излюпихте <%= egg %> с <%= potion %>!",
"hatchedPetGeneric": "Излюпихте нов любимец!",
"hatchedPetHowToUse": "Посетете [конюшнята](<%= stableUrl %>), за да нахраните и екипирате новия си любимец!",
"displayNow": "Показване сега",
"displayLater": "Показване по-късно",
"petNotOwned": "Не притежавате този любимец.",
"mountNotOwned": "Не притежавате този прево.",
"earnedCompanion": "Благодарение на продуктивността си се сдобихте с нов спътник. Хранете го, за да порасне!",
"feedPet": "Искате ли да дадете <%= text %> на <%= name %>?",
"useSaddle": "Искате ли да оседлаете <%= pet %>?",
"raisedPet": "Вие отгледахте <%= pet %>!",
"earnedSteed": "Изпълнявайки задачите си, Вие спечелихте верен жребец!",
"rideNow": "Яздене сега",
"rideLater": "Яздене по-късно",
"petName": "<%= egg(locale) %> с(ъс) <%= potion(locale) %>",
"mountName": "<%= mount(locale) %> с(ъс) <%= potion(locale) %>",
"keyToPets": "Ключ от зверилника за любимци",
@@ -104,24 +84,9 @@
"releaseMountsSuccess": "Стандартните превози бяха освободени!",
"releaseBothConfirm": "Наистина ли искате да освободите стандартните си любимци и превози?",
"releaseBothSuccess": "Стандартните любимци и превози бяха освободени!",
"petKeyName": "Ключ от зверилника",
"petKeyPop": "Нека любимците Ви бъдат свободни; пуснете ги, за да започнат свое собствено приключение и си дайте тръпката да станете отново Господар на зверовете!",
"petKeyBegin": "Ключ от зверилника: Станете отново „<%= title %>“!",
"petKeyInfo": "Липсва ли Ви тръпката от събирането на любимци? Сега може да ги освободите и паданията им отново да придобият смисъл!",
"petKeyInfo2": "Използвайте ключа от зверилника, за да изчистите всички събрани любимци и превози, които не са се появили от мисия. (Любимците от мисии и редките любимци и превози няма да бъдат засегнати.)",
"petKeyInfo3": "Съществуват три ключа от зверилника: освобождаване само на любимците (4 диаманта), освобождаване само на превозите (4 диаманта) или освобождаване на любимците и превозите (6 диаманта). Употребата на ключ Ви позволява да надградите постиженията „Господар на зверовете“ и „Господар на превозите“. Постижението „Тройно бинго“ може да бъде надградено само ако използвате ключа, който освобождава любимците и превозите, и съберете всичките 90 животни втори път. Покажете на света какъв колекционер сте! Избирайте внимателно, защото ако използвате ключ и отворите зверилника или конюшнята, няма да можете да си върнете животните, освен ако не ги съберете отново…",
"petKeyInfo4": "Съществуват три ключа от зверилника: освобождаване само на любимците (4 диаманта), освобождаване само на превозите (4 диаманта) или освобождаване на любимците и превозите. Употребата на ключ Ви позволява да надградите постиженията „Господар на зверовете“ и „Господар на превозите“. Постижението „Тройно бинго“ може да бъде надградено само ако използвате ключа, който освобождава любимците и превозите, и съберете всичките 90 животни втори път. Покажете на света какъв колекционер сте! Избирайте внимателно, защото ако използвате ключ и отворите зверилника или конюшнята, няма да можете да си върнете животните, освен ако не ги съберете отново…",
"petKeyPets": "Освобождаване на любимците",
"petKeyMounts": "Освобождаване на превозите",
"petKeyBoth": "Освобождаване и на двата вида",
"confirmPetKey": "Наистина ли искате това?",
"petKeyNeverMind": "Не още",
"petsReleased": "Любимците бяха освободени.",
"mountsAndPetsReleased": "Превозите и любимците бяха освободени",
"mountsReleased": "Превозите бяха освободени",
"gemsEach": "диаманта всеки",
"foodWikiText": "Какво обича да яде любимецът ми?",
"foodWikiUrl": "http://habitica.fandom.com/wiki/Food_Preferences",
"welcomeStable": "Добре дошли в конюшнята!",
"welcomeStableText": "Добре дошли в Конюшнята! Аз съм Мат, господарят на зверовете. Всеки път като изпълните задача, има шанс да получите Яйце или Излюпваща Отвара, които са ви нужни за да излюпвате Любимци. Когато излюпите ЛОседлан Звярюбимец, той ще се появи тук! Щракнете върху изображението на Любимец, за да го добавите към Героя си. Хранете любимците с храната, която намирате, и те ще се превърнат в силни Оседлани Любимци.",
"petLikeToEat": "Какво обича да яде любимецът ми?",
-54
View File
@@ -1,9 +1,6 @@
{
"quests": "Мисии",
"quest": "мисия",
"whereAreMyQuests": "Мисиите вече имат своя собствена страница! Можете да ги откриете в Инвентар -> Мисии.",
"yourQuests": "Вашите мисии",
"questsForSale": "Мисии за продан",
"petQuests": "Мисии за любимци и превози",
"unlockableQuests": "Мисии, които могат да бъдат отключени",
"goldQuests": "Последователности от мисии на класовите повелители",
@@ -14,27 +11,16 @@
"completed": "Завършена!",
"rewardsAllParticipants": "Награди за всички участници в мисията",
"rewardsQuestOwner": "Допълнителни награди за притежателя на мисията",
"questOwnerReceived": "Притежателят на мисията получи още",
"youWillReceive": "Вие ще получите",
"questOwnerWillReceive": "Притежателят на мисията ще получи още",
"youReceived": "Вие получихте",
"dropQuestCongrats": "Поздравления за придобиването на този свитък с мисия! Можете да поканите групата си и да започнете мисията сега или да се върнете към нея по-късно от Инвентар > Мисии.",
"questSend": "Ако щракнете върху „Поканване“, ще изпратите покани до всички членове на групата. Мисията започва, когато всички приемат или отхвърлят поканата си. Можете да видите състоянието на поканите в Общност -> Група.",
"questSendBroken": "Ако щракнете върху „Поканване“, ще изпратите покани до всички членове на групата… Мисията започва, когато всички приемат или отхвърлят поканата си… Можете да видите състоянието на поканите в Общност -> Група…",
"inviteParty": "Канене на групата за мисия",
"questInvitation": "Покана за мисия: ",
"questInvitationTitle": "Покана за мисия",
"questInvitationInfo": "Покана за мисията „<%= quest %>“",
"invitedToQuest": " Получихте покана за присъединяване в мисията <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Питайте ме по-късно",
"questLater": "Отлагане на мисията",
"buyQuest": "Купуване на мисията",
"accepted": "Приета",
"declined": "Отказана",
"rejected": "Отказана",
"pending": "В очакване",
"questStart": "След като всички членове приемат или откажат, мисията започва. Само тези, които са приели, ще могат да участват в мисията и да получат плячка. Ако някои се бавят твърде много (неактивност?), притежателят на свитъка може да започне без тях като натисне „Започване“. Притежателят на свитъка също така може да прекрати мисията като натисне „Отказ“, при което ще си запази свитъка.",
"questStartBroken": "След като всички членове приемат или откажат, мисията започва… Само тези, които са приели, ще могат да участват в мисията и да получат плячка… Ако някои се бавят твърде много (неактивност?), притежателят на свитъка може да започне без тях като натисне „Започване“… Притежателят на свитъка също така може да прекрати мисията като натисне „Отказ“, при което ще си запази свитъка…",
"questCollection": "Намерени предмети от мисия: + <%= val %>",
"questDamage": "Щети за главатаря: + <%= val %>",
"begin": "Започване",
@@ -43,56 +29,20 @@
"rage": "Ярост",
"collect": "Събиране",
"collected": "Събрани",
"collectionItems": "<%= items %>: <%= number %>",
"itemsToCollect": "Предмети за събиране",
"bossDmg1": "Всяка завършена задача за изпълнение или ежедневна задача, както и всеки положителен навик наранява главатаря. Можете да го нараните повече с по-червените задачи или като използвате Зверско разбиване или Пламъчен взрив. Главатарят ще нанесе щети на всеки участник в мисията за всяка пропусната ежедневна задача (умножено по силата на главатаря), като допълнение към обикновените щети, така че поддържайте здравето на групата си като изпълнявате ежедневните си задачи! <strong>Всички щети, нанесени на или получени от главатаря, се прилагат веднъж на ден (наведнъж в края на деня).</strong>",
"bossDmg2": "Само участниците ще се бият с главатаря и ще участват в разделянето на плячката от мисията.",
"bossDmg1Broken": "Всяка завършена задача за изпълнение или ежедневна задача, както и всеки положителен навик наранява главатаря… Можете да го нараните повече с по-червените задачи или като използвате Зверско разбиване или Пламъчен взрив… Главатарят ще нанесе щети на всеки участник в мисията за всяка пропусната ежедневна задача (умножено по силата на главатаря), като допълнение към обикновените щети, така че поддържайте здравето на групата си като изпълнявате ежедневните си задачи… <strong>Всички щети, нанесени на или получени от главатаря, се прилагат веднъж на ден (наведнъж в края на деня)…</strong>",
"bossDmg2Broken": "Само участниците ще се бият с главатаря и ще участват в разделянето на плячката от мисията…",
"tavernBossInfo": "Завършвайте задачите си за изпълнение и ежедневните си задачи и отмятайте положителните си навици, за да нанасяте щети на световния главатар! Незавършените ежедневни задачи запълват лентата за яростта му. Когато тя се напълни, световният главатар ще нападне някой от компютърните персонажи. Световният главатар не нанася щети на отделни играчи или акаунти. Следят се само задачите на активните акаунти, които не си почиват в странноприемницата.",
"tavernBossInfoBroken": "Завършвайте задачите си за изпълнение и ежедневните си задачи и отмятайте положителните си навици, за да нанасяте щети на световния главатар… Незавършените ежедневни задачи запълват лентата за неговия Изтощителен удар… Когато тя се напълни, световният главатар ще нападне някой от компютърните персонажи… Световният главатар не нанася щети на отделни играчи или акаунти… Следят се само задачите на активните акаунти, които не си почиват в странноприемницата…",
"bossColl1": "За да събирате предмети, изпълнявайте положителните си задачи. Предметите от мисии се падат както обикновените. Можете да следите какви предмети са Ви се паднали от мисията като посочите иконката за напредъка ѝ.",
"bossColl2": "Само участниците могат да събират предмети и да участват в разпределянето на плячката от мисията.",
"bossColl1Broken": "За да събирате предмети, изпълнявайте положителните си задачи… Предметите от мисии се падат както обикновените. Можете да следите какви предмети са Ви се паднали от мисията като посочите иконката за напредъка ѝ…",
"bossColl2Broken": "Само участниците могат да събират предмети и да участват в разпределянето на плячката от мисията…",
"abort": "Прекратяване",
"leaveQuest": "Напускане на мисията",
"sureLeave": "Наистина ли искате да се откажете от текущата мисия? Ще загубите целия си напредък.",
"questOwner": "Притежател на мисията",
"questTaskDamage": "Чакащи щети за главатаря: + <%= damage %>",
"questTaskCollection": "<%= items %> събрани предмета днес",
"questOwnerNotInPendingQuest": "Притежателят на мисията я напусна и тя не може да започне. Препоръчително е и Вие да се откажете сега. Притежателят на мисията ще си запази свитъка ѝ.",
"questOwnerNotInRunningQuest": "Притежателят на мисията я напусна. Вие също може да се откажете, ако искате. Ако продължите, Вие и всички останали участници ще получите наградите на мисията когато тя приключи.",
"questOwnerNotInPendingQuestParty": "Притежателят на мисията напусна групата и не може да даде начало на мисията. Препоръчително е и Вие да се откажете сега. Свитъкът с мисията ще бъде върнат на притежателя си.",
"questOwnerNotInRunningQuestParty": "Притежателят на мисията напусна групата. Вие също може да се откажете от мисията, ако искате. Ако продължите, Вие и всички останали участници ще получите наградите на мисията когато тя приключи.",
"questParticipants": "Участници",
"scrolls": "Свитъци с мисии",
"noScrolls": "Вие нямате свитъци с мисии.",
"scrollsText1": "Мисиите се изпълняват с група. Ако искате да започнете мисия самостоятелно,",
"scrollsText2": "създайте си празна група",
"scrollsPre": "Все още не сте отключили тази мисия!",
"alreadyEarnedQuestLevel": "Вече сте придобили тази мисия при достигането на Ниво <%= level %>.",
"alreadyEarnedQuestReward": "Вече сте придобили тази мисия със завършването на <%= priorQuest %>.",
"completedQuests": "Завършил(а) следните мисии",
"mustComplete": "Трябва първо да завършите <%= quest %>.",
"mustLevel": "Трябва да бъдете ниво <%= level %>, за да започнете тази мисия.",
"mustLvlQuest": "Трябва да бъдете ниво <%= level %>, за да купите тази мисия!",
"mustInviteFriend": "За да получите тази мисия, поканете приятел в група. Искате ли да поканите някого сега?",
"unlockByQuesting": "За да отключите тази мисия, първо завършете <%= title %>.",
"questConfirm": "Наистина ли искате това? Само <%= questmembers %> от всички <%= totalmembers %> членове на групата Ви са се присъединили в мисията! Мисиите започват автоматично, след като всичко играчи се присъединят или откажат поканата.",
"sureCancel": "Наистина ли искате да прекратите мисията? Всички приети покани ще бъдат загубени. Притежателят на мисията ще си запази свитъка ѝ.",
"sureAbort": "Наистина ли искате да прекратите мисията? Тя ще бъде прекратена за всекиго в групата, а напредъкът по нея ще бъде загубен. Свитъкът с мисията ще бъде върнат на притежателя си.",
"doubleSureAbort": "Наистина ли искате това? Дано приятелите Ви не се ядосат!",
"questWarning": "Ако към групата се присъединят нови играчи преди началото на мисията, те също ще получат покани. След като мисията започне, обаче, никой не може да се присъедини към нея.",
"questWarningBroken": "Ако към групата се присъединят нови играчи преди началото на мисията, те също ще получат покани… След като мисията започне, обаче, никой не може да се присъедини към нея…",
"bossRageTitle": "Ярост",
"bossRageDescription": "Когато тази лента се напълни, главатарят ще отприщи специална атака!",
"startAQuest": "ЗАПОЧНЕТЕ МИСИЯ",
"startQuest": "Започнете мисия",
"whichQuestStart": "Коя мисия искате да започнете?",
"getMoreQuests": "Още мисии",
"unlockedAQuest": "Вие отключихте мисия!",
"leveledUpReceivedQuest": "Вие достигнахте <strong>ниво <%= level %></strong> и получихте свитък с мисия!",
"questInvitationDoesNotExist": "Няма изпратени покани за мисията.",
"questInviteNotFound": "Няма намерени покани за мисията.",
"guildQuestsNotSupported": "Гилдиите не могат да бъдат канени в мисии.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Само водачът на групата или мисията може да я отмени.",
"questNotPending": "Няма мисия за започване.",
"questOrGroupLeaderOnlyStartQuest": "Само водачът на групата или мисията може да я започне насила",
"createAccountReward": "Създаване на профил",
"loginIncentiveQuest": "За да отключите тази мисия, се отчитайте в Хабитика <%= count %> различни дни!",
"loginIncentiveQuestObtained": "Сдобихте се с тази мисия като се отчетохте в Хабитика <%= count %> различни дни!",
"loginReward": "<%= count %> отчитания",
"createAccountQuest": "Получихте тази мисия като се присъединихте към Хабитика! Ако Ваш приятел се присъедини, той или тя също ще я получат.",
"questBundles": "Пакети мисии с отстъпка",
"buyQuestBundle": "Купуване на пакет мисии",
"noQuestToStart": "Не можете да намерите мисия, която да започнете? Погледнете в магазина за мисии или на пазара за нови попълнения!",
"pendingDamage": "<%= damage %> чакащи щети",
"pendingDamageLabel": "чакащи щети",
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Your <%= itemText %> broke.",
"messageTaskNotFound": "Task not found.",
"messageDuplicateTaskID": "A task with that ID already exists.",
"messageTagNotFound": "Tag not found.",
"messagePetNotFound": ":pet not found in user.items.pets",
"messageFoodNotFound": ":food not found in user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
"messageBought": "Bought <%= itemText %>",
"messageEquipped": " <%= itemText %> equipped.",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageMissingEggPotion": "You're missing either that egg or that potion",
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
@@ -24,10 +22,7 @@
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "You've found a quest!",
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
"messageInsufficientGems": "Not enough gems!",
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
"messageAuthEmailTaken": "Email already taken",
"messageAuthNoUserFound": "No user found.",
"messageAuthMustBeLoggedIn": "You must be logged in.",
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not found",
"messageNotificationNotFound": "Notification not found.",
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
"notificationsRequired": "Notification ids are required.",
-1
View File
@@ -1,5 +1,4 @@
{
"rarePets": "বিরল পশু",
"petsFound": "পোষা প্রাণী পাওয়া গেছে",
"pets": "পোষা প্রাণী",
"stable": "গোয়াল"
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "Quests",
"quest": "quest",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "Your Quests",
"questsForSale": "Quests for Sale",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "Completed!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "You've Received",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "Quest Invitation",
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Ask Later",
"questLater": "Quest Later",
"buyQuest": "Buy Quest",
"accepted": "Accepted",
"declined": "Declined",
"rejected": "Rejected",
"pending": "Pending",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
@@ -43,56 +29,20 @@
"rage": "Rage",
"collect": "Collect",
"collected": "Collected",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "Abort",
"leaveQuest": "Leave Quest",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "Quest Owner",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items collected today",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "Quest Scrolls",
"noScrolls": "You don't have any quest scrolls.",
"scrollsText1": "Quests require parties. If you want to quest solo,",
"scrollsText2": "create an empty party",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "Completed the following quests",
"mustComplete": "You must first complete <%= quest %>.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "Rage",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "START A QUEST",
"startQuest": "Start Quest",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "Get more quests",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Your <%= itemText %> broke.",
"messageTaskNotFound": "Task not found.",
"messageDuplicateTaskID": "A task with that ID already exists.",
"messageTagNotFound": "Tag not found.",
"messagePetNotFound": ":pet not found in user.items.pets",
"messageFoodNotFound": ":food not found in user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
"messageBought": "Bought <%= itemText %>",
"messageEquipped": " <%= itemText %> equipped.",
"messageUnEquipped": "<%= itemText %> unequipped.",
"messageMissingEggPotion": "You're missing either that egg or that potion",
"messageInvalidEggPotionCombo": "You can't hatch Quest Pet Eggs with Magic Hatching Potions! Try a different egg.",
@@ -24,10 +22,7 @@
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "You've found a quest!",
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
"messageFoundQuest": "You've found the quest \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
"messageInsufficientGems": "Not enough gems!",
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
"messageAuthEmailTaken": "Email already taken",
"messageAuthNoUserFound": "No user found.",
"messageAuthMustBeLoggedIn": "You must be logged in.",
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not found",
"messageNotificationNotFound": "Notification not found.",
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
"notificationsRequired": "Notification ids are required.",
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "Quests",
"quest": "quest",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "Your Quests",
"questsForSale": "Quests for Sale",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "Completed!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "You've Received",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "Quest Invitation",
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Ask Later",
"questLater": "Quest Later",
"buyQuest": "Buy Quest",
"accepted": "Accepted",
"declined": "Declined",
"rejected": "Rejected",
"pending": "Pending",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Begin",
@@ -43,56 +29,20 @@
"rage": "Rage",
"collect": "Collect",
"collected": "Collected",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "Abort",
"leaveQuest": "Leave Quest",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "Quest Owner",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items collected today",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "Quest Scrolls",
"noScrolls": "You don't have any quest scrolls.",
"scrollsText1": "Quests require parties. If you want to quest solo,",
"scrollsText2": "create an empty party",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "Completed the following quests",
"mustComplete": "You must first complete <%= quest %>.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "Rage",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "START A QUEST",
"startQuest": "Start Quest",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "Get more quests",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "El teu/la teva <%= itemText %> s'ha trencat.",
"messageTaskNotFound": "Tasca no trobada",
"messageDuplicateTaskID": "Ja existeix una tasca amb aquest nom.",
"messageTagNotFound": "Etiqueta no trobada",
"messagePetNotFound": ":mascota no trobada en user.items.pets",
"messageFoodNotFound": ":menjar no trobat en user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %> really likes <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %> eats <%= foodText %> but doesn't seem to enjoy it.",
"messageBought": "Comprat <%= itemText %>",
"messageEquipped": " <%= itemText %> equipat.",
"messageUnEquipped": "<%= itemText %> desequipat.",
"messageMissingEggPotion": "No tens la poció o ou requerits.",
"messageInvalidEggPotionCombo": "No pots eclosionar Ous de mascotes de missió amb Pocions Màgiques! Prova amb un altre ou.",
@@ -24,10 +22,7 @@
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropQuest": "Has trobat una missió!",
"messageDropMysteryItem": "Obres la capsa i trobes <%= dropText %>!",
"messageFoundQuest": "Has trobat la missió \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "You purchased this gear in the past, but do not currently own it. You can buy it again in the rewards column on the tasks page.",
"messageAlreadyOwnGear": "Ja tens aquest objecte. Posat-el anant a la pàgina d'equipament.",
"previousGearNotOwned": "You need to purchase a lower level gear before this one.",
"messageHealthAlreadyMax": "You already have maximum health.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> You rummage in the Armoire and find <%= dropText %>. What's that doing in here?",
"armoireExp": "You wrestle with the Armoire and gain Experience. Take that!",
"messageInsufficientGems": "No tens suficients gemmes!",
"messageAuthPasswordMustMatch": ":password and :confirmPassword don't match",
"messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required",
"messageAuthEmailTaken": "Email ja utilitzat.",
"messageAuthNoUserFound": "Usuari no trobat.",
"messageAuthMustBeLoggedIn": "Has d'haver iniciat sessió.",
"messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
"messageGroupAlreadyInParty": "Already in a party, try refreshing.",
"messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!",
"messageGroupRequiresInvite": "Can't join a group you're not invited to.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Whoops, looks like you're posting too many messages! Please wait a minute and try again. The Tavern chat only holds 200 messages at a time, so Habitica encourages posting longer, more thoughtful messages and consolidating replies. Can't wait to hear what you have to say. :)",
"messageCannotLeaveWhileQuesting": "You cannot accept this party invitation while you are in a quest. If you'd like to join this party, you must first abort your quest, which you can do from your party screen. You will be given back the quest scroll.",
"messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
"messageUserOperationNotFound": "<%= operation %> operation not found",
"messageNotificationNotFound": "Notification not found.",
"messageNotAbleToBuyInBulk": "This item cannot be purchased in quantities above 1.",
"notificationsRequired": "Notification ids are required.",
-2
View File
@@ -14,7 +14,6 @@
"veteranTiger": "Tigre Veterà",
"veteranWolf": "Llop Veterà",
"etherealLion": "Lleó Eteri",
"rareMounts": "Muntures Rares",
"magicMounts": "Muntures de Pocions Màgiques",
"questMounts": "Muntures de Missió",
"mountsTamed": "Muntures Domades",
@@ -23,7 +22,6 @@
"mounts": "Muntures",
"wackyPets": "Mascotes Sonades",
"questPets": "Mascotes de Missió",
"rarePets": "Mascotes Rares",
"magicPets": "Mascotes de Pocions Màgiques",
"petsFound": "Mascotes Trobades",
"noActivePet": "Cap mascota activa",
+1 -55
View File
@@ -1,9 +1,6 @@
{
"quests": "Missions",
"quest": "Missió",
"whereAreMyQuests": "Quests are now available on their own page! Click on Inventory -> Quests to find them.",
"yourQuests": "Your Quests",
"questsForSale": "missions en venda",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
@@ -14,27 +11,16 @@
"completed": "Completada!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"questOwnerReceived": "The Quest Owner Has Also Received",
"youWillReceive": "You Will Receive",
"questOwnerWillReceive": "The Quest Owner Will Also Receive",
"youReceived": "Has rebut",
"dropQuestCongrats": "Congratulations on earning this quest scroll! You can invite your party to begin the quest now, or come back to it any time in your Inventory > Quests.",
"questSend": "Clicking \"Invite\" will send an invitation to your party members. When all members have accepted or denied, the quest begins. See status under Social > Party.",
"questSendBroken": "Clicking \"Invite\" will send an invitation to your party members... When all members have accepted or denied, the quest begins... See status under Social > Party...",
"inviteParty": "Invite Party to Quest",
"questInvitation": "Quest Invitation:",
"questInvitationTitle": "Quest Invitation",
"questInvitationInfo": "Invitation for the Quest <%= quest %>",
"invitedToQuest": "You were invited to the Quest <span class=\"notification-bold-blue\"><%= quest %></span>",
"askLater": "Pregunta més endavant",
"questLater": "Quest Later",
"buyQuest": "Compra la missió",
"accepted": "Acceptada",
"declined": "Declined",
"rejected": "Rebutjada",
"pending": "Pendent",
"questStart": "Once all members have either accepted or rejected, the quest begins. Only those that clicked \"accept\" will be able to participate in the quest and receive the drops. If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\". The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\".",
"questStartBroken": "Once all members have either accepted or rejected, the quest begins... Only those that clicked \"accept\" will be able to participate in the quest and receive the drops... If members are pending too long (inactive?), the quest owner can start the quest without them by clicking \"Begin\"... The quest owner can also cancel the quest and regain the quest scroll by clicking \"Cancel\"...",
"questCollection": "+ <%= val %> quest item(s) found",
"questDamage": "+ <%= val %> damage to boss",
"begin": "Començar",
@@ -43,56 +29,20 @@
"rage": "Rage",
"collect": "Collect",
"collected": "Collected",
"collectionItems": "<%= number %> <%= items %>",
"itemsToCollect": "Items to Collect",
"bossDmg1": "Each completed Daily and To-Do and each positive Habit hurts the boss. Hurt it more with redder tasks or Brutal Smash and Burst of Flames. The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies! <strong>All damage to and from a boss is tallied on cron (your day roll-over).</strong>",
"bossDmg2": "Only participants will fight the boss and share in the quest loot.",
"bossDmg1Broken": "Each completed Daily and To-Do and each positive Habit hurts the boss... Hurt it more with redder tasks or Brutal Smash and Burst of Flames... The boss will deal damage to every quest participant for every Daily you've missed (multiplied by the boss's Strength) in addition to your regular damage, so keep your party healthy by completing your Dailies... <strong>All damage to and from a boss is tallied on cron (your day roll-over)...</strong>",
"bossDmg2Broken": "Only participants will fight the boss and share in the quest loot...",
"tavernBossInfo": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss! Incomplete Dailies fill the Rage Bar. When the Rage bar is full, the World Boss will attack an NPC. A World Boss will never damage individual players or accounts in any way. Only active accounts not resting in the Inn will have their tasks tallied.",
"tavernBossInfoBroken": "Complete Dailies and To-Dos and score positive Habits to damage the World Boss... Incomplete Dailies fill the Exhaust Strike Bar... When the Exhaust Strike bar is full, the World Boss will attack an NPC... A World Boss will never damage individual players or accounts in any way... Only active accounts not resting in the Inn will have their tasks tallied...",
"bossColl1": "To collect items, do your positive tasks. Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon.",
"bossColl2": "Only participants can collect items and share in the quest loot.",
"bossColl1Broken": "To collect items, do your positive tasks... Quest items drop just like normal items; you can monitor your quest item drops by hovering over the quest progress icon...",
"bossColl2Broken": "Only participants can collect items and share in the quest loot...",
"abort": "Avortar",
"leaveQuest": "Leave Quest",
"sureLeave": "Are you sure you want to leave the active quest? All your quest progress will be lost.",
"questOwner": "Quest Owner",
"questTaskDamage": "+ <%= damage %> pending damage to boss",
"questTaskCollection": "<%= items %> items recol·lectats avui",
"questOwnerNotInPendingQuest": "The quest owner has left the quest and can no longer begin it. It is recommended that you cancel it now. The quest owner will retain possession of the quest scroll.",
"questOwnerNotInRunningQuest": "The quest owner has left the quest. You can abort the quest if you need to. You can also allow it to keep running and all remaining participants will receive the quest rewards when the quest finishes.",
"questOwnerNotInPendingQuestParty": "The quest owner has left the party and can no longer begin the quest. It is recommended that you cancel it now. The quest scroll will be returned to the quest owner.",
"questOwnerNotInRunningQuestParty": "The quest owner has left the party. You can abort the quest if you need to but you can also leave it running and all remaining participants will receive the quest rewards when the quest finishes.",
"questParticipants": "Participants",
"scrolls": "Quest Scrolls",
"noScrolls": "You don't have any quest scrolls.",
"scrollsText1": "Quests require parties. If you want to quest solo,",
"scrollsText2": "crea un grup buit",
"scrollsPre": "You haven't unlocked this quest yet!",
"alreadyEarnedQuestLevel": "You already earned this quest by attaining Level <%= level %>.",
"alreadyEarnedQuestReward": "You already earned this quest by completing <%= priorQuest %>.",
"completedQuests": "Completed the following quests",
"mustComplete": "You must first complete <%= quest %>.",
"mustLevel": "You must be level <%= level %> to begin this quest.",
"mustLvlQuest": "You must be level <%= level %> to buy this quest!",
"mustInviteFriend": "To earn this quest, invite a friend to your Party. Invite someone now?",
"unlockByQuesting": "To unlock this quest, complete <%= title %>.",
"questConfirm": "Are you sure? Only <%= questmembers %> of your <%= totalmembers %> party members have joined this quest! Quests start automatically when all players have joined or rejected the invitation.",
"sureCancel": "Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll.",
"sureAbort": "Are you sure you want to abort this mission? It will abort it for everyone in your party and all progress will be lost. The quest scroll will be returned to the quest owner.",
"doubleSureAbort": "Are you double sure? Make sure they won't hate you forever!",
"questWarning": "If new players join the party before the quest starts, they will also receive an invitation. However once the quest has started, no new party members can join the quest.",
"questWarningBroken": "If new players join the party before the quest starts, they will also receive an invitation... However once the quest has started, no new party members can join the quest...",
"bossRageTitle": "Rage",
"bossRageDescription": "When this bar fills, the boss will unleash a special attack!",
"startAQuest": "START A QUEST",
"startQuest": "Start Quest",
"whichQuestStart": "Which quest do you want to start?",
"getMoreQuests": "Get more quests",
"unlockedAQuest": "You unlocked a quest!",
"leveledUpReceivedQuest": "You leveled up to <strong>Level <%= level %></strong> and received a quest scroll!",
"questInvitationDoesNotExist": "No quest invitation has been sent out yet.",
"questInviteNotFound": "No quest invitation found.",
"guildQuestsNotSupported": "Guilds cannot be invited on quests.",
@@ -113,13 +63,9 @@
"onlyLeaderCancelQuest": "Only the group or quest leader can cancel the quest.",
"questNotPending": "There is no quest to start.",
"questOrGroupLeaderOnlyStartQuest": "Only the quest leader or group leader can force start the quest",
"createAccountReward": "Create Account",
"loginIncentiveQuest": "To unlock this quest, check in to Habitica on <%= count %> different days!",
"loginIncentiveQuestObtained": "You earned this quest by checking in to Habitica on <%= count %> different days!",
"loginReward": "<%= count %> Check-ins",
"createAccountQuest": "You received this quest when you joined Habitica! If a friend joins, they'll get one too.",
"questBundles": "Discounted Quest Bundles",
"buyQuestBundle": "Buy Quest Bundle",
"noQuestToStart": "Cant find a quest to start? Try checking out the Quest Shop in the Market for new releases!",
"pendingDamage": "<%= damage %> pending damage",
"pendingDamageLabel": "pending damage",
@@ -127,4 +73,4 @@
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
}
}
-12
View File
@@ -1,7 +1,6 @@
{
"messageLostItem": "Něco se rozbilo. Asi <%= itemText %>.",
"messageTaskNotFound": "Úkol nenalezen.",
"messageDuplicateTaskID": "Úkol s tímhle názvem už existuje.",
"messageTagNotFound": "Štítek nenalezen.",
"messagePetNotFound": ":pet nebyl nalezen v user.items.pets",
"messageFoodNotFound": ":food nebylo nalezeno v user.items.food",
@@ -12,7 +11,6 @@
"messageLikesFood": "<%= egg %>má opravdu rád <%= foodText %>!",
"messageDontEnjoyFood": "<%= egg %>snědl <%= foodText %>, ale nevypadá, že by mu to chutnalo.",
"messageBought": "<%= itemText %>, koupeno",
"messageEquipped": " <%= itemText %> - nasazeno.",
"messageUnEquipped": "<%= itemText %> byl odebrán.",
"messageMissingEggPotion": "Chybí ti buď to vejce nebo ten lektvar",
"messageInvalidEggPotionCombo": "Nemůžeš vylíhnout vejce mazlíčků z výprav pomocí kouzelných líhnoucích lektvarů! Zkus jiné vejce.",
@@ -24,10 +22,7 @@
"messageDropFood": "Našel jsi <%= dropText %>!",
"messageDropEgg": "Našel jsi vajíčko, ze kterého se vylíhne <%= dropText %>!",
"messageDropPotion": "Našel jsi <%= dropText %> líhnoucí lektvar!",
"messageDropQuest": "Našel jsi Výpravu!",
"messageDropMysteryItem": "Copak se to skrývá v té krabici? No vida, je to <%= dropText %>!",
"messageFoundQuest": "Našel jsi výpravu \"<%= questText %>\"!",
"messageAlreadyPurchasedGear": "Tohle vybavení jsi si koupil už v minulosti, ale momentálně ho nevlastníš. Můžeš si ho koupit znovu ve sloupečku odměnu na stránce s úkoly.",
"messageAlreadyOwnGear": "Tento předmět už máš. Vybav se jím na stránce s Vybavením.",
"previousGearNotOwned": "Potřebuješ koupit výbavu nižší úrovně, než pořídíš tuto.",
"messageHealthAlreadyMax": "Už teď máš plné zdraví.",
@@ -36,12 +31,6 @@
"armoireFood": "<%= image %> Prohledáváš Zbrojnici a nacházíš <%= dropText %>. Co to tu dělá?",
"armoireExp": "Zápasíš s Almarou a získáváš zkušenost. To jsi jí to nandal!",
"messageInsufficientGems": "Nedostatek drahokamů!",
"messageAuthPasswordMustMatch": ":password a :confirmPassword se neshodují",
"messageAuthCredentialsRequired": "Je vyžadováno :username, :email, :password, :confirmPassword",
"messageAuthEmailTaken": "Email se již používá",
"messageAuthNoUserFound": "Uživatel nenalezen.",
"messageAuthMustBeLoggedIn": "Musíš být přihlášen.",
"messageAuthMustIncludeTokens": "Ve svém požadavku musíš uvést token a uid (Uživatelské Id)",
"messageGroupAlreadyInParty": "Již jsi ve skupině, zkus znovu načíst stránku.",
"messageGroupOnlyLeaderCanUpdate": "Pouze velitel družiny může jí může upravovat!",
"messageGroupRequiresInvite": "Nemůžeš se přidat do družiny, do které nejsi pozván.",
@@ -55,7 +44,6 @@
"messageGroupChatSpam": "Ups, vypadá to, že posíláš moc zpráv! Počkej prosím minutku a zkus to znovu. Chat v Krčmě může mít jenom 200 zpráv v jeden čas, takže Habitica podporuje posílání delších, více promyšlených zpráv a odpovědí. Nemůžeme se dočkat, až se s námi podělíš o tom, co máš na srdci. :)",
"messageCannotLeaveWhileQuesting": "Nemůžeš přijmout tuto pozvánku do družiny, během účasti ve výpravě. Pokud se chceš připojit k této družině, musíš nejdříve ukončit aktuální výpravu, což můžeš učinit v záložce \"Družina\". Svitek výpravy ti bude vrácen zpět.",
"messageUserOperationProtected": "cesta `<%= operation %>` nebyla uložena, protože je chráněná.",
"messageUserOperationNotFound": "<%= operation %> operace nebyla nalezena",
"messageNotificationNotFound": "Oznámení nenalezeno.",
"messageNotAbleToBuyInBulk": "Tento předmět nelze nakoupit v množství větším, než je 1.",
"notificationsRequired": "Id upozornění je potřeba.",
-35
View File
@@ -5,7 +5,6 @@
"noActivePet": "Bez aktivního mazlíčka",
"petsFound": "nalezených mazlíčků",
"magicPets": "Mazlíčci z magického líhnoucího lektvaru",
"rarePets": "Vzácní mazlíčci",
"questPets": "Mazlíčci z výprav",
"mounts": "Stáj",
"activeMount": "Osedlané zvíře",
@@ -13,7 +12,6 @@
"mountsTamed": "zkrocených zvířat",
"questMounts": "Zkrocená zvířata z výprav",
"magicMounts": "Zvířata z magického líhnoucího lektvaru",
"rareMounts": "Vzácná zkrocená zvířata",
"etherealLion": "Éterický lev",
"veteranWolf": "Vlk veterán",
"veteranTiger": "Tygr veterán",
@@ -32,18 +30,13 @@
"hopefulHippogriffMount": "Nadějný Gryf",
"royalPurpleJackalope": "Královský Fialový Zajdalen",
"invisibleAether": "Neviditelný Éter",
"rarePetPop1": "Klikni na zlatou packu pro více informací o tom, jak získat toto vzácné zvíře za přispívání programu Habitica!",
"rarePetPop2": "Jak získat toto zvíře!",
"potion": "<%= potionType %> lektvar",
"egg": "<%= eggType %> - vejce",
"eggs": "Vejce",
"eggSingular": "vejce",
"noEggs": "Nemáš žádná vejce.",
"hatchingPotions": "Líhnoucí lektvary",
"magicHatchingPotions": "Magický líhnoucí lektvar",
"hatchingPotion": "líhnoucí lektvar",
"noHatchingPotions": "Nemáš žádné líhnoucí lektvary.",
"inventoryText": "Po kliknutí na vejce se zeleně zvýrazní použitelné lektvary. Poté klikni na jeden z nich pro vylíhnutí mazlíčka. Pokud nejsou žádné lektvary zvýrazněny, klikni na vejce znovu pro zrušení jeho výběru a místo toho klikni nejprve na lektvar, aby se označila použitelná vejce. Také můžeš nechtěné nalezené předměty prodat obchodníku Alexanderovi.",
"haveHatchablePet": "Máš <%= potion %> líhnoucí lektvar a <%= egg %> vajíčko k vylíhnutí tohoto mazlíčka! <b>Klikni</b> pro vylíhnutí!",
"quickInventory": "Rychlý Inventář",
"foodText": "jídlo",
@@ -55,41 +48,28 @@
"dropsExplanationEggs": "Použij Drahokamy, aby jsi získal vajíčka rychleji, jestli se ti nechce čekat než je dostaneš nebo se ti nechce opakovat výpravy aby jsi získal vejce z výprav. <a href=\"http://habitica.fandom.com/wiki/Drops\">Nauč se více o systému nálezů</a>",
"premiumPotionNoDropExplanation": "Magické líhnoucí lektvary nemohou být použity na vejce z Výprav. Můžeš si je pouze koupit, nenajdeš je.",
"beastMasterProgress": "Pokrok Pána šelem",
"stableBeastMasterProgress": "Pokrok Pána šelem: nalezl <%= number %> mazlíčků",
"beastAchievement": "Získal jsi ocenění \"Pán šelem\" za získání všech mazlíčků!",
"beastMasterName": "Pán šelem",
"beastMasterText": "Nalezl všech 90 mazlíčků ( šíleně obtížné, zaslouží si uznání!)",
"beastMasterText2": " a vypustil své mazlíčky celkem <%= count %>krát",
"mountMasterProgress": "Pokrok Pána zvířat",
"stableMountMasterProgress": "Pokrok krotitele zvířat: zkroceno <%= number %> zvířat",
"mountAchievement": "Získal jsi ocenění \"Pán zvířat\" za získán všech zkrocených zvířat!",
"mountMasterName": "Pán zvířat",
"mountMasterText": "Zkrotil všech 90 zvířátek ( šíleně obtížné, zaslouží si uznání!)",
"mountMasterText2": " a vypustil všech svých 90 zvířat celkem <%= count %>krát",
"beastMountMasterName": "Pán šelem a Pán zvířat",
"triadBingoName": "Bingo trojice",
"triadBingoText": "Našel všech 90 mazlíčků, zkrotil všech 90 zkrocených zvířat, a našel všech 90 mazlíčků ZNOVU (JAK JSI TO UDĚLAL!)",
"triadBingoText2": " a vypustil plnou stáj celkem <%= count %>krát",
"triadBingoAchievement": "Získal jsi ocenění \"Bingo trojice\" za nalezení všech mazlíčků, zkrocení všech zvířat, a znovunalezení všech mazlíčku ještě jednou!",
"dropsEnabled": "Nalézání přemětů povoleno!",
"itemDrop": "Nalezen předmět!",
"firstDrop": "Odemknuto nalézání předmětů! Od teď máš malou šanci nalézt předmět při dokončení úkolů, včetně vajec, lektvarů a jídla! Právě nalezeno <strong> vejce zvířátka <%= eggText %></strong>! <%= eggNotes %>",
"useGems": "Pokud ti padlo oko na zvířátko a nemůžeš se dočkat až ti padne, použij Drahokamy v <strong> Inventář > Trh </strong> a kup si ho!",
"hatchAPot": "Chceš vylíhnout nového <%= potion %><%= egg %>?",
"hatchedPet": "Vylíhnul jsi nového <%= potion %><%= egg %>!",
"hatchedPetGeneric": "Vylíhl se ti nový mazlíček!",
"hatchedPetHowToUse": "Navštiv [stáje](<%= stableUrl %>), abys mohl svého nového mazlíčka nakrmit a vybavit!",
"displayNow": "Zobrazit hned",
"displayLater": "Zobrazit později",
"petNotOwned": "Nevlastníte tohoto mazlíčka.",
"mountNotOwned": "Nevlastníš toto jezdecké zvíře.",
"earnedCompanion": "Za svou pracovitost sis vysloužil nového kamaráda. Nakrm ho, aby vyrostl!",
"feedPet": "Dát <%= text %> svému <%= name %>?",
"useSaddle": "Koho osedláme? Bude to <%= pet %>?",
"raisedPet": "Vychoval jsi svého <%= pet %>!",
"earnedSteed": "Za splnění úkolů sis vysloužil věrné zvíře k ježdění!",
"rideNow": "Osedlat hned",
"rideLater": "Osedlat později",
"petName": "<%= potion(locale) %> <%= egg(locale) %>",
"mountName": "<%= potion(locale) %> <%= mount(locale) %>",
"keyToPets": "Klíč ke Kotcům Mazlíčků",
@@ -104,24 +84,9 @@
"releaseMountsSuccess": "Tvá běžná Zvířata byla vypuštěna!",
"releaseBothConfirm": "Jsi si jistý, že chceš vypustit tvoje běžné Mazlíčky a Zvířata?",
"releaseBothSuccess": "Tvoji běžní Mazlíčci a Zvířata byli vypuštěni!",
"petKeyName": "Klíč ke kotcům",
"petKeyPop": "Nech své mazlíčky pobíhat na svobodě, vypusť je aby mohli začít své vlastní dobrodružství a zažij znovu vzrušení a staň se znovu pánem šelem!",
"petKeyBegin": "Klíč ke kotcům: Zažij znovu vzrušení z titulu <%= title %>!",
"petKeyInfo": "Chybí ti to vzrušení z nalézání mazlíčků? Nyní je můžeš vypustit a každý nový objev bude zase vzrušující!",
"petKeyInfo2": "Použij Klíč ke kotcům a resetuj tak všechny mazlíčky a/nebo zkrocená zvířata (kromě těch z výprav a těch vzácných, ta nebudou ovlivněna.)",
"petKeyInfo3": "Klíče ke kotcům jsou tři: Vypusť pouze mazlíčky (4 drahokamy), Vypusť pouze zkrocená zvířata (4 drahokamy), nebo Vypusť mazlíčky a zkrocená zvířata (6 drahokamů). Použití Klíče ti umožní znovuzískávat ocenění Pán šelem a Pán zvířat. Ocenění Bingo trojice však znovu získáš pouze pokud použiješ klíč \"Vypusť mazlíčky a zkrocená zvířata\" a znovu najdeš všech 90 mazlíčků. Ukaž světu jaký jsi mistr v nalézání. Ale vybírej moudře, protože jakmile použiješ Klíč a otevřeš bránu ke stáji, nebudeš je moci získat zpět, dokud je všechny znovu neposbíráš....",
"petKeyInfo4": "Klíče ke kotcům jsou tři: Vypusť pouze mazlíčky (4 drahokamy), Vypusť pouze zvířata (4 drahokamy), nebo Vypusť mazlíčky a zvířata. Použití Klíče ti umožní znovu získat ocenění Pána šelem a Pána zvířat. Ocenění Bingo Tří budeš moci získat znovu jen pokud vypustíš všechna zvířata a znovu jich všech 90 nasbíráš. Ukaž světu jaký jsi sběratel! Ale vybírej moudře, protože jakmile Klíč použiješ, už zvířata nedostaneš zpátky jinak, než opětovným posbíráním...",
"petKeyPets": "Vypusťte mé mazlíčky",
"petKeyMounts": "Vypusť má zkrocená zvířata",
"petKeyBoth": "Vypusť oba",
"confirmPetKey": "Jsi si jistý?",
"petKeyNeverMind": "Ještě ne",
"petsReleased": "Mazlíčci propuštěni.",
"mountsAndPetsReleased": "Zvířata k osedlání a mazlíčci propuštěni",
"mountsReleased": "Zvířata k osedlání propuštěna",
"gemsEach": "drahokamů každý",
"foodWikiText": "Co můj mazlíček rád jí?",
"foodWikiUrl": "http://habitica.fandom.com/wiki/Food_Preferences",
"welcomeStable": "Vítej ve Stájích!",
"welcomeStableText": "Vítej ve stáji! Jsem Matt, pán zvířat. Pokaždé, když dokončíš úkol, můžeš nalézt vejce a lektvary, kterými z nich můžeš vylíhnout mazlíčky. Když se vylíhne mazlíček, objeví se tady! Klikni na obrázek mazlíčka, abys ho přidal ke svému avataru. Krm je jídlem, které najdeš a vyrostou ti v otužilá zvířata.",
"petLikeToEat": "Co můj mazlíček rád jí?",

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