Compare commits

..

125 Commits

Author SHA1 Message Date
SabreCat 70d59be39b 4.276.0 2023-07-04 13:23:29 -05:00
Natalie L c562c93158 feat(content): add July 2023 backgrounds and Enchanted Armoire (#14733)
* feat(content): add June subscriber items

* feat(content): add July backgrounds and Enchanted Armoire Items

* Update backgrounds.json

---------

Co-authored-by: SabreCat <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
2023-07-04 13:23:06 -05:00
SabreCat 519da49886 4.275.0 2023-06-29 14:51:37 -05:00
Weblate 79d50cb3e0 Merge branch 'origin/develop' into Weblate. 2023-06-29 21:36:09 +02:00
Weblate c588c2b2ff Translated using Weblate (Korean)
Currently translated at 97.8% (46 of 47 strings)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Deleted translation using Weblate (Acehnese)

Added translation using Weblate (Acehnese)

Translated using Weblate (Scots)

Currently translated at 90.9% (111 of 122 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2863 of 2863 strings)

Translated using Weblate (Portuguese)

Currently translated at 62.0% (1777 of 2863 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (218 of 218 strings)

Added translation using Weblate (Acehnese)

Translated using Weblate (Russian)

Currently translated at 97.4% (2790 of 2863 strings)

Translated using Weblate (Russian)

Currently translated at 96.7% (2769 of 2863 strings)

Translated using Weblate (Croatian)

Currently translated at 26.4% (28 of 106 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (791 of 791 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Croatian)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Swedish)

Currently translated at 98.6% (150 of 152 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.3% (2817 of 2863 strings)

Translated using Weblate (Swedish)

Currently translated at 98.6% (150 of 152 strings)

Translated using Weblate (Russian)

Currently translated at 96.4% (2761 of 2863 strings)

Translated using Weblate (Swedish)

Currently translated at 76.6% (321 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Malay)

Currently translated at 48.2% (54 of 112 strings)

Translated using Weblate (Korean)

Currently translated at 72.9% (577 of 791 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Galician)

Currently translated at 65.5% (501 of 764 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Malay)

Currently translated at 54.3% (430 of 791 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2863 of 2863 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Russian)

Currently translated at 99.1% (784 of 791 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (791 of 791 strings)

Translated using Weblate (Korean)

Currently translated at 72.3% (572 of 791 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Japanese)

Currently translated at 97.4% (268 of 275 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (137 of 137 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (275 of 275 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (2859 of 2863 strings)

Translated using Weblate (German)

Currently translated at 63.2% (67 of 106 strings)

Translated using Weblate (German)

Currently translated at 81.1% (99 of 122 strings)

Translated using Weblate (Galician)

Currently translated at 98.5% (135 of 137 strings)

Translated using Weblate (German)

Currently translated at 100.0% (791 of 791 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Galician)

Currently translated at 98.5% (271 of 275 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (German)

Currently translated at 99.4% (787 of 791 strings)

Translated using Weblate (German)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Korean)

Currently translated at 99.7% (375 of 376 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.5% (2851 of 2863 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1892 of 2863 strings)

Translated using Weblate (Russian)

Currently translated at 95.0% (116 of 122 strings)

Translated using Weblate (Russian)

Currently translated at 98.1% (217 of 221 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.3% (2844 of 2863 strings)

Translated using Weblate (Russian)

Currently translated at 90.9% (111 of 122 strings)

Translated using Weblate (Russian)

Currently translated at 98.8% (782 of 791 strings)

Translated using Weblate (Malay)

Currently translated at 53.2% (421 of 791 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.2% (131 of 132 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.5% (413 of 419 strings)

Translated using Weblate (Hebrew)

Currently translated at 63.7% (267 of 419 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.3% (2843 of 2863 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1891 of 2863 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Ukrainian)

Currently translated at 55.6% (59 of 106 strings)

Translated using Weblate (Dutch)

Currently translated at 49.0% (52 of 106 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (791 of 791 strings)

Translated using Weblate (Dutch)

Currently translated at 89.7% (710 of 791 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Malay)

Currently translated at 52.3% (414 of 791 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.0% (1891 of 2863 strings)

Translated using Weblate (Hebrew)

Currently translated at 56.5% (237 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.7% (1891 of 2831 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Galician)

Currently translated at 65.5% (501 of 764 strings)

Translated using Weblate (Russian)

Currently translated at 98.1% (217 of 221 strings)

Translated using Weblate (Hebrew)

Currently translated at 60.1% (133 of 221 strings)

Translated using Weblate (Hebrew)

Currently translated at 50.3% (211 of 419 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (217 of 218 strings)

Translated using Weblate (Russian)

Currently translated at 98.3% (179 of 182 strings)

Translated using Weblate (Russian)

Currently translated at 98.3% (179 of 182 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Galician)

Currently translated at 65.5% (501 of 764 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (Malay)

Currently translated at 52.0% (412 of 791 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Indonesian)

Currently translated at 66.4% (1881 of 2831 strings)

Translated using Weblate (Hebrew)

Currently translated at 41.0% (325 of 791 strings)

Translated using Weblate (Ukrainian)

Currently translated at 98.6% (150 of 152 strings)

Translated using Weblate (Hebrew)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Dutch)

Currently translated at 97.3% (148 of 152 strings)

Translated using Weblate (Malay)

Currently translated at 82.0% (87 of 106 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 65.2% (1848 of 2831 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (135 of 135 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (186 of 186 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.6% (388 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 64.9% (1838 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 91.1% (382 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 64.2% (1818 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 98.6% (754 of 764 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (French)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Portuguese)

Currently translated at 38.6% (41 of 106 strings)

Translated using Weblate (Malay)

Currently translated at 74.5% (79 of 106 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.0% (219 of 221 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 91.1% (382 of 419 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2835 of 2835 strings)

Translated using Weblate (Indonesian)

Currently translated at 63.5% (1798 of 2831 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.3% (744 of 764 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (791 of 791 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.4% (375 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 62.8% (1778 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.4% (714 of 764 strings)

Co-authored-by: Adrián Chaves Fernández <adrian@chaves.io>
Co-authored-by: Ana Beatriz <anabeatriz.augusto06@yahoo.com>
Co-authored-by: Andreway <watermelontvandreway2@gmail.com>
Co-authored-by: Antje Schubert <antje.schubert96@web.de>
Co-authored-by: Arthur Ouzlaner <panther1984@gmail.com>
Co-authored-by: Benoit Hetru <me+hbtc@gahanka.net>
Co-authored-by: BryanLim <youmakemysonlooklikeelonmusk@gmail.com>
Co-authored-by: Deni Zubin <deni.zubin@gmail.com>
Co-authored-by: Falzart <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Hanafi <naflizo@gmail.com>
Co-authored-by: Jan Willem Middag <jwmiddag@gmail.com>
Co-authored-by: Jinnel <1210678078@qq.com>
Co-authored-by: LiziKnight <liziknight0316@outlook.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Rostislav <rostislav.zem@gmail.com>
Co-authored-by: Sara Olson <sara@habitica.com>
Co-authored-by: Simon Hagman <dragonzimpan@gmail.com>
Co-authored-by: Svetlana <shkulepo@rambler.ru>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Thiago Braga <thibraga06@gmail.com>
Co-authored-by: Timur Niyazov <timmy568@gmail.com>
Co-authored-by: Vladyslav Yavnyk <yavnyjvladislav@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: lilia petervari <lilipetervari@gmail.com>
Co-authored-by: Ілля <bo4onok5@gmail.com>
Co-authored-by: Естай <akseleu@yahoo.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/he/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/he/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/character/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/de/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/sco/
Translate-URL: https://translate.habitica.com/projects/habitica/content/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/ko/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/de/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/front/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/id/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/he/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/sv/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/id/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/id/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/he/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/hr/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/id/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt_BR/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Contrib
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Questscontent
Translation: Habitica/Rebirth
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2023-06-29 21:35:54 +02:00
Natalie L 77a490283c feat(content): add July 2023 subscriber items (#14732)
* feat(content): add June subscriber items

* feat(content): add July subscriber items
2023-06-29 14:35:05 -05:00
dependabot[bot] e49d26eacd build(deps): bump stripe from 12.8.0 to 12.9.0 (#14699)
Bumps [stripe](https://github.com/stripe/stripe-node) from 12.8.0 to 12.9.0.
- [Release notes](https://github.com/stripe/stripe-node/releases)
- [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-node/compare/v12.8.0...v12.9.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-21 13:50:08 -04:00
dependabot[bot] 7b0fd57eb9 build(deps): bump @babel/core from 7.22.1 to 7.22.5 (#14700)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.22.1 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-21 13:49:41 -04:00
dependabot[bot] 7171334e31 build(deps): bump @babel/register from 7.21.0 to 7.22.5 (#14702)
Bumps [@babel/register](https://github.com/babel/babel/tree/HEAD/packages/babel-register) from 7.21.0 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-register)

---
updated-dependencies:
- dependency-name: "@babel/register"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-21 13:49:16 -04:00
dependabot[bot] a3235214b2 build(deps): bump core-js from 3.30.2 to 3.31.0 in /website/client (#14704)
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.30.2 to 3.31.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.31.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-21 13:48:45 -04:00
dependabot[bot] fca234c45a build(deps-dev): bump sinon from 15.1.0 to 15.1.2 (#14713)
Bumps [sinon](https://github.com/sinonjs/sinon) from 15.1.0 to 15.1.2.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v15.1.0...v15.1.2)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-21 13:47:21 -04:00
dependabot[bot] 7519023f06 build(deps): bump sass from 1.62.1 to 1.63.4 in /website/client (#14719)
Bumps [sass](https://github.com/sass/dart-sass) from 1.62.1 to 1.63.4.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.62.1...1.63.4)

---
updated-dependencies:
- dependency-name: sass
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-21 13:46:01 -04:00
SabreCat df84d7c7b1 Merge branch 'release' into develop 2023-06-19 16:36:39 -05:00
SabreCat e837ebec49 4.274.0 2023-06-19 16:36:13 -05:00
Natalie L c7ed693e18 feat(gala): Add 2023 Summer Splash Gala Items (#14712)
* feat(content): add June subscriber items

* feat(gala): add images

* feat(gala): add code

* feat(gala): text strings

* feat(gala): testing and final updates

* feat(gala): fixed a couple of typos

* fix(event): proofread strings and dates
Also replace empty descriptions for Rogue and Healer

* fix(event): NO EGG

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-06-19 16:36:05 -05:00
Ash e72a25ad02 Fixes #14438: a11y: add semantic roles to habit and todo controls (#14467)
* a11y: add aria roles to habit control

* a11y: add role to todo checkboxes

* a11y: add aria-labels to score buttons
Helps with screen readers

* add i18n to aria-labels
2023-06-19 17:00:16 -04:00
SabreCat 2c12d5ee29 4.273.3 2023-06-13 14:57:37 -05:00
Weblate c3f0abadd7 Merge branch 'origin/develop' into Weblate. 2023-06-13 21:54:27 +02:00
Phillip Thelen adf0a2efca Fix perkMonthCount not being editable/saving (#14711)
Co-authored-by: SabreCat <sabe@habitica.com>
2023-06-13 14:51:58 -05:00
SabreCat e4523c09dc Merge branch 'release' into develop 2023-06-13 14:40:41 -05:00
SabreCat 91d98b86e1 fix(lint): whitespace 2023-06-13 14:40:26 -05:00
Weblate 779fb8bce5 Translated using Weblate (Indonesian)
Currently translated at 62.0% (1758 of 2831 strings)

Translated using Weblate (Malay)

Currently translated at 70.7% (75 of 106 strings)

Translated using Weblate (Japanese)

Currently translated at 98.9% (756 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.9% (1753 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 87.8% (368 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.8% (1752 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.1% (704 of 764 strings)

Translated using Weblate (Malay)

Currently translated at 61.3% (65 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 85.9% (360 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.4% (1740 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.5% (684 of 764 strings)

Translated using Weblate (Malay)

Currently translated at 59.4% (63 of 106 strings)

Translated using Weblate (Norwegian Bokmål)

Currently translated at 92.6% (202 of 218 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.7% (355 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 60.6% (1718 of 2831 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.9% (641 of 764 strings)

Translated using Weblate (Irish)

Currently translated at 75.0% (114 of 152 strings)

Translated using Weblate (Irish)

Currently translated at 75.0% (114 of 152 strings)

Translated using Weblate (Russian)

Currently translated at 95.4% (211 of 221 strings)

Translated using Weblate (Russian)

Currently translated at 99.4% (760 of 764 strings)

Translated using Weblate (English (Pirate))

Currently translated at 82.2% (125 of 152 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (Russian)

Currently translated at 96.3% (213 of 221 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Russian)

Currently translated at 95.5% (259 of 271 strings)

Translated using Weblate (Indonesian)

Currently translated at 60.6% (1718 of 2831 strings)

Translated using Weblate (Russian)

Currently translated at 89.6% (95 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Malay)

Currently translated at 52.8% (56 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (791 of 791 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Malay)

Currently translated at 98.6% (150 of 152 strings)

Translated using Weblate (Russian)

Currently translated at 98.5% (413 of 419 strings)

Translated using Weblate (Serbian)

Currently translated at 23.5% (25 of 106 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (784 of 784 strings)

Translated using Weblate (Malay)

Currently translated at 52.8% (56 of 106 strings)

Translated using Weblate (Malay)

Currently translated at 85.1% (115 of 135 strings)

Translated using Weblate (Indonesian)

Currently translated at 81.6% (342 of 419 strings)

Co-authored-by: Abiel Meza <mezaabiel@gmail.com>
Co-authored-by: Anastasia Wysocka <legitemail.uwu420@gmail.com>
Co-authored-by: Edward McGibney <edwardmcgibney95@gmail.com>
Co-authored-by: Falzart <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Hanafi <naflizo@gmail.com>
Co-authored-by: Lauren C <laurenc7834@gmail.com>
Co-authored-by: LiziKnight <liziknight0316@outlook.com>
Co-authored-by: Miroslav <entferner@yandex.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: i3beograd <milica.the@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/en@pirate/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ga/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/id/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/es/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/nb_NO/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/id/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ms/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Faq
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Limited
Translation: Habitica/Npc
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2023-06-13 09:29:03 +02:00
SabreCat f0fc83ed85 Merge branch 'release' into develop 2023-06-12 15:02:18 -05:00
SabreCat 30d2108c78 4.273.2 2023-06-12 15:02:06 -05:00
Natalie L ab68e8a5fe feat(content): add June pet quest bundle (#14694)
* feat(content): add June subscriber items

* feat(content): add June pet quest bundle

* fix(bundle): correct timing and visual issues

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-06-12 15:01:34 -05:00
dependabot[bot] 31e9100ba2 build(deps): bump @babel/preset-env from 7.21.5 to 7.22.5 (#14695)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.21.5 to 7.22.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.5/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/preset-env"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 15:45:46 -04:00
dependabot[bot] 0070f366bb build(deps): bump xml2js from 0.5.0 to 0.6.0 (#14673)
Bumps [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) from 0.5.0 to 0.6.0.
- [Commits](https://github.com/Leonidas-from-XIV/node-xml2js/compare/0.5.0...0.6.0)

---
updated-dependencies:
- dependency-name: xml2js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 15:38:28 -04:00
dependabot[bot] 2be6865a5c build(deps): bump winston from 3.8.2 to 3.9.0 (#14676)
Bumps [winston](https://github.com/winstonjs/winston) from 3.8.2 to 3.9.0.
- [Release notes](https://github.com/winstonjs/winston/releases)
- [Changelog](https://github.com/winstonjs/winston/blob/master/CHANGELOG.md)
- [Commits](https://github.com/winstonjs/winston/compare/v3.8.2...v3.9.0)

---
updated-dependencies:
- dependency-name: winston
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 15:37:58 -04:00
dependabot[bot] db85768e9d build(deps): bump stripe from 12.6.0 to 12.8.0 (#14690)
Bumps [stripe](https://github.com/stripe/stripe-node) from 12.6.0 to 12.8.0.
- [Release notes](https://github.com/stripe/stripe-node/releases)
- [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-node/compare/v12.6.0...v12.8.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 15:34:03 -04:00
dependabot[bot] 3d40413882 build(deps): bump fast-xml-parser and is-svg (#14693)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and [is-svg](https://github.com/sindresorhus/is-svg). These dependencies needed to be updated together.

Updates `fast-xml-parser` from 3.19.0 to 4.2.4
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/commits)

Updates `is-svg` from 4.3.1 to 4.4.0
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v4.3.1...v4.4.0)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-type: indirect
- dependency-name: is-svg
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 15:32:28 -04:00
dependabot[bot] cc88e75950 build(deps): bump @babel/core from 7.21.8 to 7.22.1 (#14670)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.21.8 to 7.22.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.1/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-08 15:31:54 -04:00
SabreCat a5ae3e5877 4.273.1 2023-06-06 16:33:33 -05:00
SabreCat 60ed9d2944 Merge branch 'develop' into release 2023-06-06 16:33:27 -05:00
Natalie L 91fc4235aa fix(string): remove "due" string (#14683) 2023-06-06 16:33:01 -05:00
SabreCat 42e8dd1361 fix(vue): correct bad popovers breaking Chrome 2023-06-06 16:30:37 -05:00
SabreCat 0a4bbbf173 4.273.0 2023-06-06 09:21:35 -05:00
SabreCat df22f5f7bf Merge branch 'develop' into release 2023-06-06 09:21:25 -05:00
Natalie L bb28bb5969 feat(content): add June backgrounds and Enchanted Armoire items (#14684)
* feat(content): add June subscriber items

* feat(content): add July backgrounds and Enchanted Armoire items

* feat(fix): correct sizing for aquarium background

* fix(strings): JSON formatting

* fix(sprites): add missing broad variant

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-06-06 09:17:22 -05:00
Weblate e4e8e0ff60 Translated using Weblate (Malay)
Currently translated at 51.8% (55 of 106 strings)

Translated using Weblate (Japanese)

Currently translated at 96.8% (214 of 221 strings)

Translated using Weblate (Malay)

Currently translated at 50.9% (54 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 81.1% (340 of 419 strings)

Translated using Weblate (Portuguese)

Currently translated at 60.1% (163 of 271 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (135 of 135 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (186 of 186 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (Belarusian)

Currently translated at 71.3% (157 of 220 strings)

Translated using Weblate (Japanese)

Currently translated at 95.9% (212 of 221 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Japanese)

Currently translated at 97.4% (264 of 271 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Japanese)

Currently translated at 96.4% (404 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 80.6% (338 of 419 strings)

Translated using Weblate (Japanese)

Currently translated at 99.8% (2828 of 2831 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (784 of 784 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (Japanese)

Currently translated at 94.1% (208 of 221 strings)

Translated using Weblate (Indonesian)

Currently translated at 91.8% (249 of 271 strings)

Translated using Weblate (Indonesian)

Currently translated at 79.4% (333 of 419 strings)

Translated using Weblate (Indonesian)

Currently translated at 60.6% (1718 of 2831 strings)

Translated using Weblate (Japanese)

Currently translated at 78.3% (83 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (French)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Galician)

Currently translated at 60.2% (1706 of 2831 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (271 of 271 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (Indonesian)

Currently translated at 78.5% (213 of 271 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 54.7% (58 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (152 of 152 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (419 of 419 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Galician)

Currently translated at 100.0% (220 of 220 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (132 of 132 strings)

Translated using Weblate (Indonesian)

Currently translated at 63.4% (172 of 271 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (218 of 218 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (106 of 106 strings)

Translated using Weblate (Indonesian)

Currently translated at 83.3% (637 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (376 of 376 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (186 of 186 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (784 of 784 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (152 of 152 strings)

Co-authored-by: Adrián Chaves Fernández <adrian@chaves.io>
Co-authored-by: Falzart <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Hanafi <naflizo@gmail.com>
Co-authored-by: Hanna Aniskevich <northernwind@tut.by>
Co-authored-by: LiziKnight <liziknight0316@outlook.com>
Co-authored-by: Sara Olson <sara@habitica.com>
Co-authored-by: TOMA Mitsuru <toma0001@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Yatharth <megacutiemauandtuchchu@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/id/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/character/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/character/id/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/id/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/content/id/
Translate-URL: https://translate.habitica.com/projects/habitica/content/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/front/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/front/id/
Translate-URL: https://translate.habitica.com/projects/habitica/front/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/id/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/id/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/id/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/id/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/id/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/id/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/id/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/id/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/be/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/gl/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/id/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/ja/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/gl/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Inventory
Translation: Habitica/Limited
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Rebirth
Translation: Habitica/Settings
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2023-06-06 05:00:15 +02:00
SabreCat e9a15fcb83 fix(strings): JSON formatting 2023-06-02 13:55:04 -05:00
SabreCat a5602eec8d 4.272.0 2023-05-30 15:28:16 -05:00
Natalie L 867eed176e feat(content): add June subscriber items (#14669)
Co-authored-by: SabreCat <sabe@habitica.com>
2023-05-30 15:26:16 -05:00
SabreCat ba883ae104 chore(subproj): update habitica-images 2023-05-30 14:55:00 -05:00
SabreCat deba7b6220 feat(faq): update for mobile workflows 2023-05-30 14:50:13 -05:00
SabreCat 69c538858b 4.271.2 2023-05-25 14:42:53 -05:00
SabreCat 17072dcc45 Merge branch 'due-dates-in-todos' into release 2023-05-25 14:42:46 -05:00
SabreCat 2448f401f2 Merge branch 'increment-component' into release 2023-05-25 14:42:42 -05:00
SabreCat 5745e3df5f 4.271.1 2023-05-24 13:30:21 -05:00
Phillip Thelen d4a5823916 Fix one-off issue for monthly subs (#14643)
* Fix initial plan.consecutive.offset for 1 month subs

* fix initial values for group plan subs

* Make perkMonthCount editable in admin panel

* Add aditional info to admin panel

* Implement automatic fix for affected users

* fix(lint): exclusive test, code style

* fixes

* fix issue with initialization

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-05-24 13:29:42 -05:00
CuriousMagpie 86b15cb580 fix(style): css fix, today if-statement added 2023-05-23 15:19:26 -04:00
SabreCat 8e5b66a73e Merge branch 'release' into develop 2023-05-23 09:16:50 -05:00
SabreCat f755d4c133 4.271.0 2023-05-23 09:07:47 -05:00
SabreCat 102c71c4ca Merge remote-tracking branch 'CuriousMagpie/2023-05-pet-quest-bundle' into release 2023-05-22 15:14:18 -05:00
SabreCat a7bde80349 Squashed commit of the following:
commit 27287ac3aa
Author: CuriousMagpie <eilatan@gmail.com>
Date:   Mon May 22 15:59:20 2023 -0400

    fix(typo): typos fixed

commit a4df8097cf
Author: CuriousMagpie <eilatan@gmail.com>
Date:   Mon May 22 15:57:17 2023 -0400

    feat(content): add migration script

commit 23ff7845c1
Merge: d02644e21b 8ba7117fa5
Author: CuriousMagpie <eilatan@gmail.com>
Date:   Mon May 22 15:42:32 2023 -0400

    Merge branch 'develop' into achievement-dinosaur-dynasty

commit 8ba7117fa5
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon May 22 12:35:07 2023 -0400

    build(deps): bump stripe from 12.5.0 to 12.6.0 (#14662)

    Bumps [stripe](https://github.com/stripe/stripe-node) from 12.5.0 to 12.6.0.
    - [Release notes](https://github.com/stripe/stripe-node/releases)
    - [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md)
    - [Commits](https://github.com/stripe/stripe-node/compare/v12.5.0...v12.6.0)

    ---
    updated-dependencies:
    - dependency-name: stripe
      dependency-type: direct:production
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit fe5d4a0551
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon May 22 12:34:28 2023 -0400

    build(deps-dev): bump sinon from 15.0.4 to 15.1.0 (#14661)

    Bumps [sinon](https://github.com/sinonjs/sinon) from 15.0.4 to 15.1.0.
    - [Release notes](https://github.com/sinonjs/sinon/releases)
    - [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
    - [Commits](https://github.com/sinonjs/sinon/compare/v15.0.4...v15.1.0)

    ---
    updated-dependencies:
    - dependency-name: sinon
      dependency-type: direct:development
      update-type: version-update:semver-minor
    ...

    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

commit d02644e21b
Author: CuriousMagpie <eilatan@gmail.com>
Date:   Wed May 17 11:36:28 2023 -0400

    feat(content): add dinosaur dynasty achievement
2023-05-22 15:13:49 -05:00
SabreCat bedce203ee 4.270.3 2023-05-22 13:28:31 -05:00
dependabot[bot] 8ba7117fa5 build(deps): bump stripe from 12.5.0 to 12.6.0 (#14662)
Bumps [stripe](https://github.com/stripe/stripe-node) from 12.5.0 to 12.6.0.
- [Release notes](https://github.com/stripe/stripe-node/releases)
- [Changelog](https://github.com/stripe/stripe-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stripe/stripe-node/compare/v12.5.0...v12.6.0)

---
updated-dependencies:
- dependency-name: stripe
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 12:35:07 -04:00
dependabot[bot] fe5d4a0551 build(deps-dev): bump sinon from 15.0.4 to 15.1.0 (#14661)
Bumps [sinon](https://github.com/sinonjs/sinon) from 15.0.4 to 15.1.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v15.0.4...v15.1.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 12:34:28 -04:00
SabreCat deebc09a79 fix(analytics): typo 2023-05-22 09:54:10 -05:00
SabreCat b63f2fa1fa fix(analytics): add missing headers to 3 events 2023-05-19 14:54:30 -05:00
CuriousMagpie 60b180681e Merge remote-tracking branch 'origin/due-dates-in-todos' into due-dates-in-todos 2023-05-17 13:30:45 -04:00
CuriousMagpie 7c1c18a329 fix(styling): update colors to be a11y-friendly and to show items due today in gray 2023-05-17 13:29:26 -04:00
CuriousMagpie 0b0cbb45f4 feat(content): add May pet quest bundle 2023-05-17 10:49:37 -04:00
SabreCat 0e03f079a7 Merge branch 'due-dates-in-todos' of https://github.com/CuriousMagpie/habitica into due-dates-in-todos 2023-05-16 14:27:56 -05:00
SabreCat a71e44b331 fix(test): remove test for old function 2023-05-16 14:27:15 -05:00
Sabe Jones 48917fd8be Merge branch 'develop' into due-dates-in-todos 2023-05-16 14:18:22 -05:00
SabreCat 2a054a25ee fix(test): include user pref needed for date 2023-05-16 14:15:34 -05:00
SabreCat d176c31382 4.270.2 2023-05-16 12:22:21 -05:00
Phillip Thelen 8150fef993 Database Access optimisations (#14544)
* Optimize database access during spell casting

* load less data when casting spells

* Begin migrating update calls to updateOne and updateMany

* Only update user objects that don’t have notification yet

* fix test

* fix spy

* Don’t unnecessarily update user when requesting invalid guild

* fix sort order for middlewares to not load user twice every request

* fix tests

* fix integration test

* fix skill usage not always deducting mp

* addtest case for blessing spell

* fix healAll

* fix lint

* Fix error for when some spells are used outside of party

* Add check to not run bulk spells in web client

* fix(tags): change const to let

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-05-16 12:21:45 -05:00
CuriousMagpie daccade2e2 disabled sell button when user tries to sell more items than they own 2023-05-15 12:03:58 -04:00
SabreCat 79a5c2ec5f Merge branch 'develop' into due-dates-in-todos 2023-05-12 16:06:18 -05:00
CuriousMagpie 0a23dd5311 attempt to fix sellModal 2023-05-11 16:25:11 -04:00
CuriousMagpie 479cfb76ef fix(to do dates): locate a string for "Due" 2023-05-04 16:40:11 -04:00
CuriousMagpie 0e0cd99ded fix(to do dates): Add the word "Due" to the HTML 2023-05-04 16:35:27 -04:00
CuriousMagpie 7e210c56b0 fix(to do dates): change formatDueDate () to show exact due dates 2023-05-04 16:29:54 -04:00
CuriousMagpie 06ac6ae80c fix(html): fix behavior of buyModal when gems are being purchased; typo correction 2023-05-02 13:23:31 -04:00
CuriousMagpie 4a32a29bea Merge branch 'develop' into increment-component 2023-05-02 11:03:46 -04:00
CuriousMagpie 0c85835dc2 update to sellModal, buyModal, and questDialogContent.vue 2023-04-07 10:41:43 -04:00
CuriousMagpie 54df8397a7 fixes to svg and other spacing 2023-04-06 17:00:37 -04:00
CuriousMagpie 0644032a4f style: more spacing updates 2023-04-05 13:50:14 -04:00
CuriousMagpie 44265ac616 style: more spacing updates 2023-04-03 14:56:43 -04:00
CuriousMagpie ac3b953633 style: vertical spacing tweaks 2023-03-30 09:07:37 -04:00
CuriousMagpie 5de2921d22 Merge branch 'develop' into increment-component 2023-03-30 08:33:24 -04:00
CuriousMagpie c1a0f8a8d1 style: buyModal, sellModal, buyQuestModal, questRewards 2023-03-28 15:07:49 -04:00
CuriousMagpie 7e9506391f more buyModal styling 2023-03-27 16:13:06 -04:00
CuriousMagpie 3c7ca56089 buyModal styling 2023-03-27 15:58:56 -04:00
CuriousMagpie 0d155535c3 Merge branch 'develop' into increment-component 2023-03-27 14:16:55 -04:00
CuriousMagpie 09a0d2b3b8 change spacing on buyModal 2023-03-23 16:01:33 -04:00
CuriousMagpie 83dcf8d56a tightening up spacing on buyModal, fixing footer 2023-03-22 13:15:11 -04:00
CuriousMagpie bfc13bc21b Merge branch 'develop' into increment-component 2023-03-22 12:14:04 -04:00
CuriousMagpie 5afb46f237 fix close icon on buy & sell and keyboard input into number increment component is now a number, not a string 2023-03-21 16:08:26 -04:00
CuriousMagpie 9cc4fc19d3 more tiny updates 2023-03-21 11:26:31 -04:00
CuriousMagpie cc81629f09 updates to buyModal styling 2023-03-18 17:18:41 -04:00
CuriousMagpie e83db7a28a Merge branch 'develop' into increment-component 2023-03-17 11:47:17 -04:00
CuriousMagpie 80e193e4ce Merge branch 'develop' into increment-component 2023-03-15 12:38:07 -04:00
CuriousMagpie 76fa6ec1b8 updates to snumberIncrement, buyModal, and sellModal 2023-03-09 15:54:26 -05:00
CuriousMagpie 1ac4466c24 trying to make more components for the buy/sell modals 2023-03-02 14:33:27 -05:00
CuriousMagpie 03f0061c85 Merge branch 'develop' into increment-component 2023-03-01 15:46:04 -05:00
CuriousMagpie c349de6908 finish up sellModal and questModal (also Time Travelers) 2023-02-15 12:54:26 -05:00
CuriousMagpie fd7f3a646e add functionality and styling to sellModal and questModal 2023-02-14 17:22:05 -05:00
CuriousMagpie 7244c1bebc Merge branch 'develop' into increment-component 2023-02-14 15:30:18 -05:00
CuriousMagpie 20df5eeb8f buy modal complete! 2023-02-08 15:16:17 -05:00
CuriousMagpie 23f7dd94b6 more stylin' of the buy modal 2023-02-07 15:24:53 -05:00
CuriousMagpie 7125da4533 Merge branch 'develop' into increment-component 2023-02-07 14:05:48 -05:00
CuriousMagpie 684cb59a7c buyModal styling/functions 2023-02-06 16:23:20 -05:00
CuriousMagpie 9274fe9a10 Merge branch 'develop' into increment-component 2023-02-06 14:30:34 -05:00
CuriousMagpie a21f083761 gem modal styling/functions 2023-01-25 16:44:14 -05:00
CuriousMagpie c7e2834fc6 Merge branch 'develop' into increment-component 2023-01-25 14:35:39 -05:00
CuriousMagpie a08c26b076 calculations working, style updates to subscriber gem modal 2022-12-22 16:50:55 -05:00
CuriousMagpie f4aa88e1ff more style updates to buy modal 2022-12-21 16:58:22 -05:00
CuriousMagpie 53eab7aa29 Working on styling 2022-12-20 16:53:51 -05:00
CuriousMagpie 8374d61f52 why does NaN ask the user to buy gems? 2022-12-19 17:26:49 -05:00
CuriousMagpie 4c943b7575 number-increment works on buy modal and there was much rejoicing... 2022-12-16 16:51:19 -05:00
CuriousMagpie 24032b57f6 why clicky click no click? 2022-12-15 16:48:59 -05:00
CuriousMagpie 8628c774e5 more css changes to buy modal 2022-12-13 10:53:38 -05:00
CuriousMagpie 523f044914 css changes to buy modal 2022-12-09 17:04:35 -05:00
CuriousMagpie 892c9ad040 trying to make clicky clicky work 2022-12-09 11:47:57 -05:00
CuriousMagpie 570f39c620 Merge branch 'develop' into increment-component 2022-12-08 10:22:08 -05:00
CuriousMagpie a73316ef9f Merge branch 'develop' into increment-component 2022-12-06 11:47:53 -05:00
CuriousMagpie 6d6195ae6a props attempt 2022-12-01 14:43:08 -05:00
CuriousMagpie 4ba66c7018 unbreaking what was broken yesterday 2022-11-30 17:16:51 -05:00
CuriousMagpie 54b9424c6e Merge branch 'develop' into increment-component 2022-11-30 12:04:09 -05:00
CuriousMagpie af574634b0 tried to make if/else logic simpler, ended up breaking everything. 2022-11-29 17:13:48 -05:00
CuriousMagpie d1e1c09b4a add conditionals, add component to buy & sell modals 2022-11-22 15:28:48 -05:00
CuriousMagpie 4f5a720c30 how to make component show up? 2022-11-18 15:27:18 -05:00
CuriousMagpie 4ddfdb84ac get most of the right parts in the same place 2022-11-17 14:57:58 -05:00
234 changed files with 6506 additions and 2791 deletions
@@ -0,0 +1,158 @@
/* eslint-disable no-console */
const MIGRATION_NAME = '20230522_pet_group_achievements';
import { model as User } from '../../../website/server/models/user';
const progressCount = 1000;
let count = 0;
async function updateUser (user) {
count++;
const set = {
migration: MIGRATION_NAME,
};
if (user && user.items && user.items.pets) {
const pets = user.items.pets;
if (pets['Parrot-Base']
&& pets['Parrot-CottonCandyBlue']
&& pets['Parrot-CottonCandyPink']
&& pets['Parrot-Desert']
&& pets['Parrot-Golden']
&& pets['Parrot-Red']
&& pets['Parrot-Shade']
&& pets['Parrot-Skeleton']
&& pets['Parrot-White']
&& pets['Parrot-Zombie']
&& pets['Rooster-Base']
&& pets['Rooster-CottonCandyBlue']
&& pets['Rooster-CottonCandyPink']
&& pets['Rooster-Desert']
&& pets['Rooster-Golden']
&& pets['Rooster-Red']
&& pets['Rooster-Shade']
&& pets['Rooster-Skeleton']
&& pets['Rooster-White']
&& pets['Rooster-Zombie']
&& pets['Triceratops-Base']
&& pets['Triceratops-CottonCandyBlue']
&& pets['Triceratops-CottonCandyPink']
&& pets['Triceratops-Desert']
&& pets['Triceratops-Golden']
&& pets['Triceratops-Red']
&& pets['Triceratops-Shade']
&& pets['Triceratops-Skeleton']
&& pets['Triceratops-White']
&& pets['Triceratops-Zombie']
&& pets['TRex-Base']
&& pets['TRex-CottonCandyBlue']
&& pets['TRex-CottonCandyPink']
&& pets['TRex-Desert']
&& pets['TRex-Golden']
&& pets['TRex-Red']
&& pets['TRex-Shade']
&& pets['TRex-Skeleton']
&& pets['TRex-White']
&& pets['TRex-Zombie']
&& pets['Pterodactyl-Base']
&& pets['Pterodactyl-CottonCandyBlue']
&& pets['Pterodactyl-CottonCandyPink']
&& pets['Pterodactyl-Desert']
&& pets['Pterodactyl-Golden']
&& pets['Pterodactyl-Red']
&& pets['Pterodactyl-Shade']
&& pets['Pterodactyl-Skeleton']
&& pets['Pterodactyl-White']
&& pets['Pterodactyl-Zombie']
&& pets['Owl-Base']
&& pets['Owl-CottonCandyBlue']
&& pets['Owl-CottonCandyPink']
&& pets['Owl-Desert']
&& pets['Owl-Golden']
&& pets['Owl-Red']
&& pets['Owl-Shade']
&& pets['Owl-Skeleton']
&& pets['Owl-White']
&& pets['Owl-Zombie']
&& pets['Velociraptor-Base']
&& pets['Velociraptor-CottonCandyBlue']
&& pets['Velociraptor-CottonCandyPink']
&& pets['Velociraptor-Desert']
&& pets['Velociraptor-Golden']
&& pets['Velociraptor-Red']
&& pets['Velociraptor-Shade']
&& pets['Velociraptor-Skeleton']
&& pets['Velociraptor-White']
&& pets['Velociraptor-Zombie']
&& pets['Penguin-Base']
&& pets['Penguin-CottonCandyBlue']
&& pets['Penguin-CottonCandyPink']
&& pets['Penguin-Desert']
&& pets['Penguin-Golden']
&& pets['Penguin-Red']
&& pets['Penguin-Shade']
&& pets['Penguin-Skeleton']
&& pets['Penguin-White']
&& pets['Penguin-Zombie']
&& pets['Falcon-Base']
&& pets['Falcon-CottonCandyBlue']
&& pets['Falcon-CottonCandyPink']
&& pets['Falcon-Desert']
&& pets['Falcon-Golden']
&& pets['Falcon-Red']
&& pets['Falcon-Shade']
&& pets['Falcon-Skeleton']
&& pets['Falcon-White']
&& pets['Falcon-Zombie']
&& pets['Peacock-Base']
&& pets['Peacock-CottonCandyBlue']
&& pets['Peacock-CottonCandyPink']
&& pets['Peacock-Desert']
&& pets['Peacock-Golden']
&& pets['Peacock-Red']
&& pets['Peacock-Shade']
&& pets['Peacock-Skeleton']
&& pets['Peacock-White']
&& pets['Peacock-Zombie']) {
set['achievements.dinosaurDynasty'] = true;
}
}
if (count % progressCount === 0) console.warn(`${count} ${user._id}`);
return await User.update({ _id: user._id }, { $set: set }).exec();
}
export default async function processUsers () {
let query = {
// migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2023-04-15') },
};
const fields = {
_id: 1,
items: 1,
};
while (true) { // eslint-disable-line no-constant-condition
const users = await User // eslint-disable-line no-await-in-loop
.find(query)
.limit(250)
.sort({_id: 1})
.select(fields)
.lean()
.exec();
if (users.length === 0) {
console.warn('All appropriate users found and modified.');
console.warn(`\n${count} users processed\n`);
break;
} else {
query._id = {
$gt: users[users.length - 1]._id,
};
}
await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop
}
};
+1504 -1117
View File
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -1,12 +1,12 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.270.1",
"version": "4.276.0",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.21.8",
"@babel/preset-env": "^7.21.5",
"@babel/register": "^7.21.0",
"@babel/core": "^7.22.5",
"@babel/preset-env": "^7.22.5",
"@babel/register": "^7.22.5",
"@google-cloud/trace-agent": "^7.1.2",
"@parse/node-apn": "^5.1.3",
"@slack/webhook": "^6.1.0",
@@ -67,16 +67,16 @@
"remove-markdown": "^0.5.0",
"rimraf": "^3.0.2",
"short-uuid": "^4.2.2",
"stripe": "^12.5.0",
"stripe": "^12.9.0",
"superagent": "^8.0.9",
"universal-analytics": "^0.5.3",
"useragent": "^2.1.9",
"uuid": "^9.0.0",
"validator": "^13.9.0",
"vinyl-buffer": "^1.0.1",
"winston": "^3.8.2",
"winston": "^3.9.0",
"winston-loggly-bulk": "^3.2.1",
"xml2js": "^0.5.0"
"xml2js": "^0.6.0"
},
"private": true,
"engines": {
@@ -122,7 +122,7 @@
"monk": "^7.3.4",
"require-again": "^2.0.0",
"run-rs": "^0.7.7",
"sinon": "^15.0.4",
"sinon": "^15.1.2",
"sinon-chai": "^3.7.0",
"sinon-stub-promise": "^4.0.0"
},
+11 -1
View File
@@ -748,9 +748,19 @@ describe('payments/index', () => {
});
it('does not add to plans.consecutive.offset if 1 month subscription', async () => {
data.sub.key = 'basic_earned';
await api.createSubscription(data);
expect(user.purchased.plan.extraMonths).to.eql(0);
expect(user.purchased.plan.consecutive.offset).to.eql(0);
});
it('resets plans.consecutive.offset if 1 month subscription', async () => {
user.purchased.plan.consecutive.offset = 1;
await user.save();
data.sub.key = 'basic_earned';
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.offset).to.eql(0);
});
it('adds 5 to plan.consecutive.gemCapExtra for 3 month block', async () => {
+1 -1
View File
@@ -242,7 +242,7 @@ describe('cron middleware', () => {
sandbox.spy(cronLib, 'recoverCron');
sandbox.stub(User, 'update')
sandbox.stub(User, 'updateOne')
.withArgs({
_id: user._id,
$or: [
+18 -18
View File
@@ -1732,7 +1732,7 @@ describe('Group Model', () => {
});
it('updates participting members (not including user)', async () => {
sandbox.spy(User, 'update');
sandbox.spy(User, 'updateMany');
await party.startQuest(nonParticipatingMember);
@@ -1740,7 +1740,7 @@ describe('Group Model', () => {
questLeader._id, participatingMember._id, sleepingParticipatingMember._id,
];
expect(User.update).to.be.calledWith(
expect(User.updateMany).to.be.calledWith(
{ _id: { $in: members } },
{
$set: {
@@ -1753,11 +1753,11 @@ describe('Group Model', () => {
});
it('updates non-user quest leader and decrements quest scroll', async () => {
sandbox.spy(User, 'update');
sandbox.spy(User, 'updateOne');
await party.startQuest(participatingMember);
expect(User.update).to.be.calledWith(
expect(User.updateOne).to.be.calledWith(
{ _id: questLeader._id },
{
$inc: {
@@ -1819,29 +1819,29 @@ describe('Group Model', () => {
};
it('doesn\'t retry successful operations', async () => {
sandbox.stub(User, 'update').returns(successfulMock);
sandbox.stub(User, 'updateOne').returns(successfulMock);
await party.finishQuest(quest);
expect(User.update).to.be.calledThrice;
expect(User.updateOne).to.be.calledThrice;
});
it('stops retrying when a successful update has occurred', async () => {
const updateStub = sandbox.stub(User, 'update');
const updateStub = sandbox.stub(User, 'updateOne');
updateStub.onCall(0).returns(failedMock);
updateStub.returns(successfulMock);
await party.finishQuest(quest);
expect(User.update.callCount).to.equal(4);
expect(User.updateOne.callCount).to.equal(4);
});
it('retries failed updates at most five times per user', async () => {
sandbox.stub(User, 'update').returns(failedMock);
sandbox.stub(User, 'updateOne').returns(failedMock);
await expect(party.finishQuest(quest)).to.eventually.be.rejected;
expect(User.update.callCount).to.eql(15); // for 3 users
expect(User.updateOne.callCount).to.eql(15); // for 3 users
});
});
@@ -2088,17 +2088,17 @@ describe('Group Model', () => {
context('Party quests', () => {
it('updates participating members with rewards', async () => {
sandbox.spy(User, 'update');
sandbox.spy(User, 'updateOne');
await party.finishQuest(quest);
expect(User.update).to.be.calledThrice;
expect(User.update).to.be.calledWithMatch({
expect(User.updateOne).to.be.calledThrice;
expect(User.updateOne).to.be.calledWithMatch({
_id: questLeader._id,
});
expect(User.update).to.be.calledWithMatch({
expect(User.updateOne).to.be.calledWithMatch({
_id: participatingMember._id,
});
expect(User.update).to.be.calledWithMatch({
expect(User.updateOne).to.be.calledWithMatch({
_id: sleepingParticipatingMember._id,
});
});
@@ -2173,11 +2173,11 @@ describe('Group Model', () => {
});
it('updates all users with rewards', async () => {
sandbox.spy(User, 'update');
sandbox.spy(User, 'updateMany');
await party.finishQuest(tavernQuest);
expect(User.update).to.be.calledOnce;
expect(User.update).to.be.calledWithMatch({});
expect(User.updateMany).to.be.calledOnce;
expect(User.updateMany).to.be.calledWithMatch({});
});
it('sets quest completed to the world quest key', async () => {
@@ -202,18 +202,86 @@ describe('POST /user/class/cast/:spellId', () => {
await group.groupLeader.post('/user/class/cast/mpheal');
promises = [];
promises.push(group.groupLeader.sync());
promises.push(group.members[0].sync());
promises.push(group.members[1].sync());
promises.push(group.members[2].sync());
promises.push(group.members[3].sync());
await Promise.all(promises);
expect(group.groupLeader.stats.mp).to.be.equal(170); // spell caster
expect(group.members[0].stats.mp).to.be.greaterThan(0); // warrior
expect(group.members[1].stats.mp).to.equal(0); // wizard
expect(group.members[2].stats.mp).to.be.greaterThan(0); // rogue
expect(group.members[3].stats.mp).to.be.greaterThan(0); // healer
});
const spellList = [
{
className: 'warrior',
spells: [['smash', 'task'], ['defensiveStance'], ['valorousPresence'], ['intimidate']],
},
{
className: 'wizard',
spells: [['fireball', 'task'], ['mpheal'], ['earth'], ['frost']],
},
{
className: 'healer',
spells: [['heal'], ['brightness'], ['protectAura'], ['healAll']],
},
{
className: 'rogue',
spells: [['pickPocket', 'task'], ['backStab', 'task'], ['toolsOfTrade'], ['stealth']],
},
];
spellList.forEach(async habitClass => {
describe(`For a ${habitClass.className}`, async () => {
habitClass.spells.forEach(async spell => {
describe(`Using ${spell[0]}`, async () => {
it('Deducts MP from spell caster', async () => {
const { groupLeader } = await createAndPopulateGroup({
groupDetails: { type: 'party', privacy: 'private' },
members: 3,
});
await groupLeader.update({
'stats.mp': 200, 'stats.class': habitClass.className, 'stats.lvl': 20, 'stats.hp': 40,
});
// need this for task spells and for stealth
const task = await groupLeader.post('/tasks/user', {
text: 'test habit',
type: 'daily',
});
if (spell.length === 2 && spell[1] === 'task') {
await groupLeader.post(`/user/class/cast/${spell[0]}?targetId=${task._id}`);
} else {
await groupLeader.post(`/user/class/cast/${spell[0]}`);
}
await groupLeader.sync();
expect(groupLeader.stats.mp).to.be.lessThan(200);
});
it('works without a party', async () => {
await user.update({
'stats.mp': 200, 'stats.class': habitClass.className, 'stats.lvl': 20, 'stats.hp': 40,
});
// need this for task spells and for stealth
const task = await user.post('/tasks/user', {
text: 'test habit',
type: 'daily',
});
if (spell.length === 2 && spell[1] === 'task') {
await user.post(`/user/class/cast/${spell[0]}?targetId=${task._id}`);
} else {
await user.post(`/user/class/cast/${spell[0]}`);
}
await user.sync();
expect(user.stats.mp).to.be.lessThan(200);
});
});
});
});
});
it('cast bulk', async () => {
let { group, groupLeader } = await createAndPopulateGroup({ // eslint-disable-line prefer-const
groupDetails: { type: 'party', privacy: 'private' },
+6 -6
View File
@@ -16901,9 +16901,9 @@
}
},
"core-js": {
"version": "3.30.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz",
"integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg=="
"version": "3.31.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz",
"integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ=="
},
"core-js-compat": {
"version": "3.11.0",
@@ -27366,9 +27366,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sass": {
"version": "1.62.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz",
"integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==",
"version": "1.63.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.63.4.tgz",
"integrity": "sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==",
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
"immutable": "^4.0.0",
+2 -2
View File
@@ -32,7 +32,7 @@
"bootstrap": "^4.6.0",
"bootstrap-vue": "^2.23.1",
"chai": "^4.3.7",
"core-js": "^3.30.2",
"core-js": "^3.31.0",
"dompurify": "^3.0.3",
"eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0",
@@ -46,7 +46,7 @@
"lodash": "^4.17.21",
"moment": "^2.29.4",
"nconf": "^0.12.0",
"sass": "^1.62.1",
"sass": "^1.63.4",
"sass-loader": "^8.0.2",
"smartbanner.js": "^1.19.2",
"stopword": "^2.0.8",
@@ -138,6 +138,11 @@
width: 48px;
height: 52px;
}
.achievement-dinosaurDynasty2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-dinosaurDynasty2x.png');
width: 68px;
height: 68px;
}
.achievement-domesticated2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-domesticated2x.png');
width: 60px;
@@ -705,6 +710,11 @@
width: 141px;
height: 147px;
}
.background_boardwalk_into_sunset {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_boardwalk_into_sunset.png');
width: 141px;
height: 147px;
}
.background_branches_of_a_holiday_tree {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_branches_of_a_holiday_tree.png');
width: 141px;
@@ -780,6 +790,11 @@
width: 141px;
height: 147px;
}
.background_colorful_coral {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_colorful_coral.png');
width: 141px;
height: 147px;
}
.background_coral_reef {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_coral_reef.png');
width: 141px;
@@ -810,6 +825,11 @@
width: 141px;
height: 147px;
}
.background_crater_lake {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_crater_lake.png');
width: 141px;
height: 147px;
}
.background_creepy_castle {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_creepy_castle.png');
width: 141px;
@@ -1349,6 +1369,11 @@
width: 141px;
height: 147px;
}
.background_in_an_aquarium {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_in_an_aquarium.png');
width: 141px;
height: 147px;
}
.background_in_front_of_fountain {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_in_front_of_fountain.png');
width: 141px;
@@ -1369,6 +1394,11 @@
width: 141px;
height: 147px;
}
.background_inside_adventurers_hideout {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_inside_adventurers_hideout.png');
width: 141px;
height: 147px;
}
.background_inside_an_ornament {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_inside_an_ornament.png');
width: 141px;
@@ -1559,6 +1589,11 @@
width: 141px;
height: 147px;
}
.background_on_a_paddlewheel_boat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_on_a_paddlewheel_boat.png');
width: 141px;
height: 147px;
}
.background_on_tree_branch {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_on_tree_branch.png');
width: 141px;
@@ -2401,6 +2436,11 @@
width: 68px;
height: 68px;
}
.icon_background_boardwalk_into_sunset {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_boardwalk_into_sunset.png');
width: 68px;
height: 68px;
}
.icon_background_branches_of_a_holiday_tree {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_branches_of_a_holiday_tree.png');
width: 68px;
@@ -2481,6 +2521,11 @@
width: 68px;
height: 68px;
}
.icon_background_colorful_coral {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_colorful_coral.png');
width: 68px;
height: 68px;
}
.icon_background_coral_reef {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_coral_reef.png');
width: 68px;
@@ -2511,6 +2556,11 @@
width: 68px;
height: 68px;
}
.icon_background_crater_lake {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_crater_lake.png');
width: 60px;
height: 60px;
}
.icon_background_creepy_castle {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_creepy_castle.png');
width: 60px;
@@ -3050,6 +3100,11 @@
width: 68px;
height: 68px;
}
.icon_background_in_an_aquarium {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_in_an_aquarium.png');
width: 68px;
height: 68px;
}
.icon_background_in_front_of_fountain {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_in_front_of_fountain.png');
width: 68px;
@@ -3070,6 +3125,11 @@
width: 68px;
height: 68px;
}
.icon_background_inside_adventurers_hideout {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_inside_adventurers_hideout.png');
width: 68px;
height: 68px;
}
.icon_background_inside_an_ornament {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_inside_an_ornament.png');
width: 68px;
@@ -3260,6 +3320,11 @@
width: 68px;
height: 68px;
}
.icon_background_on_a_paddlewheel_boat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_on_a_paddlewheel_boat.png');
width: 68px;
height: 68px;
}
.icon_background_on_tree_branch {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_on_tree_branch.png');
width: 68px;
@@ -18375,6 +18440,16 @@
width: 114px;
height: 90px;
}
.broad_armor_armoireDiagonalRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoireDiagonalRainbowShirt.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_admiralsUniform {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_admiralsUniform.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_alchemistsRobe {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_alchemistsRobe.png');
width: 114px;
@@ -18485,6 +18560,11 @@
width: 90px;
height: 90px;
}
.broad_armor_armoire_diagonalRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_diagonalRainbowShirt.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_doubletOfClubs {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_doubletOfClubs.png');
width: 114px;
@@ -18785,6 +18865,11 @@
width: 114px;
height: 90px;
}
.broad_armor_armoire_stripedRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_stripedRainbowShirt.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_stripedSwimsuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_stripedSwimsuit.png');
width: 90px;
@@ -18870,6 +18955,11 @@
width: 114px;
height: 90px;
}
.head_armoire_admiralsBicorne {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_admiralsBicorne.png');
width: 114px;
height: 90px;
}
.head_armoire_alchemistsHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_armoire_alchemistsHat.png');
width: 114px;
@@ -19660,6 +19750,11 @@
width: 114px;
height: 90px;
}
.shop_armor_armoire_admiralsUniform {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_admiralsUniform.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_alchemistsRobe {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_alchemistsRobe.png');
width: 68px;
@@ -19770,6 +19865,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_diagonalRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_diagonalRainbowShirt.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_doubletOfClubs {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_doubletOfClubs.png');
width: 68px;
@@ -20070,6 +20170,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_stripedRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_stripedRainbowShirt.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_stripedSwimsuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_stripedSwimsuit.png');
width: 68px;
@@ -20170,6 +20275,11 @@
width: 68px;
height: 68px;
}
.shop_head_armoire_admiralsBicorne {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_admiralsBicorne.png');
width: 68px;
height: 68px;
}
.shop_head_armoire_alchemistsHat {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_armoire_alchemistsHat.png');
width: 68px;
@@ -21425,6 +21535,11 @@
width: 68px;
height: 68px;
}
.slim_armor_armoire_admiralsUniform {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_admiralsUniform.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_alchemistsRobe {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_alchemistsRobe.png');
width: 114px;
@@ -21535,6 +21650,11 @@
width: 90px;
height: 90px;
}
.slim_armor_armoire_diagonalRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_diagonalRainbowShirt.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_doubletOfClubs {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_doubletOfClubs.png');
width: 114px;
@@ -21835,6 +21955,11 @@
width: 114px;
height: 90px;
}
.slim_armor_armoire_stripedRainbowShirt {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_stripedRainbowShirt.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_stripedSwimsuit {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_stripedSwimsuit.png');
width: 90px;
@@ -28005,6 +28130,66 @@
width: 68px;
height: 68px;
}
.broad_armor_mystery_202306 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_202306.png');
width: 114px;
height: 90px;
}
.shop_armor_mystery_202306 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_mystery_202306.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202306 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202306.png');
width: 68px;
height: 68px;
}
.shop_weapon_mystery_202306 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_mystery_202306.png');
width: 68px;
height: 68px;
}
.slim_armor_mystery_202306 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_mystery_202306.png');
width: 114px;
height: 90px;
}
.weapon_mystery_202306 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_mystery_202306.png');
width: 114px;
height: 90px;
}
.broad_armor_mystery_202307 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_202307.png');
width: 117px;
height: 120px;
}
.headAccessory_mystery_202307 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/headAccessory_mystery_202307.png');
width: 117px;
height: 120px;
}
.shop_armor_mystery_202307 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_mystery_202307.png');
width: 68px;
height: 68px;
}
.shop_headAccessory_mystery_202307 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_headAccessory_mystery_202307.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202307 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202307.png');
width: 68px;
height: 68px;
}
.slim_armor_mystery_202307 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_mystery_202307.png');
width: 117px;
height: 120px;
}
.broad_armor_mystery_301404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
width: 90px;
@@ -30250,6 +30435,26 @@
width: 117px;
height: 120px;
}
.broad_armor_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_summer2023Healer.png');
width: 117px;
height: 120px;
}
.broad_armor_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_summer2023Mage.png');
width: 114px;
height: 90px;
}
.broad_armor_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_summer2023Rogue.png');
width: 117px;
height: 120px;
}
.broad_armor_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_summer2023Warrior.png');
width: 114px;
height: 120px;
}
.broad_armor_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_summerHealer.png');
width: 90px;
@@ -30440,6 +30645,26 @@
width: 117px;
height: 120px;
}
.head_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_summer2023Healer.png');
width: 117px;
height: 120px;
}
.head_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_summer2023Mage.png');
width: 114px;
height: 90px;
}
.head_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_summer2023Rogue.png');
width: 117px;
height: 120px;
}
.head_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_summer2023Warrior.png');
width: 114px;
height: 120px;
}
.head_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_summerHealer.png');
width: 90px;
@@ -30585,6 +30810,21 @@
width: 117px;
height: 120px;
}
.shield_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_summer2023Healer.png');
width: 117px;
height: 120px;
}
.shield_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_summer2023Rogue.png');
width: 117px;
height: 120px;
}
.shield_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_summer2023Warrior.png');
width: 114px;
height: 120px;
}
.shield_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_summerHealer.png');
width: 90px;
@@ -30760,6 +31000,26 @@
width: 68px;
height: 68px;
}
.shop_armor_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_summer2023Healer.png');
width: 68px;
height: 68px;
}
.shop_armor_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_summer2023Mage.png');
width: 68px;
height: 68px;
}
.shop_armor_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_summer2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_armor_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_summer2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_armor_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_summerHealer.png');
width: 68px;
@@ -30980,6 +31240,26 @@
width: 68px;
height: 68px;
}
.shop_head_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_summer2023Healer.png');
width: 68px;
height: 68px;
}
.shop_head_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_summer2023Mage.png');
width: 68px;
height: 68px;
}
.shop_head_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_summer2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_head_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_summer2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_head_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_summerHealer.png');
width: 68px;
@@ -31125,6 +31405,21 @@
width: 68px;
height: 68px;
}
.shop_shield_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_summer2023Healer.png');
width: 68px;
height: 68px;
}
.shop_shield_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_summer2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_shield_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_summer2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_shield_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_summerHealer.png');
width: 68px;
@@ -31300,6 +31595,26 @@
width: 68px;
height: 68px;
}
.shop_weapon_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_summer2023Healer.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_summer2023Mage.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_summer2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_summer2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_summerHealer.png');
width: 68px;
@@ -31480,6 +31795,26 @@
width: 117px;
height: 120px;
}
.slim_armor_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_summer2023Healer.png');
width: 117px;
height: 120px;
}
.slim_armor_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_summer2023Mage.png');
width: 114px;
height: 90px;
}
.slim_armor_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_summer2023Rogue.png');
width: 117px;
height: 120px;
}
.slim_armor_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_summer2023Warrior.png');
width: 114px;
height: 120px;
}
.slim_armor_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_summerHealer.png');
width: 90px;
@@ -31660,6 +31995,26 @@
width: 117px;
height: 120px;
}
.weapon_special_summer2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_summer2023Healer.png');
width: 117px;
height: 120px;
}
.weapon_special_summer2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_summer2023Mage.png');
width: 114px;
height: 90px;
}
.weapon_special_summer2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_summer2023Rogue.png');
width: 117px;
height: 120px;
}
.weapon_special_summer2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_summer2023Warrior.png');
width: 114px;
height: 120px;
}
.weapon_special_summerHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_summerHealer.png');
width: 90px;
@@ -17,10 +17,18 @@
Payment schedule ("basic-earned" is monthly):
<strong>{{ hero.purchased.plan.planId }}</strong>
</div>
<div v-if="hero.purchased.plan.planId == 'group_plan_auto'">
Group plan ID:
<strong>{{ hero.purchased.plan.owner }}</strong>
</div>
<div v-if="hero.purchased.plan.dateCreated">
Creation date:
<strong>{{ dateFormat(hero.purchased.plan.dateCreated) }}</strong>
</div>
<div v-if="hero.purchased.plan.dateCurrentTypeCreated">
Start date for current subscription type:
<strong>{{ dateFormat(hero.purchased.plan.dateCurrentTypeCreated) }}</strong>
</div>
<div>
Termination date:
<strong
@@ -46,9 +54,16 @@
Perk offset months:
<strong>{{ hero.purchased.plan.consecutive.offset }}</strong>
</div>
<div>
<div class="form-inline">
Perk month count:
<strong>{{ hero.purchased.plan.perkMonthCount }}</strong>
<input
v-model="hero.purchased.plan.perkMonthCount"
class="form-control"
type="number"
min="0"
max="2"
step="1"
>
</div>
<div>
Next Mystic Hourglass:
+40 -15
View File
@@ -183,10 +183,8 @@
<div
v-for="bg in backgroundShopSets[0].items"
:key="bg.key"
:id="bg.key"
class="col-2"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="unlock('background.' + bg.key)"
>
<div
@@ -195,6 +193,13 @@
>
<div class="small-rectangle"></div>
</div>
<b-popover
:target="bg.key"
triggers="hover focus"
placement="bottom"
:prevent-overflow="false"
:content="bg.notes"
/>
</div>
</div>
<div
@@ -211,16 +216,21 @@
<div
v-for="bg in backgroundShopSets[2].items"
:key="bg.key"
:id="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="unlock('background.' + bg.key)"
>
<div
class="background"
:class="`background_${bg.key}`"
></div>
<b-popover
:target="bg.key"
triggers="hover focus"
placement="bottom"
:prevent-overflow="false"
:content="bg.notes"
/>
</div>
</div>
</div>
@@ -236,10 +246,8 @@
<div
v-for="bg in backgroundShopSets[1].items"
:key="bg.key"
:id="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="!user.purchased.background[bg.key]
? backgroundSelected(bg) : unlock('background.' + bg.key)"
>
@@ -270,6 +278,13 @@
:pinned="isBackgroundPinned(bg)"
/>
</span>
<b-popover
:target="bg.key"
triggers="hover focus"
placement="bottom"
:prevent-overflow="false"
:content="bg.notes"
/>
</div>
</div>
</div>
@@ -302,10 +317,8 @@
<div
v-for="bg in set.items"
:key="bg.key"
:id="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="!user.purchased.background[bg.key]
? backgroundSelected(bg) : unlock('background.' + bg.key)"
>
@@ -336,6 +349,13 @@
:pinned="isBackgroundPinned(bg)"
/>
</span>
<b-popover
:target="bg.key"
triggers="hover focus"
placement="bottom"
:prevent-overflow="false"
:content="bg.notes"
/>
</div>
<div
v-if="!ownsSet('background', set.items) && set.identifier !== 'incentiveBackgrounds'"
@@ -358,16 +378,21 @@
<div
v-for="(bg) in ownedBackgrounds"
:key="bg.key"
:id="bg.key"
class="col-4 text-center customize-option background-button"
:popover-title="bg.text"
:popover="bg.notes"
popover-trigger="mouseenter"
@click="unlock('background.' + bg.key)"
>
<div
class="background"
:class="[`background_${bg.key}`, backgroundLockedStatus(bg.key)]"
></div>
<b-popover
:target="bg.key"
triggers="hover focus"
placement="bottom"
:prevent-overflow="false"
:content="bg.notes"
/>
</div>
</div>
</div>
+19 -6
View File
@@ -258,13 +258,22 @@
:key="hero._id"
>
<td>
<user-link
<div
v-if="hasPermission(hero, 'userSupport')"
:user="hero"
:popover="$t('gamemaster')"
popover-trigger="mouseenter"
popover-placement="right"
/>
class="width-content"
>
<user-link
:id="hero._id"
:user="hero"
/>
<b-popover
:target="hero._id"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('gamemaster')"
/>
</div>
<user-link
v-else
:user="hero"
@@ -302,6 +311,10 @@
h4.expand-toggle::after {
margin-left: 5px;
}
.width-content {
width: fit-content;
}
</style>
<script>
@@ -126,7 +126,7 @@
<!-- the word "total" -->
<div class="buy-gem-total">
{{ $t('sendGiftTotal') }}
{{ $t('sendTotal') }}
</div>
<!-- the actual dollar amount -->
+46 -22
View File
@@ -128,7 +128,10 @@
<hr>
</div>
<div>
<div class="checkbox">
<div
class="checkbox"
id="preferenceAdvancedCollapsed"
>
<label>
<input
v-model="user.preferences.advancedCollapsed"
@@ -136,17 +139,22 @@
class="mr-2"
@change="set('advancedCollapsed')"
>
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('startAdvCollapsedPop')"
>{{ $t('startAdvCollapsed') }}</span>
<span class="hint">
{{ $t('startAdvCollapsed') }}
</span>
<b-popover
target="preferenceAdvancedCollapsed"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('startAdvCollapsedPop')"
/>
</label>
</div>
<div
v-if="party.memberCount === 1"
class="checkbox"
id="preferenceDisplayInviteAtOneMember"
>
<label>
<input
@@ -155,12 +163,9 @@
class="mr-2"
@change="set('displayInviteToPartyWhenPartyIs1')"
>
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('displayInviteToPartyWhenPartyIs1')"
>{{ $t('displayInviteToPartyWhenPartyIs1') }}</span>
<span class="hint">
{{ $t('displayInviteToPartyWhenPartyIs1') }}
</span>
</label>
</div>
<div class="checkbox">
@@ -201,32 +206,47 @@
</div>
<hr>
<button
id="buttonShowBailey"
class="btn btn-primary mr-2 mb-2"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('showBaileyPop')"
@click="showBailey()"
>
{{ $t('showBailey') }}
<b-popover
target="buttonShowBailey"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('showBaileyPop')"
/>
</button>
<button
id="buttonFCV"
class="btn btn-primary mr-2 mb-2"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('fixValPop')"
@click="openRestoreModal()"
>
{{ $t('fixVal') }}
<b-popover
target="buttonFCV"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('fixValPop')"
/>
</button>
<button
v-if="user.preferences.disableClasses == true"
id="buttonEnableClasses"
class="btn btn-primary mb-2"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('enableClassPop')"
@click="changeClassForUser(false)"
>
{{ $t('enableClass') }}
<b-popover
target="buttonEnableClasses"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('enableClassPop')"
/>
</button>
<hr>
<day-start-adjustment />
@@ -516,6 +536,10 @@
input {
color: $gray-50;
}
.checkbox {
width: fit-content;
}
.usersettings h5 {
margin-top: 1em;
}
@@ -0,0 +1,93 @@
<template>
<div class="item-cost">
<span
class="cost"
:class="getPriceClass()"
>
<span
class="svg-icon inline icon-24"
aria-hidden="true"
v-html="icons[getPriceClass()]"
>
</span>
<span
:class="getPriceClass()"
>{{ item.value }}</span>
</span>
</div>
</template>
<style lang="scss">
@import '~@/assets/scss/colors.scss';
@import '~@/assets/scss/mixins.scss';
.item-cost {
padding-bottom: 16px;
}
.cost {
height: 40px;
font-size: 1.25rem;
font-weight: bold;
line-height: 1.4;
vertical-align: middle;
&.gems {
color: $gems-color;
border-radius: 20px;
padding: 8px 20px 8px 20px;
margin-top: 16px;
margin-bottom: 16px;
background-color: rgba(36, 204, 143, 0.15);
}
&.gold {
color: $gold-color;
border-radius: 20px;
padding: 8px 20px 8px 20px;
margin-top: 16px;
margin-bottom: 16px;
background-color: rgba(255, 190, 93, 0.15);
}
&.hourglasses {
color: $hourglass-color;
border-radius: 20px;
padding: 8px 20px 8px 20px;
margin-top: 16px;
margin-bottom: 16px;
background-color: rgba(41, 149, 205, 0.15);
}
}
</style>
<script>
import svgClose from '@/assets/svg/close.svg';
import svgGold from '@/assets/svg/gold.svg';
import svgGem from '@/assets/svg/gem.svg';
export default {
data () {
return {
icons: Object.freeze({
close: svgClose,
gold: svgGold,
gems: svgGem,
}),
selectedAmountToBuy: 1,
selectedAmount: 1,
};
},
methods: {
getPriceClass () {
if (this.priceType && this.icons[this.priceType]) {
return this.priceType;
} if (this.item.currency && this.icons[this.item.currency]) {
return this.item.currency;
}
return 'gold';
},
},
};
</script>
@@ -0,0 +1,137 @@
<template>
<div class="d-flex flex-row align-items-center justify-content-center number-increment">
<!-- buy modal -->
<div
class="gray-circle"
@click="quantity <= 0
? quantity = 0
: quantity--"
>
<div
class="icon-negative"
v-html="icons.svgNegative"
></div>
</div>
<div class="input-group">
<div class="align-items-center">
</div>
<input
v-model="quantity"
class="form-control alignment"
step="1"
type="number"
>
</div>
<div
class="gray-circle"
@click="quantity++"
>
<div
class="icon-positive"
v-html="icons.svgPositive"
></div>
</div>
</div>
</template>
<style scoped lang="scss">
@import '~@/assets/scss/colors.scss';
.number-increment {
padding-bottom: 0px;
}
.alignment {
text-align: center;
}
.input-group {
width: 94px;
height: 32px;
width: 48px;
margin: 0px 16px 0px 16px;
padding: 0;
border-radius: 2px;
border: solid 1px $gray-400;
background-color: $white;
}
.gray-circle {
border-radius: 100%;
border: solid 2px $gray-300;
width: 32px;
height: 32px;
cursor: pointer;
&:hover {
border-color: $purple-300;
}
}
.gray-circle:hover{
.icon-positive, .icon-negative {
& ::v-deep svg path {
fill: $purple-300;
}
}
}
.icon-positive, .icon-negative {
width: 10px;
height: 10px;
margin: 4px auto;
& ::v-deep svg path {
fill: $gray-300;
}
}
/* Chrome, Safari, Edge, Opera */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
/* Firefox */
input[type=number] {
-moz-appearance: textfield;
}
</style>
<script>
// icons
import svgGem from '@/assets/svg/gem.svg';
import svgGold from '@/assets/svg/gold.svg';
import svgPositive from '@/assets/svg/positive.svg';
import svgNegative from '@/assets/svg/negative.svg';
export default {
data () {
return {
icons: Object.freeze({
svgGem,
svgGold,
svgPositive,
svgNegative,
}),
item: { },
quantity: 1,
};
},
computed: {
},
watch: {
quantity () {
this.$emit('updateQuantity', this.quantity);
},
},
methods: {
setDefaults () {
this.input = 1;
},
},
};
</script>
@@ -22,10 +22,11 @@
@import '~@/assets/scss/colors.scss';
span {
font-weight: normal;
font-size: 12px;
font-size: 0.75rem;
line-height: 1.33;
color: $gray-200;
color: $gray-100;
margin-bottom: 16px;
margin-top: -4px;
display: inline-block;
}
+363 -102
View File
@@ -17,7 +17,7 @@
</span>
<div>
<span
class="svg-icon icon-12 close-icon"
class="svg-icon close-icon icon-16 color"
aria-hidden="true"
tabindex="0"
@click="hideDialog()"
@@ -45,6 +45,13 @@
:sprites-margin="'0px auto 0px -24px'"
/>
</div>
<item
v-else-if="item.key === 'gem'"
class="flat bordered-item"
:item="item"
:item-content-class="item.class"
:show-popover="false"
/>
<item
v-else-if="item.key != 'gem'"
class="flat bordered-item"
@@ -53,10 +60,20 @@
:show-popover="false"
/>
</slot>
<div
v-if="!showAvatar && user.items[item.purchaseType]"
class="owned"
:class="totalOwned"
>
<!-- eslint-disable-next-line max-len -->
<span class="owned-text">{{ $t('owned') }}: <span class="user-amount">{{ totalOwned }}</span></span>
</div>
<h4 class="title">
{{ itemText }}
</h4>
<div v-html="itemNotes"></div>
<div class="item-notes">
{{ itemNotes }}
</div>
<slot
name="additionalInfo"
:item="item"
@@ -69,60 +86,61 @@
/>
</slot>
<div
v-if="item.value > 0"
v-if="item.value > 0 && !(item.key === 'gem' && gemsLeft < 1)"
class="purchase-amount"
>
<div
v-if="showAmountToBuy(item)"
class="how-many-to-buy"
>
<strong>{{ $t('howManyToBuy') }}</strong>
</div>
<div v-if="showAmountToBuy(item)">
<div class="box">
<input
v-model.number="selectedAmountToBuy"
class="form-control"
type="number"
min="0"
step="1"
>
</div>
<span :class="{'notEnough': notEnoughCurrency}">
<!-- this is where the pretty item cost element lives -->
<div class="item-cost">
<span
class="cost"
:class="getPriceClass()"
>
<span
class="svg-icon inline icon-32"
class="svg-icon inline icon-24"
aria-hidden="true"
v-html="icons[getPriceClass()]"
></span>
>
</span>
<span
class="cost"
:class="getPriceClass()"
>{{ item.value }}</span>
</span>
</div>
<div
v-else
class="d-flex align-items-middle"
v-if="showAmountToBuy(item)"
class="how-many-to-buy"
>
<span
class="svg-icon inline icon-32 ml-auto my-auto"
aria-hidden="true"
v-html="icons[getPriceClass()]"
></span>
<span
class="cost mr-auto my-auto"
:class="getPriceClass()"
>{{ item.value }}</span>
{{ $t('howManyToBuy') }}
</div>
<div
v-if="showAmountToBuy(item)"
>
<number-increment
class="number-increment"
@updateQuantity="selectedAmountToBuy = $event"
/>
<div
:class="{'notEnough': notEnoughCurrency}"
class="total"
>
<span class="total-text">{{ $t('sendTotal') }}</span>
<span
class="svg-icon total icon-24"
aria-hidden="true"
v-html="icons[getPriceClass()]"
></span>
<span
class="total-text"
:class="getPriceClass()"
>{{ item.value * selectedAmountToBuy }}</span>
</div>
</div>
</div>
<div
v-if="item.key === 'gem'"
class="gems-left"
v-if="item.key === 'gem' && gemsLeft < 1"
class="no-more-gems"
>
<strong v-if="gemsLeft > 0">{{ gemsLeft }} {{ $t('gemsRemaining') }}</strong>
<strong v-if="gemsLeft === 0">{{ $t('maxBuyGems') }}</strong>
</div>
<div v-if="attemptingToPurchaseMoreGemsThanAreLeft">
{{ $t('notEnoughGemsToBuy') }}
</div>
<div
@@ -147,7 +165,7 @@
{{ $t('viewSubscriptions') }}
</button>
<button
v-else
v-else-if="!(item.key === 'gem' && gemsLeft < 1)"
class="btn btn-primary"
:disabled="item.key === 'gem' && gemsLeft === 0 ||
attemptingToPurchaseMoreGemsThanAreLeft || numberInvalid || item.locked ||
@@ -165,6 +183,7 @@
<countdown-banner
v-if="item.event && item.owned == null"
:end-date="endDate"
class="limitedTime available"
/>
<div
v-if="item.key === 'rebirth_orb' && item.value > 0 && user.stats.lvl >= 100"
@@ -179,12 +198,31 @@
</div>
</div>
<div
slot="modal-footer"
class="d-flex"
v-if="item.key === 'gem'"
class="d-flex justify-content-center align-items-center"
>
<span class="balance mr-auto">{{ $t('yourBalance') }}</span>
<div
v-if="gemsLeft > 0"
class="gems-left d-flex justify-content-center align-items-center"
>
<strong>{{ $t('monthlyGems') }} &nbsp;</strong>
{{ gemsLeft }} / {{ totalGems }} {{ $t('gemsRemaining') }}
</div>
<div
v-if="gemsLeft === 0"
class="out-of-gems-banner d-flex justify-content-center align-items-center"
>
<strong>{{ $t('monthlyGems') }} &nbsp;</strong>
{{ gemsLeft }} / {{ totalGems }} {{ $t('gemsRemaining') }}
</div>
</div>
<div
slot="modal-footer"
class="clearfix"
>
<span class="user-balance float-left">{{ $t('yourBalance') }}</span>
<balanceInfo
class="ml-auto"
class="currency-totals"
:currency-needed="getPriceClass()"
:amount-needed="item.value"
/>
@@ -200,11 +238,47 @@
@include centeredModal();
.modal-body {
padding-left: 0px;
padding-right: 0px;
padding-bottom: 0px;
}
.modal-footer {
height: 48px;
background-color: $gray-700;
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
display: block;
margin: 24px 0 0 0;
padding: 16px 24px;
align-content: center;
.user-balance {
width: 150px;
height: 16px;
font-size: 0.75rem;
font-weight: bold;
line-height: 1.33;
color: $gray-100;
margin-bottom: 16px;
margin-top: -4px;
margin-left: -4px;
}
.currency-totals {
margin-right: -8px;
float: right;
}
}
.modal-dialog {
width: 330px;
width: 448px;
box-sizing: border-box;
}
.badge-dialog {
left: -8px;
top: -8px;
}
.avatar {
@@ -212,8 +286,71 @@
margin: 0 auto;
}
.owned {
height: 32px;
width: 141px;
margin-top: -36px;
margin-left: 153px;
padding-top: 6px;
background-color: $gray-600;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
display: block;
text-align: center;
position: relative;
z-index: 1;
.owned-text {
font-size: 0.75rem;
font-weight: bold;
line-height: 1.71;
}
.user-amount {
font-weight: normal !important;
}
}
.item {
width: 141px;
height: 147px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
cursor: default;
}
.item-content {
transform: scale(1.45, 1.45);
top: -25.67px;
left: 1px;
&.shop_gem {
transform: scale(1.45, 1.45);
top: -2px;
left: 0px;
}
}
.title {
height: 28px;
color: $gray-10;
font-size: 1.25rem;
margin-top: 25px;
}
.item-notes {
margin-top: 8px;
padding-left: 48.5px;
padding-right: 48.5px;
line-height: 1.71;
font-size: 0.875rem;
}
.content {
text-align: center;
width: 448px;
}
.item-wrapper {
@@ -221,15 +358,22 @@
}
.inner-content {
margin: 33px auto auto;
width: 282px;
margin: 32px auto auto;
}
.btn-primary {
margin-top: 16px;
}
.purchase-amount {
margin-top: 24px;
margin-top: 0px;
.how-many-to-buy {
margin-bottom: 16px;
font-weight: bold !important;
}
.number-increment {
margin-top: 16px;
}
.box {
@@ -255,31 +399,105 @@
}
}
}
.no-more-gems {
color: $yellow-5;
font-size: 0.875em;
line-height: 1.33;
margin: 16px 48px 0 48px;
}
span.svg-icon.inline.icon-32 {
height: 32px;
width: 32px;
// for cost icon of a single item
span.svg-icon.inline.icon-24 {
display: inline-block;
height: 24px;
width: 24px;
margin-right: 4px;
padding-top: 4px;
}
// for the total user cost
span.svg-icon.total.icon-24 {
display: inline-block;
height: 24px;
width: 24px;
margin-left: 6px;
margin-right: 8px;
padding-top: 6px;
}
vertical-align: middle;
span.svg-icon.icon-16 {
height: 16px;
width: 16px;
}
.close-icon {
color: $gray-200;
stroke-width: 0px;
&:hover {
color: $gray-100;
}
}
.attributes-group {
margin: 32px;
border-radius: 4px;
line-height: 1.71;
font-size: 0.875;
}
.attributesGrid {
margin-top: 28px;
border-radius: 2px;
background-color: $gray-500;
}
.item-cost {
display: inline-flex;
margin: 16px 0;
align-items: center;
height: 40px;
}
.cost {
width: 28px;
height: 32px;
font-size: 24px;
display: inline-block;
font-family: sans-serif;
font-size: 1.25rem;
font-weight: bold;
line-height: 1.33;
vertical-align: middle;
padding: 6px 20px;
line-height: 1.4;
border-radius: 20px;
&.gems {
color: $gems-color;
color: $green-10;
background-color: rgba(36, 204, 143, 0.15);
align-items: center;
}
&.gold {
color: $gold-color;
color: $yellow-5;
background-color: rgba(255, 190, 93, 0.15);
align-items: center;
}
&.hourglasses {
color: $hourglass-color;
background-color: rgba(41, 149, 205, 0.15);
align-items: center;
}
}
.total {
font-weight: bold;
font-size: 0.875rem;
padding-top: 2px;
margin-top: 4px;
&.gems {
color: $green-10;
}
&.gold {
color: $yellow-5;
}
&.hourglasses {
@@ -287,62 +505,84 @@
}
}
.total-text {
color: $gray-50;
font-weight: bold;
font-size: 0.875rem;
line-height: 1.71;
&.gems {
color: $green-10;
}
&.gold {
color: $yellow-5;
}
&.hourglasses {
color: $hourglass-color;
}
}
button.btn.btn-primary {
margin-top: 24px;
margin-bottom: 24px;
min-width: 6rem;
margin-top: 16px;
padding: 4px 16px;
height: 32px;
&:focus {
border: 2px solid black;
}
}
.balance {
width: 74px;
height: 16px;
font-size: 12px;
font-weight: bold;
line-height: 1.33;
color: $gray-200;
}
.notEnough {
pointer-events: none;
opacity: 0.55;
}
.modal-footer {
height: 48px;
background-color: $gray-700;
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
display: block;
}
.free-rebirth {
background-color: $yellow-5;
color: $white;
height: 2rem;
line-height: 16px;
margin: auto -1rem -1rem;
}
.notEnough {
pointer-events: none;
opacity: 0.55;
}
// .pt-015 {
// padding-top: 0.15rem;
// }
.attributesGrid {
margin-top: 8px;
border-radius: 2px;
background-color: $gray-500;
margin: 10px 0 24px;
}
.gems-left {
margin-top: .5em;
height: 32px;
background-color: $green-100;
font-size: 0.75rem;
margin-top: 24px;
color: $green-1;
width: 100%;
margin-bottom: -24px;
}
.free-rebirth {
background-color: $yellow-5;
.out-of-gems-banner {
height: 32px;
font-size: 0.75rem;
margin-top: 24px;
background-color: $yellow-100;
color: $yellow-1;
width: 100%;
margin-bottom: -24px;
}
.limitedTime {
height: 32px;
width: 446px;
font-size: 0.75rem;
margin: 24px 0 0 0;
background-color: $purple-300;
color: $white;
height: 2rem;
line-height: 16px;
margin: auto -1rem -1rem;
}
.pt-015 {
padding-top: 0.15rem;
margin-bottom: -24px;
}
}
</style>
<style lang="scss" scoped>
@@ -370,6 +610,8 @@ import svgGem from '@/assets/svg/gem.svg';
import svgHourglasses from '@/assets/svg/hourglass.svg';
import svgClock from '@/assets/svg/clock.svg';
import svgWhiteClock from '@/assets/svg/clock-white.svg';
import svgPositive from '@/assets/svg/positive.svg';
import svgNegative from '@/assets/svg/negative.svg';
import BalanceInfo from './balanceInfo.vue';
import PinBadge from '@/components/ui/pinBadge';
@@ -377,6 +619,7 @@ import CountdownBanner from './countdownBanner';
import currencyMixin from './_currencyMixin';
import notifications from '@/mixins/notifications';
import buyMixin from '@/mixins/buy';
import numberIncrement from '@/components/shared/numberIncrement';
import { mapState } from '@/libs/store';
@@ -407,14 +650,17 @@ export default {
Avatar,
PinBadge,
CountdownBanner,
numberIncrement,
},
mixins: [buyMixin, currencyMixin, notifications, numberInvalid, spellsMixin],
props: {
// eslint-disable-next-line vue/require-default-prop
item: {
type: Object,
},
priceType: {
type: String,
default: '',
},
withPin: {
type: Boolean,
@@ -433,10 +679,14 @@ export default {
hourglasses: svgHourglasses,
clock: svgClock,
whiteClock: svgWhiteClock,
positive: svgPositive,
negative: svgNegative,
}),
selectedAmountToBuy: 1,
selectedAmount: 1,
isPinned: false,
quantity: 1,
};
},
computed: {
@@ -474,6 +724,11 @@ export default {
return planGemLimits.convCap
+ this.user.purchased.plan.consecutive.gemCapExtra - this.user.purchased.plan.gemsBought;
},
totalGems () {
if (!this.user.purchased.plan) return 0;
return planGemLimits.convCap
+ this.user.purchased.plan.consecutive.gemCapExtra;
},
attemptingToPurchaseMoreGemsThanAreLeft () {
if (this.item && this.item.key && this.item.key === 'gem' && this.selectedAmountToBuy > this.gemsLeft) return true;
return false;
@@ -490,6 +745,9 @@ export default {
endDate () {
return moment(this.item.event.end);
},
totalOwned () {
return this.user.items[this.item.purchaseType][this.item.key] || 0;
},
},
watch: {
item: function itemChanged () {
@@ -500,7 +758,9 @@ export default {
methods: {
onChange ($event) {
this.$emit('change', $event);
this.selectedAmountToBuy = 1;
},
buyItem () {
// @TODO: I think we should buying to the items.
// Turn the items into classes, and use polymorphism
@@ -597,6 +857,7 @@ export default {
}
},
hideDialog () {
this.selectedAmountToBuy = 1;
this.$root.$emit('bv::hide::modal', 'buy-modal');
},
getPriceClass () {
@@ -16,9 +16,6 @@
.limitedTime {
height: 32px;
width: calc(100% + 30px);
margin: 0 -15px; // the modal content has its own padding
font-size: 12px;
line-height: 1.33;
text-align: center;
@@ -4,9 +4,9 @@
:hide-header="true"
@change="onChange($event)"
>
<div class="close">
<div>
<span
class="svg-icon inline icon-10"
class="svg-icon close-icon icon-16 color"
aria-hidden="true"
@click="hideDialog()"
v-html="icons.close"
@@ -14,60 +14,73 @@
</div>
<div
v-if="item"
class="content"
class="content bordered-item"
>
<div class="inner-content">
<item
class="flat"
class="flat bordered-item"
:item="item"
:item-content-class="itemContextToSell.itemClass"
:show-popover="false"
>
<countBadge
slot="itemBadge"
:show="true"
:count="itemContextToSell.itemCount"
/>
</item>
/>
<span class="owned">
{{ $t('owned') }}: <span class="user-amount">{{ itemContextToSell.itemCount }}</span>
</span>
<h4 class="title">
{{ itemContextToSell.itemName }}
</h4>
<div v-if="item.key === 'Saddle'">
<div class="text">
<div class="item-notes">
{{ item.sellWarningNote() }}
</div>
<br>
</div>
<div v-else>
<div>
<div class="text">
<div class="item-notes">
{{ item.notes() }}
</div>
<div>
<b class="how-many-to-sell">{{ $t('howManyToSell') }}</b>
<div class="item-cost">
<span class="cost gold">
<span
class="svg-icon inline icon-24"
aria-hidden="true"
v-html="icons.gold"
></span>
<span>{{ item.value }}</span>
</span>
</div>
<div>
<b-input
v-model="selectedAmountToSell"
class="itemsToSell"
type="number"
:max="itemContextToSell.itemCount"
min="1"
step="1"
@keyup.native="preventNegative($event)"
/>
<span
class="svg-icon inline icon-32"
class="how-many-to-sell"
>
{{ $t('howManyToSell') }}
</span>
</div>
<div>
<number-increment
@updateQuantity="selectedAmountToSell = $event"
/>
</div>
<div class="total-row">
<span class="total-text">
{{ $t('sendTotal') }}
</span>
<span
class="svg-icon total icon-24"
aria-hidden="true"
v-html="icons.gold"
></span>
<span class="value">{{ item.value }}</span>
<span class="total-text gold">
{{ item.value * selectedAmountToSell }}
</span>
</div>
<button
class="btn btn-primary"
:disabled="selectedAmountToSell > itemContextToSell.itemCount"
@click="sellItems()"
>
{{ $t('sell') }}
{{ $t('sellItems') }}
</button>
</div>
</div>
@@ -77,8 +90,10 @@
slot="modal-footer"
class="clearfix"
>
<span class="balance float-left">{{ $t('yourBalance') }}</span>
<balanceInfo class="float-right" />
<span class="user-balance float-left">{{ $t('yourBalance') }}</span>
<balanceInfo
class="float-right currency-totals"
/>
</div>
</b-modal>
</template>
@@ -95,51 +110,13 @@
}
.modal-dialog {
width: 330px;
width: 448px;
}
.content {
text-align: center;
}
.inner-content {
margin: 33px auto auto;
width: 282px;
}
span.svg-icon.inline.icon-32 {
height: 32px;
width: 32px;
margin-left: 24px;
margin-right: 8px;
vertical-align: middle;
}
.value {
width: 28px;
height: 32px;
font-size: 24px;
font-weight: bold;
line-height: 1.33;
color: #df911e;
vertical-align: middle;
}
button.btn.btn-primary {
margin-top: 24px;
margin-bottom: 24px;
}
.balance {
width: 74px;
height: 16px;
font-size: 12px;
font-weight: bold;
line-height: 1.33;
color: $gray-200;
.modal-body {
padding-left: 0px;
padding-right: 0px;
padding-bottom: 0px;
}
.modal-footer {
@@ -148,29 +125,215 @@
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
display: block;
margin: 24px 0 0;
padding: 16px 24px;
align-content: center;
.user-balance {
width: 150px;
height: 16px;
font-size: 0.75rem;
font-weight: bold;
line-height: 1.33;
color: $gray-100;
margin-bottom: 16px;
margin-top: -4px;
margin-left: -4px;
}
.currency-totals {
margin-right: -8px;
float: right;
}
}
.how-many-to-sell {
margin-bottom: 16px;
.content {
text-align: center;
}
.inner-content {
margin: 33px auto auto;
width: 282px;
}
.owned {
font-size: 0.75rem;
font-weight: bold;
line-height: 1.33;
background-color: $gray-600;
padding: 8px 8px;
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
display: block;
width: 141px;
margin-left: 71px;
margin-top: -48px;
position: relative;
z-index: 1;
.user-amount {
font-weight: normal !important;
}
}
.item-wrapper {
margin-top: -10px;
}
.item {
width: 141px;
height: 147px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 0px;
cursor: default;
margin-top: 8px;
}
.item-content {
transform: scale(1.45, 1.45);
top: -25px;
left: 1px;
}
.title {
color: $gray-10;
font-size: 1.25rem;
margin-top: 26px;
margin-bottom: 0px;
}
.item-notes {
margin-top: 12px;
line-height: 1.71;
font-size: 0.875rem;
}
// for cost icon of a single item
span.svg-icon.inline.icon-24 {
display: inline-block;
height: 24px;
width: 24px;
margin-right: 4px;
padding-top: 4px;
}
// for the total user cost
span.svg-icon.total.icon-24 {
display: inline-block;
height: 24px;
width: 24px;
margin-left: 6px;
margin-right: 8px;
padding-top: 6px;
}
span.svg-icon.icon-16 {
height: 16px;
width: 16px;
}
.close-icon {
color: $gray-200;
stroke-width: 0px;
cursor: pointer;
&:hover {
color: $gray-100;
}
}
.item-cost {
display: inline-flex;
margin: 16px 0;
align-items: center;
height: 40px;
}
.cost {
display: inline-block;
font-family: sans-serif;
font-size: 1.25rem;
font-weight: bold;
padding: 6px 20px;
line-height: 1.4;
border-radius: 20px;
&.gold {
color: $yellow-5;
background-color: rgba(255, 190, 93, 0.15);
align-items: center;
}
}
}
.how-many-to-sell {
font-weight: bold !important;
}
.number-increment {
margin-top: 16px;
}
.total-row {
font-weight: bold;
font-size: 0.875rem;
margin-top: 16px;
&.gold {
color: $yellow-5;
}
}
.total-text {
color: $gray-50;
font-weight: bold;
font-size: 0.875rem;
line-height: 1.71;
&.gold {
color: $yellow-5;
}
}
button.btn.btn-primary {
margin-top: 16px;
padding: 4px 16px;
height: 32px;
&:focus {
border: 2px solid black;
}
.balance {
width: 74px;
height: 16px;
font-size: 12px;
font-weight: bold;
line-height: 1.33;
color: $gray-200;
}
}
</style>
<script>
import svgClose from '@/assets/svg/close.svg';
import svgGold from '@/assets/svg/gold.svg';
import svgGem from '@/assets/svg/gem.svg';
import svgPositive from '@/assets/svg/positive.svg';
import svgNegative from '@/assets/svg/negative.svg';
import BalanceInfo from '../balanceInfo.vue';
import Item from '@/components/inventory/item';
import CountBadge from '@/components/ui/countBadge';
import numberIncrement from '@/components/shared/numberIncrement';
export default {
components: {
BalanceInfo,
Item,
CountBadge,
numberIncrement,
},
data () {
return {
@@ -181,6 +344,8 @@ export default {
close: svgClose,
gold: svgGold,
gem: svgGem,
svgPositive,
svgNegative,
}),
};
},
@@ -211,6 +376,10 @@ export default {
this.selectedAmountToSell = 0;
}
},
maxOwned () {
const maxOwned = this.itemContextToSell.itemCount;
return maxOwned;
},
sellItems () {
if (!Number.isInteger(Number(this.selectedAmountToSell))) {
this.selectedAmountToSell = 0;
@@ -33,6 +33,22 @@
v-if="!item.locked"
class="purchase-amount"
>
<div class="item-cost">
<span
class="cost"
:class="priceType"
>
<span
class="svg-icon inline icon-24"
aria-hidden="true"
v-html="icons[priceType]"
>
</span>
<span
:class="priceType"
>{{ item.value }}</span>
</span>
</div>
<div class="how-many-to-buy">
<strong>{{ $t('howManyToBuy') }}</strong>
</div>
@@ -42,24 +58,25 @@
>
{{ item.addlNotes }}
</div>
<div class="box">
<input
v-model.number="selectedAmountToBuy"
class="form-control"
type="number"
min="0"
step="1"
>
<div>
<number-increment
@updateQuantity="selectedAmountToBuy = $event"
/>
</div>
<div class="total-row">
<span class="total-text">
{{ $t('sendTotal') }}
</span>
<span
class="svg-icon inline icon-20"
aria-hidden="true"
v-html="currencyIcon"
></span>
<span
class="total"
:class="priceType"
>{{ item.value * selectedAmountToBuy }}</span>
</div>
<span
class="svg-icon inline icon-32"
aria-hidden="true"
v-html="currencyIcon"
></span>
<span
class="value"
:class="priceType"
>{{ item.value }}</span>
</div>
<button
v-if="priceType === 'gems'
@@ -72,7 +89,7 @@
</button>
<button
v-else
class="btn btn-primary"
class="btn btn-primary mb-4"
:class="{'notEnough': !enoughCurrency(priceType, item.value * selectedAmountToBuy)}"
:disabled="numberInvalid"
@click="buyItem()"
@@ -112,6 +129,39 @@
margin-top: 1rem;
}
.modal-body {
padding-left: 0px;
padding-right: 0px;
padding-bottom: 0px;
}
.modal-footer {
height: 48px;
background-color: $gray-700;
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
display: block;
padding: 16px 24px;
align-content: center;
.user-balance {
width: 150px;
height: 16px;
font-size: 0.75rem;
font-weight: bold;
line-height: 1.33;
color: $gray-100;
margin-bottom: 16px;
margin-top: -4px;
margin-left: -4px;
}
.currency-totals {
margin-right: -8px;
float: right;
}
}
.modal-dialog {
margin-top: 8%;
width: 448px !important;
@@ -129,8 +179,13 @@
margin: 33px auto auto;
}
.modal-body {
padding-bottom: 0px;
.item-notes {
height: 48px;
margin-top: 8px;
padding-left: 48.5px;
padding-right: 48.5px;
line-height: 1.71;
font-size: 0.875rem;
}
.questInfo {
@@ -152,16 +207,14 @@
height: 100%;
}
span.svg-icon.inline.icon-32 {
height: 32px;
width: 32px;
margin-right: 8px;
vertical-align: middle;
}
button.btn.btn-primary {
margin-top: 24px;
margin-bottom: 24px;
margin-top: 14px;
padding: 4px 16px;
height: 32px;
&:focus {
border: 2px solid black;
}
}
.balance {
@@ -173,19 +226,6 @@
color: $gray-200;
}
.modal-footer {
height: 48px;
background-color: $gray-700;
border-bottom-right-radius: 8px;
border-bottom-left-radius: 8px;
display: block;
padding: 1rem 1.5rem;
&> * {
margin: 0;
}
}
.notEnough {
pointer-events: none;
opacity: 0.55;
@@ -198,30 +238,108 @@
margin-bottom: 16px;
}
.box {
display: inline-block;
width: 74px;
height: 40px;
border-radius: 2px;
background-color: #ffffff;
box-shadow: 0 2px 2px 0 rgba(26, 24, 29, 0.16), 0 1px 4px 0 rgba(26, 24, 29, 0.12);
margin-right: 24px;
input {
width: 100%;
border: none;
.item-cost {
padding-bottom: 16px;
}
input::-webkit-contacts-auto-fill-button {
visibility: hidden;
display: none !important;
pointer-events: none;
position: absolute;
right: 0;
}
.cost {
height: 40px;
font-size: 1.25rem;
font-weight: bold;
vertical-align: middle;
padding: 8px 20px 8px 20px;
&.gems {
color: $green-10;
background-color: rgba(36, 204, 143, 0.15);
line-height: 1.4;
margin: 0 0 0 -4px;
border-radius: 20px;
}
&.gold {
color: $yellow-5;
background-color: rgba(255, 190, 93, 0.15);
line-height: 1.4;
margin: 0 0 0 -4px;
border-radius: 20px;
}
&.hourglasses {
color: $hourglass-color;
background-color: rgba(41, 149, 205, 0.15);
line-height: 1.4;
margin: 0 0 0 -4px;
border-radius: 20px;
}
}
.total-row {
font-weight: bold;
font-size: 0.875rem;
margin-top: 16px;
}
.total {
font-weight: bold;
font-size: 0.875rem;
margin-top: 16px;
&.gems {
color: $green-10;
}
&.gold {
color: $yellow-5;
}
&.hourglasses {
color: $hourglass-color;
}
}
.total-text {
color: $gray-50;
font-weight: bold;
font-size: 0.875rem;
height: 24px;
line-height: 1.71;
padding-right: 4px;
&.gems {
color: $green-10;
}
&.gold {
color: $yellow-5;
}
&.hourglasses {
color: $hourglass-color;
}
}
span.svg-icon.inline.icon-20 {
height: 20px;
width: 20px;
margin-right: 4px;
vertical-align: middle;
}
span.svg-icon.inline.icon-24 {
height: 24px;
width: 24px;
margin-right: 8px;
vertical-align: middle;
}
span.svg-icon.inline.icon-32 {
height: 32px;
width: 32px;
margin-right: 8px;
vertical-align: middle;
}
@media only screen and (max-width: 1000px) {
.modal-dialog {
max-width: 80%;
@@ -234,9 +352,10 @@
}
}
}
}
</style>
<style lang="scss" scoped>
<!-- <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss';
.value {
@@ -260,7 +379,7 @@
color: $hourglass-color;
}
}
</style>
</style> -->
<script>
import moment from 'moment';
@@ -272,6 +391,8 @@ import svgExperience from '@/assets/svg/experience.svg';
import svgGem from '@/assets/svg/gem.svg';
import svgGold from '@/assets/svg/gold.svg';
import svgHourglasses from '@/assets/svg/hourglass.svg';
import svgPositive from '@/assets/svg/positive.svg';
import svgNegative from '@/assets/svg/negative.svg';
import BalanceInfo from '../balanceInfo.vue';
import currencyMixin from '../_currencyMixin';
@@ -280,6 +401,7 @@ import buyMixin from '@/mixins/buy';
import numberInvalid from '@/mixins/numberInvalid';
import PinBadge from '@/components/ui/pinBadge';
import CountdownBanner from '../countdownBanner';
import numberIncrement from '@/components/shared/numberIncrement';
import questDialogContent from './questDialogContent';
import QuestRewards from './questRewards';
@@ -293,6 +415,7 @@ export default {
PinBadge,
questDialogContent,
CountdownBanner,
numberIncrement,
},
mixins: [buyMixin, currencyMixin, notifications, numberInvalid],
props: {
@@ -301,6 +424,7 @@ export default {
},
priceType: {
type: String,
default: '',
},
withPin: {
type: Boolean,
@@ -312,9 +436,11 @@ export default {
clock: svgClock,
close: svgClose,
experience: svgExperience,
gem: svgGem,
gems: svgGem,
gold: svgGold,
hourglass: svgHourglasses,
hourglasses: svgHourglasses,
positive: svgPositive,
negative: svgNegative,
}),
isPinned: false,
@@ -339,8 +465,8 @@ export default {
},
currencyIcon () {
if (this.priceType === 'gold') return this.icons.gold;
if (this.priceType === 'hourglasses') return this.icons.hourglass;
return this.icons.gem;
if (this.priceType === 'hourglasses') return this.icons.hourglasses;
return this.icons.gems;
},
endDate () {
return moment(this.item.event.end);
@@ -33,17 +33,17 @@
h3 {
color: $gray-10;
margin-bottom: 0.25rem;
margin-bottom: 4pxrem;
}
.quest-image {
margin: 0 auto;
margin-bottom: 1em;
margin-top: 1.5em;
margin-bottom: 16px;
margin-top: 24px;
}
.text {
margin-bottom: 1rem;
margin: 16px 16px;
overflow-y: auto;
text-overflow: ellipsis;
}
@@ -54,10 +54,10 @@
line-height: 1.71;
color: $gray-50;
text-align: center;
margin-bottom: 0.5rem;
margin-bottom: 8px;
::v-deep .user-label {
font-size: 14px;
font-size: 0.875rem;
}
}
@@ -177,9 +177,6 @@ export default {
@import '~@/assets/scss/colors.scss';
.quest-rewards {
margin-left: -1rem;
margin-right: -1rem;
background-color: $gray-700;
}
@@ -7,13 +7,19 @@
<br>
<p class="text-center">
<button
id="buttonClearBrowserData"
class="btn btn-lg btn-danger"
popover-trigger="mouseover"
:popover="$t('localStorageClearExplanation')"
@click="clearLocalStorage()"
>
{{ $t('localStorageClear') }}
</button>
<b-popover
target="buttonClearBrowserData"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('localStorageClearExplanation')"
/>
</p>
<br>
<p v-html="$t('localStorageTryNext', localStorageTryNext) "></p>
+16 -9
View File
@@ -32,6 +32,9 @@
'task-not-scoreable': showTaskLockIcon,
}, controlClass.up.inner]"
tabindex="0"
role="button"
:aria-label="$t('scoreUp')"
:aria-disabled="showTaskLockIcon || (!task.up && !showTaskLockIcon)"
@click="score('up')"
@keypress.enter="score('up')"
>
@@ -63,6 +66,7 @@
controlClass.inner,
]"
tabindex="0"
role="checkbox"
@click="score(showCheckIcon ? 'down' : 'up' )"
@keypress.enter="score(showCheckIcon ? 'down' : 'up' )"
>
@@ -241,7 +245,7 @@
>
<div
v-b-tooltip.hover.bottom="$t('dueDate')"
class="svg-icon calendar"
class="svg-icon calendar my-auto"
v-html="icons.calendar"
></div>
<span>{{ formatDueDate() }}</span>
@@ -359,6 +363,9 @@
'task-not-scoreable': showTaskLockIcon,
}, controlClass.down.inner]"
tabindex="0"
role="button"
:aria-label="$t('scoreDown')"
:aria-disabled="showTaskLockIcon || (!task.down && !showTaskLockIcon)"
@click="score('down')"
@keypress.enter="score('down')"
>
@@ -701,7 +708,7 @@
.icons {
margin-top: 4px;
color: $gray-300;
color: $gray-100;
font-style: normal;
&-right {
@@ -760,7 +767,7 @@
}
.due-overdue {
color: $red-50;
color: $maroon-10;
}
.calendar.svg-icon {
@@ -899,7 +906,7 @@
}
</style>
<!-- eslint-enable max-len -->
<!-- eslint-disable-next-line vue/component-tags-order -->
<script>
import moment from 'moment';
import { v4 as uuid } from 'uuid';
@@ -1126,13 +1133,13 @@ export default {
return moment.duration(endOfDueDate.diff(endOfToday));
},
checkIfOverdue () {
return this.calculateTimeTillDue().asDays() <= 0;
return this.calculateTimeTillDue().asDays() < 0;
},
formatDueDate () {
const timeTillDue = this.calculateTimeTillDue();
const dueIn = timeTillDue.asDays() === 0 ? this.$t('today') : timeTillDue.humanize(true);
return this.task.date && this.$t('dueIn', { dueIn });
if (moment().isSame(this.task.date, 'day')) {
return this.$t('today');
}
return moment(this.task.date).format(this.user.preferences.dateFormat.toUpperCase());
},
edit (e, task) {
if (this.isRunningYesterdailies) return;
@@ -190,14 +190,10 @@
class="col-12 col-md-6"
>
<div class="row col-12 stats-column">
<div class="col-12 col-md-4 attribute-label">
<span
class="hint"
:popover-title="$t(statInfo.title)"
popover-placement="right"
:popover="$t(statInfo.popover)"
popover-trigger="mouseenter"
></span>
<div
:id="`${stat}-information`"
class="col-12 col-md-4 attribute-label"
>
<div
class="stat-title"
:class="stat"
@@ -206,6 +202,13 @@
</div>
<strong class="number">{{ totalStatPoints(stat) | floorWholeNumber }}</strong>
</div>
<b-popover
:target="`${stat}-information`"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t(statInfo.popover)"
/>
<div class="col-12 col-md-6">
<ul class="bonus-stats">
<li>
@@ -355,7 +358,7 @@ export default {
},
allocateStatsList: {
str: { title: 'allocateStr', popover: 'strengthText', allocatepop: 'allocateStrPop' },
str: { title: 'allocateStr', popover: 'strText', allocatepop: 'allocateStrPop' },
int: { title: 'allocateInt', popover: 'intText', allocatepop: 'allocateIntPop' },
con: { title: 'allocateCon', popover: 'conText', allocatepop: 'allocateConPop' },
per: { title: 'allocatePer', popover: 'perText', allocatepop: 'allocatePerPop' },
@@ -364,7 +367,7 @@ export default {
stats: {
str: {
title: 'strength',
popover: 'strengthText',
popover: 'strText',
},
int: {
title: 'intelligence',
+132 -76
View File
@@ -146,17 +146,19 @@
:key="stat"
class="row"
>
<div class="col-4">
<span
class="hint"
:popover-title="$t(statInfo.title)"
popover-placement="right"
:popover="$t(statInfo.popover)"
popover-trigger="mouseenter"
>
<strong>{{ $t(statInfo.title) }}</strong>
</span>
<div
class="col-4"
:id="statInfo.title"
>
<strong> {{ $t(statInfo.title)}} </strong>
<strong>: {{ statsComputed[stat] }}</strong>
<b-popover
:target="statInfo.title"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t(statInfo.popover)"
/>
</div>
<div class="col-6">
<ul class="bonus-stats">
@@ -183,27 +185,38 @@
</ul>
</div>
</div>
<div v-if="user.stats.buffs.stealth">
<div
v-if="user.stats.buffs.stealth"
id="stealthBuff"
>
<strong
v-once
class="hint"
:popover-title="$t('stealth')"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('stealthNewDay')"
>{{ $t('stealth') }}</strong>
<strong>: {{ user.stats.buffs.stealth }}&nbsp;</strong>
<b-popover
target="stealthBuff"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('stealthNewDay')"
/>
</div>
<div v-if="user.stats.buffs.streaks">
<div
v-if="user.stats.buffs.streaks"
id="streaksFrozenBuff"
>
<div>
<strong
class="hint"
popover-title="$t('streaksFrozen')"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('streaksFrozenText')"
></strong>
{{ $t('streaksFrozen') }}
<strong>
{{ $t('streaksFrozen') }}
</strong>
<b-popover
target="streaksFrozenBuff"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('streaksFrozenText')"
/>
</div>
</div>
</div>
@@ -237,19 +250,27 @@
>
{{ $t('noMoreAllocate') }}
</p>
<p v-if="user.stats.points || userLevel100Plus">
<p
v-if="user.stats.points || userLevel100Plus"
id="pointAllocation"
>
<strong class="inline">{{ user.stats.points }}&nbsp;</strong>
<strong
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('levelPopover')"
>{{ $t('unallocated') }}</strong>
<strong> {{ $t('unallocated') }} </strong>
<b-popover
target="pointAllocation"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('levelPopover')"
/>
</p>
</div>
<div>
<fieldset class="auto-allocate">
<div class="checkbox">
<div
id="preferenceAutomaticAllocation"
class="checkbox"
>
<label>
<input
v-model="user.preferences.automaticAllocation"
@@ -259,19 +280,24 @@
'preferences.allocationMode': 'taskbased'
})"
>
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('autoAllocationPop')"
>{{ $t('autoAllocation') }}</span>
<b-popover
target="preferenceAutomaticAllocation"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('autoAllocationPop')"
/>
{{ $t('autoAllocation') }}
</label>
</div>
<form
v-if="user.preferences.automaticAllocation"
style="margin-left:1em"
>
<div class="radio">
<div
id="optionFlatAllocation"
class="radio"
>
<label>
<input
v-model="user.preferences.allocationMode"
@@ -280,15 +306,22 @@
value="flat"
@change="set({'preferences.allocationMode': 'flat'})"
>
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('evenAllocationPop')"
>{{ $t('evenAllocation') }}</span>
<span class="hint">
{{ $t('evenAllocation') }}
</span>
<b-popover
target="optionFlatAllocation"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('evenAllocationPop')"
/>
</label>
</div>
<div class="radio">
<div
id="optionClassAllocation"
class="radio"
>
<label>
<input
v-model="user.preferences.allocationMode"
@@ -297,47 +330,63 @@
value="classbased"
@change="set({'preferences.allocationMode': 'classbased'})"
>
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('classAllocationPop')"
>{{ $t('classAllocation') }}</span>
<span class="hint">
{{ $t('classAllocation') }}
</span>
<b-popover
target="optionClassAllocation"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('classAllocationPop')"
/>
</label>
</div>
<div class="radio">
<div
id="optionTaskAllocation"
class="radio"
>
<label>
<input
v-model="user.preferences.allocationMode"
type="radio"
name="allocationMode"
value="taskbased"
value="classbased"
@change="set({'preferences.allocationMode': 'taskbased'})"
>
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('taskAllocationPop')"
>{{ $t('taskAllocation') }}</span>
<span class="hint">
{{ $t('taskAllocation') }}
</span>
<b-popover
target="optionTaskAllocation"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('taskAllocationPop')"
/>
</label>
</div>
</form>
<div
v-if="user.preferences.automaticAllocation
&& !(user.preferences.allocationMode === 'taskbased') && (user.stats.points > 0)"
id="buttonDistributePoints"
>
<button
class="btn btn-primary btn-xs"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t('distributePointsPop')"
@click="allocateNow({})"
>
<span class="glyphicon glyphicon-download"></span>
&nbsp;
{{ $t('distributePoints') }}
</button>
<b-popover
target="buttonDistributePoints"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t('distributePointsPop')"
/>
</div>
</fieldset>
</div>
@@ -346,28 +395,35 @@
:key="stat"
class="row"
>
<div class="col-8">
<span
class="hint"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t(statInfo.popover)"
></span>
<div
:id="`${stat}-info`"
class="col-8"
>
{{ $t(statInfo.title) + user.stats[stat] }}
<b-popover
:target="`${stat}-info`"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t(statInfo.popover)"
/>
</div>
<div
v-if="user.stats.points"
:id="`${stat}-allocate`"
class="col-4"
@click="allocate(stat)"
>
<button
class="btn btn-primary"
popover-trigger="mouseenter"
popover-placement="right"
:popover="$t(statInfo.allocatepop)"
>
<button class="btn btn-primary">
+
</button>
<b-popover
:target="`${stat}-allocate`"
triggers="hover focus"
placement="right"
:prevent-overflow="false"
:content="$t(statInfo.allocatePop)"
/>
</div>
</div>
</div>
+3 -1
View File
@@ -1,7 +1,9 @@
export default {
computed: {
numberInvalid () {
return this.selectedAmountToBuy < 1 || !Number.isInteger(this.selectedAmountToBuy);
const inputNumber = Number(this.selectedAmountToBuy);
return inputNumber < 1
|| !Number.isInteger(inputNumber);
},
},
};
+1 -1
View File
@@ -114,7 +114,7 @@ export default {
this.castCancel();
// the selected member doesn't have the flags property which sets `cardReceived`
if (spell.pinType !== 'card') {
if (spell.pinType !== 'card' && spell.bulk !== true) {
try {
spell.cast(this.user, target, {});
} catch (e) {
@@ -1,94 +0,0 @@
import { shallowMount, createLocalVue } from '@vue/test-utils';
import moment from 'moment';
import Task from '@/components/tasks/task.vue';
import Store from '@/libs/store';
const localVue = createLocalVue();
localVue.use(Store);
describe('Task', () => {
let wrapper;
function makeWrapper (additionalTaskData = {}, additionalUserData = {}) {
return shallowMount(Task, {
propsData: {
task: {
group: {},
...additionalTaskData,
},
},
store: {
state: {
user: {
data: {
preferences: {
tasks: {
activeFilter: {
},
},
},
...additionalUserData,
},
},
},
getters: {
'tasks:getTaskClasses': () => ({}),
'tasks:canEdit': () => ({}),
'tasks:canDelete': () => ({}),
},
},
mocks: { $t: (key, params) => key + (params ? JSON.stringify(params) : '') },
directives: { 'b-tooltip': {} },
localVue,
});
}
it('returns a vue instance', () => {
wrapper = makeWrapper();
expect(wrapper.isVueInstance()).to.be.true;
});
describe('Due date calculation', () => {
let clock;
function setClockTo (time) {
const now = moment(time);
clock = sinon.useFakeTimers(now.toDate());
return now;
}
afterEach(() => {
clock.restore();
});
it('formats due date to today if due today', () => {
const now = setClockTo('2019-09-17T17:57:00+02:00');
wrapper = makeWrapper({ date: now });
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"today"}');
});
it('formats due date to tomorrow if due tomorrow', () => {
const now = setClockTo('2012-06-12T14:17:28Z');
wrapper = makeWrapper({ date: now.add(1, 'day') });
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"in a day"}');
});
it('formats due date to 5 days if due in 5 days', () => {
const now = setClockTo();
wrapper = makeWrapper({ date: now.add(5, 'days') });
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"in 5 days"}');
});
it('formats due date to tomorrow if today but before dayStart', () => {
const now = setClockTo('2019-06-12T04:23:37+02:00');
wrapper = makeWrapper({ date: now.add(8, 'hours') }, { preferences: { dayStart: 7 } });
expect(wrapper.vm.formatDueDate()).to.equal('dueIn{"dueIn":"in a day"}');
});
});
});
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
@@ -0,0 +1 @@
{}
+1
View File
@@ -0,0 +1 @@
{}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"settings": "Settings",
"language": "Language",
"settings": "Налады",
"language": "Мова",
"americanEnglishGovern": "In the event of a discrepancy in the translations, the American English version governs.",
"helpWithTranslation": "Would you like to help with the translation of Habitica? Great! Then visit <a href=\"/groups/guild/7732f64c-33ee-4cce-873c-fc28f147a6f7\">the Aspiring Linguists Guild</a>!",
"stickyHeader": "Sticky header",
+7 -1
View File
@@ -144,5 +144,11 @@
"achievementBoneToPickText": "Hat alle klassischen und Quest-Skeletthaustiere ausgebrütet!",
"achievementPolarProText": "Hat alle Standardfarben der Polar-Haustiere ausgebrütet: Bär, Fuchs, Pinguin, Wal und Wolf!",
"achievementPolarPro": "Polar-Profi",
"achievementPolarProModalText": "Du hast alle Polar-Haustiere gesammelt!"
"achievementPolarProModalText": "Du hast alle Polar-Haustiere gesammelt!",
"achievementPlantParent": "Pflanzenzüchter",
"achievementPlantParentModalText": "Du hast alle Pflanzen-Haustiere gesammelt!",
"achievementPlantParentText": "Hat alle Standardfarben der Pflanzen-Haustiere ausgebrütet: Kaktus und Baumchen!",
"achievementDinosaurDynastyText": "Hat alle Standardfarben der Vogel- und Dinosaurier-Haustiere ausgebrütet: Falke, Eule, Papagei, Pinguin, Hahn, Flugfinger, T-Rex, Triceratops, und Velociraptor!",
"achievementDinosaurDynastyModalText": "Du hast alle Vogel- und Dinosaurier-Haustiere gesammelt!",
"achievementDinosaurDynasty": "Dinosaurier Dynastie"
}
+40 -2
View File
@@ -570,7 +570,7 @@
"backgroundMysticalObservatoryNotes": "Deine Bestimmung steht in den Sternen; vom Mystischen Observatorium aus kannst Du sie lesen.",
"backgroundMysticalObservatoryText": "Mystisches Observatorium",
"backgrounds112020": "Set 78: Veröffentlicht im November 2020",
"backgroundHolidayHearthNotes": "Entspanne, trockne und wärme Deine Glieder an einem Feierlichen Feuer.",
"backgroundHolidayHearthNotes": "Entspanne, wärme und trockne deine Körperteile an einem Feierlichen Feuer.",
"backgroundHolidayHearthText": "Feierliches Feuer",
"backgroundInsideAnOrnamentNotes": "Lasse Deine Festtagsstimmung aus dem Inneren dieses Baumschmuckes erstrahlen.",
"backgroundInsideAnOrnamentText": "Im Baumschmuck",
@@ -756,5 +756,43 @@
"backgroundSnowyTempleText": "Verschneiter Tempel",
"backgroundSnowyTempleNotes": "Einen ruhigen verschneiten Tempel anschauen.",
"backgroundSnowyVillageText": "Verschneites Dorf",
"backgroundSnowyVillageNotes": "Ein verschneites Dorf bewundern."
"backgroundSnowyVillageNotes": "Ein verschneites Dorf bewundern.",
"backgroundOldTimeyBasketballCourtText": "Altmodischer Basketballplatz",
"backgroundOldTimeyBasketballCourtNotes": "Wirf Körbe auf einem altmodischen Basketballplatz.",
"backgroundJungleWateringHoleText": "Dschungel-Wasserstelle",
"backgroundJungleWateringHoleNotes": "Halte inne, um von der Dschungelwasserstelle zu trinken.",
"backgroundMangroveForestText": "Mangrovenwald",
"backgroundMangroveForestNotes": "Erkunde den Rand des Mangrovenwaldes.",
"backgrounds052023": "Set 108: Veröffentlicht im Mai 2023",
"backgroundInAPaintingText": "In einem Gemälde",
"backgroundInAPaintingNotes": "Genieße die kreative Aktivität in einem Gemälde.",
"backgroundFlyingOverHedgeMazeText": "Fliegen über Heckenlabyrinth",
"backgroundFlyingOverHedgeMazeNotes": "Staune beim Fliegen über ein Heckenlabyrinth.",
"backgroundCretaceousForestNotes": "Erlebe das uralte Grün eines Kreidewaldes.",
"backgroundCretaceousForestText": "Kreidewald",
"backgrounds042023": "Set 107: Veröffentlicht im April 2023",
"backgroundLeafyTreeTunnelText": "Blättriger Baumtunnel",
"backgroundSpringtimeShowerText": "Frühlingsschauer",
"backgroundSpringtimeShowerNotes": "Sieh einen blühenden Frühlingsschauer.",
"backgroundUnderWisteriaText": "Unter der Glyzinize",
"backgroundUnderWisteriaNotes": "Entspanne unter der Glyzinie.",
"backgroundInFrontOfFountainText": "Vor einem Sprinnbrunnen",
"backgroundInFrontOfFountainNotes": "Schnlendere vor einem Springbrunnen.",
"backgroundFancyBedroomText": "Schickes Schlafzimmer",
"backgroundWinterLakeWithSwansNotes": "Genieße die Natur am winterlichen See mit Schwänen.",
"backgroundWinterLakeWithSwansText": "winterlicher See mit Schwänen",
"backgrounds062023": "Set 109: Veröffentlicht im Juni 2023",
"backgroundInAnAquariumNotes": "Schwimme ein paar friedliche Runden mit den Fischen im Aquarium.",
"backgroundInsideAdventurersHideoutText": "Das Versteck eines Abenteurers",
"backgroundCraterLakeText": "Kratersee",
"backgroundCraterLakeNotes": "Bewundere einen schönen Kratersee.",
"backgroundInsideACrystalText": "In einem Kristall",
"backgroundFancyBedroomNotes": "Schwelge in einem schicken Schlafzimmer.",
"backgroundLeafyTreeTunnelNotes": "Wandere durch den bläätrigen Baumtunnel.",
"backgroundInAnAquariumText": "In einem Aquarium",
"backgroundInsideAdventurersHideoutNotes": "Plane eine Reise in ein Abenteurerversteck.",
"backgroundBirthdayBashNotes": "Habitica feiert eine Geburtstagsparty und alle sind eingeladen!",
"eventBackgrounds": "Ereignis-Hintergründe",
"backgroundBirthdayBashText": "Geburtstagsparty",
"backgroundInsideACrystalNotes": "Schaue aus einem Kristall hinaus."
}
@@ -4,12 +4,12 @@
"commGuideHeadingWelcome": "Willkommen in Habitica!",
"commGuidePara001": "Sei gegrüßt, Abenteurer! Willkommen in Habitica, dem Land der Produktivität, des gesunden Lebens und des gelegentlich randalierenden Greifs. Wir sind eine fröhliche Gemeinschaft voller hilfreicher Menschen, die sich auf ihrem Weg der persönlichen Entwicklung gegenseitig unterstützen. Alles was dazu gehört, ist eine positive Einstellung, ein respektvoller Umgang miteinander und etwas Verständnis dafür, dass jeder unterschiedliche Fähigkeiten und Grenzen hat - auch Du! Habiticaner gehen geduldig miteinander um und versuchen zu helfen, wo immer sie können.",
"commGuidePara002": "Damit sich hier jeder sicher fühlen, glücklich und produktiv sein kann, gibt es ein paar Richtlinien. Wir haben uns große Mühe gegeben, sie möglichst nett und leicht verständlich zu formulieren. Bitte nimm Dir die Zeit, sie durchzulesen, bevor Du anfängst zu chatten.",
"commGuidePara003": "Diese Regeln gelten an allen sozialen Orten, die wir verwenden, bezogen (aber nicht unbedingt eingeschränkt) auf Trello, GitHub, Weblate und dem Habitica Wiki auf Fandom. Wenn Gemeinschaften wachsen und sich verändern, passen sich manchmal ihre Regeln von Zeit zu Zeit an. Wenn es wesentliche Änderungen dieser Richtlinien gibt, wirst Du dies durch eine Bailey-Ankündigung und/oder in unseren sozialen Medien hören!",
"commGuidePara003": "Diese Regeln gelten an allen sozialen Orten, die wir verwenden, einschließlich (aber nicht nur) Trello, GitHub, Weblate und des Habitica Wiki auf Fandom. Wenn Gemeinschaften wachsen und sich verändern, können sich ihre Regeln von Zeit zu Zeit ändern. Bei wesentlichen Änderungen dieser Richtlinien wirst Du durch eine Bailey-Ankündigung und/oder in unseren sozialen Medien davon erfahren!",
"commGuideHeadingInteractions": "Interaktionen in Habitica",
"commGuidePara015": "Habitica hat zwei Arten sozialer Orte: öffentliche und private. Öffentliche Orte sind die Taverne, öffentliche Gilden, GitHub, Trello und das Wiki. Private Orte sind private Gilden, der Partychat und private Nachrichten. Alle Anzeigenamen und @Usernamen müssen den Community-Richtlinien für öffentliche Orte entsprechen. Um Deinen Anzeigenamen oder @Usernamen zu ändern, wähle in der mobilen App Menü > Einstellungen > Profil. Und wähle auf der Webseite Benutzer Icon > Profil und klicke auf den \"Bearbeiten\"-Knopf.",
"commGuidePara016": "Wenn Du Dich durch die öffentlichen Orte in Habitica bewegst, gibt es ein paar allgemeine Regeln, damit jeder sicher und glücklich ist.",
"commGuideList02A": "<strong>Respektiert einander</strong>. Sei höflich, freundlich und hilfsbereit. Vergiss nicht: Habiticaner kommen aus den verschiedensten Hintergründen und haben sehr unterschiedliche Erfahrungen gemacht. Das macht Habitica so eigenartig! Es ist wichtig, dass man beim Aufbauen einer Community seine Unterschiede und Ähnlichkeiten respektieren, aber natürlich auch feiern kann.",
"commGuideList02B": "<strong>Halte Dich an die <a href='/static/terms' target='_blank'>allgemeinen Geschäftsbedingungen</a></strong>, sowohl in öffentlichen als auch in privaten Umgebungen.",
"commGuideList02B": "<strong>Halte Dich an die <a href='/static/terms' target='_blank'>allgemeinen Geschäftsbedingungen</a></strong>, sowohl in öffentlichen als auch in privaten Bereichen.",
"commGuideList02C": "<strong>Poste keine Bilder oder Texte, die Gewalt darstellen, andere einschüchtern, oder eindeutig/indirekt sexuell sind, die Diskriminierung, Fanatismus, Rassismus, Sexismus, Hass, Belästigungen oder Hetze gegen jedwede Individuen oder Gruppen beinhalten.</strong> Auch nicht als Scherz oder Meme. Das bezieht sowohl Sprüche als auch Stellungnahmen mit ein. Nicht jeder hat den gleichen Humor, etwas, was Du als Witz wahrnimmst, kann für jemand anderen verletzend sein.",
"commGuideList02D": "<strong>Halte die Diskussionen für alle Altersgruppen angemessen</strong>. Das heißt, Erwachsenenthemen in öffentlichen Bereichen zu vermeiden. Viele junge Habiticaner und Menschen mit verschiedenen Hintergründen nutzen diese Seite. Wir wollen unsere Gemeinschaft so angenehm und inklusiv wie möglich gestalten.",
"commGuideList02E": "<strong>Vermeide vulgäre Ausdrücke. Dazu gehören auch mildere, religiöse Ausdrücke, die anderswo möglicherweise akzeptiert werden, oder verschleierte Schimpfwörter</strong>. Unter uns sind Menschen aus allen religiösen und kulturellen Hintergründen und wir wollen, dass sich alle im öffentlichen Raum wohl fühlen. <strong>Wenn Dir ein Moderator oder Mitarbeiter mitteilt, dass ein bestimmter Ausdruck in Habitica nicht erlaubt ist, selbst wenn er Dir vielleicht nicht problematisch vorkommt, ist diese Entscheidung endgültig</strong>. Zusätzlich werden verbale Angriffe jeder Art strenge Konsequenzen haben, da sie auch unsere Nutzungsbedingungen verletzen.",
File diff suppressed because one or more lines are too long
+4 -1
View File
@@ -147,5 +147,8 @@
"achievementPolarProModalText": "You collected all the Polar Pets!",
"achievementPlantParent": "Plant Parent",
"achievementPlantParentText": "Has hatched all standard colors of Plant pets: Cactus and Treeling!",
"achievementPlantParentModalText": "You collected all the Plant Pets!"
"achievementPlantParentModalText": "You collected all the Plant Pets!",
"achievementDinosaurDynasty": "Dinosaur Dynasty",
"achievementDinosaurDynastyText": "Has hatched all standard colors of bird and dinosaur pets: Falcon, Owl, Parrot, Peacock, Penguin, Rooster, Pterodactyl, T-Rex, Triceratops, and Velociraptor!",
"achievementDinosaurDynastyModalText": "You collected all the bird and dinosaur pets!"
}
@@ -883,6 +883,22 @@
"backgroundCretaceousForestText": "Cretaceous Forest",
"backgroundCretaceousForestNotes": "Take in the ancient greenery of a Cretaceous Forest.",
"backgrounds062023": "SET 109: Released June 2023",
"backgroundInAnAquariumText": "In an Aquarium",
"backgroundInAnAquariumNotes": "Take a peaceful swim with the fish In an Aquarium.",
"backgroundInsideAdventurersHideoutText": "Inside an Adventurer's Hideout",
"backgroundInsideAdventurersHideoutNotes": "Plan a journey inside an Adventurer's Hideout.",
"backgroundCraterLakeText": "Crater Lake",
"backgroundCraterLakeNotes": "Admire a lovely Crater Lake.",
"backgrounds072023": "SET 110: Released July 2023",
"backgroundOnAPaddlewheelBoatText": "On a Paddlewheel Boat",
"backgroundOnAPaddlewheelBoatNotes": "Ride on a Paddlewheel Boat.",
"backgroundColorfulCoralText": "Colorful Coral",
"backgroundColorfulCoralNotes": "Dive among Colorful Coral.",
"backgroundBoardwalkIntoSunsetText": "Boardwalk into the Sunset",
"backgroundBoardwalkIntoSunsetNotes": "Stroll on a Boardwalk into the Sunset.",
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
+30 -30
View File
@@ -48,9 +48,9 @@
"webFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 in the action bar at the bottom of the screen. Unlike your Health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete good Habits, Dailies, and To Do's, and lost when you indulge bad Habits. You'll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.",
"faqQuestion9": "How do I take on Quests?",
"iosFaqAnswer9": "First, you need to join or start a Party by selecting \"Party\" in the navigation. Although you can take on Quests alone, we recommend playing with others to make the Quest faster and boost your motivation with extra accountability.\n\nOnce youre in a Party, you can invite Party members to any Quest scrolls in your Inventory. After everyone accepts, the Quest will begin. To progress, complete your tasks as you normally would! Youll either build up damage against a monster if youre taking on a Boss Quest, or have a chance to find items if youre taking on a Collection Quest. All pending progress is applied the next day.\n\nWhen your Party members do enough damage or collect all items, the Quest ends and everyone will receive their rewards!",
"androidFaqAnswer9": "First, you need to join or start a Party by selecting \"Party\" in the navigation. Although you can take on Quests alone, we recommend playing with others to make the Quest faster and boost your motivation with extra accountability.\n\nOnce youre in a Party, you can invite Party members to any Quest scrolls in your Inventory. After everyone accepts, the Quest will begin. To progress, complete your tasks as you normally would! Youll either build up damage against a monster if youre taking on a Boss Quest, or have a chance to find items if youre taking on a Collection Quest. All pending progress is applied the next day.\n\nWhen your Party members do enough damage or collect all items, the Quest ends and everyone will receive their rewards!",
"webFaqAnswer9": "First, you need to join or start a Party by selecting \"Party\" in the navigation. Although you can take on Quests alone, we recommend playing with others to make the Quest faster and boost your motivation with extra accountability.\n\nOnce youre in a Party, you can invite Party members to any Quest scrolls in your Inventory. After everyone accepts, the Quest will begin. To progress, complete your tasks as you normally would! Youll either build up damage against a monster if youre taking on a Boss Quest, or have a chance to find items if youre taking on a Collection Quest. All pending progress is applied the next day.\n\nWhen your Party members do enough damage or collect all items, the Quest ends and everyone will receive their rewards!",
"iosFaqAnswer9": "First, you need to join or start a Party by selecting \"Party\" in the navigation menu. Although you can take on Quests alone, we recommend playing with others to make the Quest faster and boost your motivation with extra accountability.\n\nOnce youre in a Party, you can invite Party members to any Quest scrolls in your Inventory. After everyone accepts, the Quest will begin. To progress, complete your tasks as you normally would! Youll either build up damage against a monster if youre taking on a Boss Quest, or have a chance to find items if youre taking on a Collection Quest. All pending progress is applied the next day.\n\nWhen your Party members do enough damage or collect all items, the Quest ends and everyone will receive their rewards!",
"androidFaqAnswer9": "First, you need to join or start a Party by selecting \"Party\" in the navigation menu. Although you can take on Quests alone, we recommend playing with others to make the Quest faster and boost your motivation with extra accountability.\n\nOnce youre in a Party, you can invite Party members to any Quest scrolls in your Inventory. After everyone accepts, the Quest will begin. To progress, complete your tasks as you normally would! Youll either build up damage against a monster if youre taking on a Boss Quest, or have a chance to find items if youre taking on a Collection Quest. All pending progress is applied the next day.\n\nWhen your Party members do enough damage or collect all items, the Quest ends and everyone will receive their rewards!",
"webFaqAnswer9": "First, you need to join or start a Party by selecting \"Party\" in the navigation menu. Although you can take on Quests alone, we recommend playing with others to make the Quest faster and boost your motivation with extra accountability.\n\nOnce youre in a Party, you can invite Party members to any Quest scrolls in your Inventory. After everyone accepts, the Quest will begin. To progress, complete your tasks as you normally would! Youll either build up damage against a monster if youre taking on a Boss Quest, or have a chance to find items if youre taking on a Collection Quest. All pending progress is applied the next day.\n\nWhen your Party members do enough damage or collect all items, the Quest ends and everyone will receive their rewards!",
"faqQuestion10": "What are Gems, and how do I get them?",
"iosFaqAnswer10": "Gems are purchased with real money from Menu > Purchase Gems. When you buy Gems, you are helping us to keep Habitica running. Were very grateful for every bit of support!\n\n In addition to buying Gems directly, there are three other ways players can gain Gems:\n\n * Win a Challenge that has been set up by another player. Go to Menu > Challenges to join some.\n * Subscribe and unlock the ability to buy a certain number of Gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](https://habitica.fandom.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the app without them!",
@@ -75,29 +75,29 @@
"parties": "Parties",
"faqQuestion14": "How do I find a Party when I'm not in one?",
"iosFaqAnswer14": "If you want to experience Habitica with others but dont know other players, searching for a Party is your best option! If you already know other players that have a Party, you can share your @username with them to be invited. Alternatively, you can create a new Party and invite them with their @username or email address.\n\nTo create or search for a Party, select “Party” in the navigation then choose the option that works for you.",
"androidFaqAnswer14": "If you want to experience Habitica with others but dont know other players, searching for a Party is your best option! If you already know other players that have a Party, you can share your @username with them to be invited. Alternatively, you can create a new Party and invite them with their @username or email address.\n\nTo create or search for a Party, select “Party” in the navigation then choose the option that works for you.",
"webFaqAnswer14": "If you want to experience Habitica with others but dont know other players, searching for a Party is your best option! If you already know other players that have a Party, you can share your @username with them to be invited. Alternatively, you can create a new Party and invite them with their @username or email address.\n\nTo create or search for a Party, select “Party” in the navigation then choose the option that works for you.",
"iosFaqAnswer14": "If you want to experience Habitica with others but dont know other players, searching for a Party is your best option! If you already know other players that have a Party, you can share your @username with them to be invited. Alternatively, you can create a new Party and invite them with their @username or email address.\n\nTo create or search for a Party, select “Party” in the navigation menu, then choose the option that works for you.",
"androidFaqAnswer14": "If you want to experience Habitica with others but dont know other players, searching for a Party is your best option! If you already know other players that have a Party, you can share your @username with them to be invited. Alternatively, you can create a new Party and invite them with their @username or email address.\n\nTo create or search for a Party, select “Party” in the navigation menu, then choose the option that works for you.",
"webFaqAnswer14": "If you want to experience Habitica with others but dont know other players, searching for a Party is your best option! If you already know other players that have a Party, you can share your @username with them to be invited. Alternatively, you can create a new Party and invite them with their @username or email address.\n\nTo create or search for a Party, select “Party” in the navigation menu, then choose the option that works for you.",
"faqQuestion15": "How does searching for a Party work?",
"iosFaqAnswer15": "After selecting “Look for a Party” in the Party pop-up, youll be added to a list of players that want to join a Party. Party leaders can view this list and send invitations. Once you receive an invitation, you can accept it from your notifications to join the Party of your choosing!\n\nYou may get multiple invitations to different Parties. However, you can only be a member of one Party at a time.",
"androidFaqAnswer15": "After selecting “Look for a Party” in the Party pop-up, youll be added to a list of players that want to join a Party. Party leaders can view this list and send invitations. Once you receive an invitation, you can accept it from your notifications to join the Party of your choosing!\n\nYou may get multiple invitations to different Parties. However, you can only be a member of one Party at a time.",
"webFaqAnswer15": "After selecting “Look for a Party” in the Party pop-up, youll be added to a list of players that want to join a Party. Party leaders can view this list and send invitations. Once you receive an invitation, you can accept it from your notifications to join the Party of your choosing!\n\nYou may get multiple invitations to different Parties. However, you can only be a member of one Party at a time.",
"iosFaqAnswer15": "After selecting “Look for a Party”, youll be added to a list of players that want to join a Party. Party leaders can view this list and send invitations. Once you receive an invitation, you can accept it from your notifications to join the Party of your choosing!\n\nYou may get multiple invitations to different Parties. However, you can only be a member of one Party at a time.",
"androidFaqAnswer15": "After selecting “Look for a Party”, youll be added to a list of players that want to join a Party. Party leaders can view this list and send invitations. Once you receive an invitation, you can accept it from your notifications to join the Party of your choosing!\n\nYou may get multiple invitations to different Parties. However, you can only be a member of one Party at a time.",
"webFaqAnswer15": "After selecting “Look for a Party”, youll be added to a list of players that want to join a Party. Party leaders can view this list and send invitations. Once you receive an invitation, you can accept it from your notifications to join the Party of your choosing!\n\nYou may get multiple invitations to different Parties. However, you can only be a member of one Party at a time.",
"faqQuestion16": "How long can I search for a Party after joining the list?",
"iosFaqAnswer16": "You will remain in the list until you accept an invite to a Party or dont login for 7 days, whichever comes first.",
"androidFaqAnswer16": "You will remain in the list until you accept an invite to a Party or dont login for 7 days, whichever comes first.",
"webFaqAnswer16": "You will remain in the list until you accept an invite to a Party or dont login for 7 days, whichever comes first.",
"iosFaqAnswer16": "You will remain in the list until you accept an invite to a Party or dont login for 7 days, whichever comes first. If you log in after being inactive for 7 days, well automatically add you back to the list as long as you don't have a pending invite.",
"androidFaqAnswer16": "You will remain in the list until you accept an invite to a Party or dont login for 7 days, whichever comes first. If you log in after being inactive for 7 days, well automatically add you back to the list as long as you don't have a pending invite.",
"webFaqAnswer16": "You will remain in the list until you accept an invite to a Party or dont login for 7 days, whichever comes first. If you log in after being inactive for 7 days, well automatically add you back to the list as long as you don't have a pending invite.",
"faqQuestion17": "Can I stop searching for a Party?",
"iosFaqAnswer17": "You can leave the list at any time. To stop searching for Party on the website, select the “Party” link in the navigation then click “Leave” in the pop-up.",
"androidFaqAnswer17": "You can leave the list at any time. To stop searching for Party on the website, select the “Party” link in the navigation then click “Leave” in the pop-up.",
"webFaqAnswer17": "You can leave the list at any time. To stop searching for Party on the website, select the “Party” link in the navigation then click “Leave” in the pop-up.",
"iosFaqAnswer17": "If you no longer want to find a Party, you can stop searching at any time.\n\nTo stop searching for a Party on Habiticas website:\n\n1. Select the “Party” link in the navigation.\n2. Click “Leave” in the pop-up.\n\nTo stop searching for a Party on the Android app:\n1. Tap on “Party” from the menu.\n2. Tap “Leave” at the bottom of the screen.",
"androidFaqAnswer17": "If you no longer want to find a Party, you can stop searching at any time.\n\nTo stop searching for a Party on Habiticas website:\n\n1. Select the “Party” link in the navigation.\n2. Click “Leave” in the pop-up.\n\nTo stop searching for a Party on the Android app:\n1. Tap on “Party” from the menu.\n2. Tap “Leave” at the bottom of the screen.",
"webFaqAnswer17": "If you no longer want to find a Party, you can stop searching at any time.\n\nTo stop searching for a Party on Habiticas website:\n\n1. Select the “Party” link in the navigation.\n2. Click “Leave” in the pop-up.\n\nTo stop searching for a Party on the Android app:\n1. Tap on “Party” from the menu.\n2. Tap “Leave” at the bottom of the screen.",
"faqQuestion18": "I have a Party, how do I find more members?",
"iosFaqAnswer18": "If you are using Habiticas website, select “Find Members” from the Party dropdown. This will display a list of Habitica players that are actively looking for a Party and can be invited to join.\n\nYou'll see some information, such as language, class, level, and how many days they have used Habitica to help find a good fit for your Party. If youd like to chat with someone before sending an invite, you can view their Profile and send a message.",
"androidFaqAnswer18": "If you are using Habiticas website, select “Find Members” from the Party dropdown. This will display a list of Habitica players that are actively looking for a Party and can be invited to join.\n\nYou'll see some information, such as language, class, level, and how many days they have used Habitica to help find a good fit for your Party. If youd like to chat with someone before sending an invite, you can view their Profile and send a message.",
"webFaqAnswer18": "If you are using Habiticas website, select “Find Members” from the Party dropdown. This will display a list of Habitica players that are actively looking for a Party and can be invited to join.\n\nYou'll see some information, such as language, class, level, and how many days they have used Habitica to help find a good fit for your Party. If youd like to chat with someone before sending an invite, you can view their Profile and send a message.",
"iosFaqAnswer18": "If you are using Habiticas website, select “Find Members” from the Party dropdown. If youre using the Android app, tap “Find Members” above your Partys member list. This will display a list of players that are actively looking for a Party and can be invited to join.\n\nTo help find a good fit for your Party, you'll see some information, such as language, class, level, and how many days they have used Habitica. If youd like to chat with someone before sending an invite, you can view their Profile and send a message.",
"androidFaqAnswer18": "If you are using Habiticas website, select “Find Members” from the Party dropdown. If youre using the Android app, tap “Find Members” above your Partys member list. This will display a list of players that are actively looking for a Party and can be invited to join.\n\nTo help find a good fit for your Party, you'll see some information, such as language, class, level, and how many days they have used Habitica. If youd like to chat with someone before sending an invite, you can view their Profile and send a message.",
"webFaqAnswer18": "If you are using Habiticas website, select “Find Members” from the Party dropdown. If youre using the Android app, tap “Find Members” above your Partys member list. This will display a list of players that are actively looking for a Party and can be invited to join.\n\nTo help find a good fit for your Party, you'll see some information, such as language, class, level, and how many days they have used Habitica. If youd like to chat with someone before sending an invite, you can view their Profile and send a message.",
"faqQuestion19": "How many members can I invite to my Party?",
"iosFaqAnswer19": "Parties have a maximum limit of 30 members and a minimum of 1 member. Pending invites count towards the member count. For example, 29 members and 1 pending invite would count as 30 members. To clear a pending invite, the invited player must accept or decline, or the Party leader must cancel the invite.",
@@ -105,19 +105,19 @@
"webFaqAnswer19": "Parties have a maximum limit of 30 members and a minimum of 1 member. Pending invites count towards the member count. For example, 29 members and 1 pending invite would count as 30 members. To clear a pending invite, the invited player must accept or decline, or the Party leader must cancel the invite.",
"faqQuestion20": "Can I invite someone I already know?",
"iosFaqAnswer20": "Yes! If you already have a Habitica players username or email address, you can invite them to join your Party. Heres how to send an invite on the different platforms:\n\n## On Habiticas website\n\nNavigate to your Party and click “Invite to Party” on the right-hand side of the page.\n\n## On iOS and Android\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Invite a Member”.",
"androidFaqAnswer20": "Yes! If you already have a Habitica players username or email address, you can invite them to join your Party. Heres how to send an invite on the different platforms:\n\n## On Habiticas website\n\nNavigate to your Party and click “Invite to Party” on the right-hand side of the page.\n\n## On iOS and Android\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Invite a Member”.",
"webFaqAnswer20": "Yes! If you already have a Habitica players username or email address, you can invite them to join your Party. Heres how to send an invite on the different platforms:\n\n## On Habiticas website\n\nNavigate to your Party and click “Invite to Party” on the right-hand side of the page.\n\n## On iOS and Android\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Invite a Member”.",
"iosFaqAnswer20": "Yes! If you already have a Habitica players username or email address, you can invite them to join your Party. Heres how to send an invite on the different platforms:\n\nOn Habiticas website:\n\nNavigate to your Party and click “Invite to Party” on the right-hand side of the page.\n\nOn the Android app:\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Find Members” then tap the “By Invite” tab.\n\nOn the iOS app:\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Invite a Member”.",
"androidFaqAnswer20": "Yes! If you already have a Habitica players username or email address, you can invite them to join your Party. Heres how to send an invite on the different platforms:\n\nOn Habiticas website:\n\nNavigate to your Party and click “Invite to Party” on the right-hand side of the page.\n\nOn the Android app:\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Find Members” then tap the “By Invite” tab.\n\nOn the iOS app:\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Invite a Member”.",
"webFaqAnswer20": "Yes! If you already have a Habitica players username or email address, you can invite them to join your Party. Heres how to send an invite on the different platforms:\n\nOn Habiticas website:\n\nNavigate to your Party and click “Invite to Party” on the right-hand side of the page.\n\nOn the Android app:\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Find Members” then tap the “By Invite” tab.\n\nOn the iOS app:\n\nTap “Party” from the Menu. Scroll to the Members section and tap “Invite a Member”.",
"faqQuestion21": "How do I cancel a pending invitation to my Party?",
"iosFaqAnswer21": "To cancel a pending invitation on Habiticas website:\n\n1. Click on Member list when viewing your Party\n\n2. Click the “Invites” tab\n\n3. Click the three dots beside the users invite you wish to cancel\n\n4. Choose “Cancel Invite”\n\n\n\nYoull be able to cancel a pending invitation from the mobile apps soon as well!",
"androidFaqAnswer21": "To cancel a pending invitation on Habiticas website:\n\n1. Click on Member list when viewing your Party\n\n2. Click the “Invites” tab\n\n3. Click the three dots beside the users invite you wish to cancel\n\n4. Choose “Cancel Invite”\n\n\n\nYoull be able to cancel a pending invitation from the mobile apps soon as well!",
"webFaqAnswer21": "To cancel a pending invitation on Habiticas website:\n\n1. Click on Member list when viewing your Party\n\n2. Click the “Invites” tab\n\n3. Click the three dots beside the users invite you wish to cancel\n\n4. Choose “Cancel Invite”\n\n\n\nYoull be able to cancel a pending invitation from the mobile apps soon as well!",
"iosFaqAnswer21": "To cancel a pending invitation on Habiticas website:\n\n1. Click on Member list when viewing your Party.\n2. Click the “Invites” tab.\n3. Click the three dots beside the users invite you wish to cancel.\n4. Choose “Cancel Invite”\n\nTo cancel a pending invitation on the Android app:\n\n1. Scroll down to your Member list when viewing your Party.\n2. At the bottom of the list, youll see your pending invites.\n3. Tap the “Cancel invitation” button.\n\nYoull be able to cancel a pending invitation from the iOS app soon as well!",
"androidFaqAnswer21": "To cancel a pending invitation on Habiticas website:\n\n1. Click on Member list when viewing your Party.\n2. Click the “Invites” tab.\n3. Click the three dots beside the users invite you wish to cancel.\n4. Choose “Cancel Invite”\n\nTo cancel a pending invitation on the Android app:\n\n1. Scroll down to your Member list when viewing your Party.\n2. At the bottom of the list, youll see your pending invites.\n3. Tap the “Cancel invitation” button.\n\nYoull be able to cancel a pending invitation from the iOS app soon as well!",
"webFaqAnswer21": "To cancel a pending invitation on Habiticas website:\n\n1. Click on Member list when viewing your Party.\n2. Click the “Invites” tab.\n3. Click the three dots beside the users invite you wish to cancel.\n4. Choose “Cancel Invite”\n\nTo cancel a pending invitation on the Android app:\n\n1. Scroll down to your Member list when viewing your Party.\n2. At the bottom of the list, youll see your pending invites.\n3. Tap the “Cancel invitation” button.\n\nYoull be able to cancel a pending invitation from the iOS app soon as well!",
"faqQuestion22": "How do I stop unwanted invitations?",
"iosFaqAnswer22": "Once you join a Party youll stop receiving any more invitations. If you want to prevent invites and future communications from a specific player, view their profile and click the Block button.\n\nIf you encounter a situation where you believe another player has broken our Community Guidelines in their name, profile, or a message they sent, please report any messages or reach out to us at admin@habitica.com.",
"androidFaqAnswer22": "Once you join a Party youll stop receiving any more invitations. If you want to prevent invites and future communications from a specific player, view their profile and click the Block button.\n\nIf you encounter a situation where you believe another player has broken our Community Guidelines in their name, profile, or a message they sent, please report any messages or reach out to us at admin@habitica.com.",
"webFaqAnswer22": "Once you join a Party youll stop receiving any more invitations. If you want to prevent invites and future communications from a specific player, view their profile and click the Block button.\n\nIf you encounter a situation where you believe another player has broken our Community Guidelines in their name, profile, or a message they sent, please report any messages or reach out to us at admin@habitica.com.",
"iosFaqAnswer22": "Once you join a Party youll stop receiving any more invitations. If you want to prevent invites and future communications from a specific player, view their profile and click the Block button. On mobile profiles, tap the three dots in the top corner then select “Block”.\n\nIf you encounter a situation where you believe another player has broken our Community Guidelines in their name, profile, or a message they sent, please report any messages or reach out to us at admin@habitica.com.",
"androidFaqAnswer22": "Once you join a Party youll stop receiving any more invitations. If you want to prevent invites and future communications from a specific player, view their profile and click the Block button. On mobile profiles, tap the three dots in the top corner then select “Block”.\n\nIf you encounter a situation where you believe another player has broken our Community Guidelines in their name, profile, or a message they sent, please report any messages or reach out to us at admin@habitica.com.",
"webFaqAnswer22": "Once you join a Party youll stop receiving any more invitations. If you want to prevent invites and future communications from a specific player, view their profile and click the Block button. On mobile profiles, tap the three dots in the top corner then select “Block”.\n\nIf you encounter a situation where you believe another player has broken our Community Guidelines in their name, profile, or a message they sent, please report any messages or reach out to us at admin@habitica.com.",
"faqQuestion23": "How do I filter the list of members searching for a Party?",
"iosFaqAnswer23": "At the moment there is no way to filter the list of members searching for a Party. However, we have plans to introduce filters in the future, such as class, level, and language.",
@@ -125,9 +125,9 @@
"webFaqAnswer23": "At the moment there is no way to filter the list of members searching for a Party. However, we have plans to introduce filters in the future, such as class, level, and language.",
"faqQuestion24": "How do I search for a Party on Android or iOS?",
"iosFaqAnswer24": "Were working on adding the ability to search for a Party and find Party members on mobile soon! Keep an eye out for Android version 4.2 and iOS version 3.8.",
"androidFaqAnswer24": "Were working on adding the ability to search for a Party and find Party members on mobile soon! Keep an eye out for Android version 4.2 and iOS version 3.8.",
"webFaqAnswer24": "Were working on adding the ability to search for a Party and find Party members on mobile soon! Keep an eye out for Android version 4.2 and iOS version 3.8.",
"iosFaqAnswer24": "We added the ability to look for a Party and find Party members in Android version 4.2! Be sure youre updated to the latest version to check it out. Solo players can look for a Party from the Party screen when they arent in one. Party leaders can browse the list of players looking for an invite by tapping “Find Members” above their Partys member list.\n\nSupport for the feature is coming to iOS in version 3.8, so keep an eye out soon!",
"androidFaqAnswer24": "We added the ability to look for a Party and find Party members in Android version 4.2! Be sure youre updated to the latest version to check it out. Solo players can look for a Party from the Party screen when they arent in one. Party leaders can browse the list of players looking for an invite by tapping “Find Members” above their Partys member list.\n\nSupport for the feature is coming to iOS in version 3.8, so keep an eye out soon!",
"webFaqAnswer24": "We added the ability to look for a Party and find Party members in Android version 4.2! Be sure youre updated to the latest version to check it out. Solo players can look for a Party from the Party screen when they arent in one. Party leaders can browse the list of players looking for an invite by tapping “Find Members” above their Partys member list.\n\nSupport for the feature is coming to iOS in version 3.8, so keep an eye out soon!",
"iosFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](https://habitica.fandom.com/wiki/FAQ), come ask in the Tavern chat under Menu > Tavern! We're happy to help.",
"androidFaqStillNeedHelp": "If you have a question that isn't on this list or on the [Wiki FAQ](https://habitica.fandom.com/wiki/FAQ), come ask in the Tavern chat under Menu > Tavern! We're happy to help.",
+51 -2
View File
@@ -477,6 +477,15 @@
"weaponSpecialSpring2023HealerText": "Lilium Pollen",
"weaponSpecialSpring2023HealerNotes": "With a puff and a sparkle, you deploy new growth, joy, and color. Increases Intelligence by <%= int %>. Limited Edition 2023 Spring Gear.",
"weaponSpecialSummer2023RogueText": "Guppy Fan",
"weaponSpecialSummer2023RogueNotes": "No gup, these things are tricky to learn. But impressive when you do! Increases Strength by <%= str %>. Limited Edition 2023 Summer Gear.",
"weaponSpecialSummer2023WarriorText": "Water Elemental Sword",
"weaponSpecialSummer2023WarriorNotes": "Summon powerful sprays of water to clear your path of obstacles. Increases Strength by <%= str %>. Limited Edition 2023 Summer Gear.",
"weaponSpecialSummer2023MageText": "Fish",
"weaponSpecialSummer2023MageNotes": "These friendly fish will stay by your side as the best accountability buddies in the ocean. Increases Intelligence by <%= int %>. Limited Edition 2023 Summer Gear.",
"weaponSpecialSummer2023HealerText": "Swaying Kelp",
"weaponSpecialSummer2023HealerNotes": "They may look frondly, but they get quite grumpy if you call them 'plants'. Increases Intelligence by <%= int %>. Limited Edition 2023 Summer Gear.",
"weaponMystery201411Text": "Pitchfork of Feasting",
"weaponMystery201411Notes": "Stab your enemies or dig in to your favorite foods - this versatile pitchfork does it all! Confers no benefit. November 2014 Subscriber Item.",
"weaponMystery201502Text": "Shimmery Winged Staff of Love and Also Truth",
@@ -506,7 +515,9 @@
"weaponMystery202211Text": "Electromancer Staff",
"weaponMystery202211Notes": "Harness the awesome power of a lightning storm with this staff. Confers no benefit. November 2022 Subscriber Item.",
"weaponMystery202212Text": "Glacial Wand",
"weaponMystery202212Notes": "The glowing snowflake in this wand holds the power to warm hearts on even the coldest winter night! Confers no benefit. December 2022 Subscriber Item.",
"weaponMystery202212Notes": "The glowing snowflake in this wand holds the power to warm hearts on even the coldest winter night! Confers no benefit. December 2022 Subscriber Item.",
"weaponMystery202306Text": "Rainbow Umbrella",
"weaponMystery202306Notes": "Shine proud and bring a shimmering prism of color wherever you go! Confers no benefit. June 2023 Subscriber Item.",
"weaponMystery301404Text": "Steampunk Cane",
"weaponMystery301404Notes": "Excellent for taking a turn about town. March 3015 Subscriber Item. Confers no benefit.",
@@ -1151,6 +1162,15 @@
"armorSpecialSpring2023HealerText": "Lily Leaf Gown",
"armorSpecialSpring2023HealerNotes": "A sweep of verdant glory to make you the envy of the Party. Increases Constitution by <%= con %>. Limited Edition 2023 Spring Gear.",
"armorSpecialSummer2023RogueText": "Guppy Wrap",
"armorSpecialSummer2023RogueNotes": "Gup top! Down low! Too slow... Increases Perception by <%= per %>. Limited Edition 2023 Summer Gear.",
"armorSpecialSummer2023WarriorText": "Goldfish Armor",
"armorSpecialSummer2023WarriorNotes": "Goldfish Warriors actually have excellent memories because they always keep their Dailies and To Do's organized in lists. Increases Constitution by <%= con %>. Limited Edition 2023 Summer Gear.",
"armorSpecialSummer2023MageText": "Coral Robes",
"armorSpecialSummer2023MageNotes": "Feel protected and comfortable in these flowing robes, perfectly colored for underwater adventures. Increases Intelligence by <%= int %>. Limited Edition 2023 Summer Gear.",
"armorSpecialSummer2023HealerText": "Kelp Kirtle",
"armorSpecialSummer2023HealerNotes": "Hold fast to your goals and convictions in this elegant green gown. Increases Constitution by <%= con %>. Limited Edition 2023 Summer Gear.",
"armorMystery201402Text": "Messenger Robes",
"armorMystery201402Notes": "Shimmering and strong, these robes have many pockets to carry letters. Confers no benefit. February 2014 Subscriber Item.",
"armorMystery201403Text": "Forest Walker Armor",
@@ -1267,6 +1287,10 @@
"armorMystery202212Notes": "The universe can be cold, but this charming dress will keep you cozy as you fly. Confers no benefit. December 2022 Subscriber Item.",
"armorMystery202304Text": "Tiptop Teapot Armor",
"armorMystery202304Notes": "Here is your handle and here is your spout! Confers no benefit. April 2023 Subscriber Item.",
"armorMystery202306Text": "Rainbow Parka",
"armorMystery202306Notes": "No ones going to rain on your parade! And if they try, youll stay colorful and dry! Confers no benefit. June 2023 Subscriber Item.",
"armorMystery202307Text": "Kraken's Tentacles",
"armorMystery202307Notes": "Suction cups have the best traction on the sea floor and on the sides of wayward ships. Confers no benefit. July 2023 Subscriber Item.",
"armorMystery301404Text": "Steampunk Suit",
"armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.",
@@ -1457,6 +1481,12 @@
"armorArmoireBasketballUniformNotes": "Wondering whats printed on the back of this uniform? Its your lucky number, of course! Increases Perception by <% per %>. Enchanted Armoire: Old Timey Basketball Set (Item 1 of 2).",
"armorArmoirePaintersApronText": "Painter's Apron",
"armorArmoirePaintersApronNotes": "This apron can protect your clothes from paint and your creative projects from harsh critiques. Increases Constitution by <%= con %>. Enchanted Armoire: Painter Set (Item 1 of 4).",
"armorArmoireStripedRainbowShirtText": "Striped Rainbow Shirt",
"armorArmoireStripedRainbowShirtNotes": "The colors of the rainbow have never looked so good before. Be bold! Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Rainbow Set (Item 1 of 2).",
"armorArmoireDiagonalRainbowShirtText": "Diagonal Rainbow Shirt",
"armorArmoireDiagonalRainbowShirtNotes": "A splash of color with a dash of style. Be joyful! Increases Constitution and Perception by <%= attrs %> each. Enchanted Armoire: Rainbow Set (Item 2 of 2).",
"armorArmoireAdmiralsUniformText": "Admiral's Uniform",
"armorArmoireAdmiralsUniformNotes": "We salute you! This naval uniform signals that youre ready to take command of your tasks as well as a ship. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Admirals Set (Item 2 of 2).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -1907,6 +1937,15 @@
"headSpecialSpring2023HealerText": "Lily Bloom",
"headSpecialSpring2023HealerNotes": "This brilliant and colorful display shares a color scheme with the Orb of Rebirth! How symbolic! Increases Intelligence by <%= int %>. Limited Edition 2023 Spring Gear.",
"headSpecialSummer2023RogueText": "Guppy Cap",
"headSpecialSummer2023RogueNotes": "Gup, two, three, four! Can't get eaten, got tasks to score! Increases Perception by <%= per %>. Limited Edition 2023 Summer Gear.",
"headSpecialSummer2023WarriorText": "Goldfish Fin",
"headSpecialSummer2023WarriorNotes": "This fabulous fin provides stability as you swim toward troublesome tasks ahead of you. Increases Strength by <%= str %>. Limited Edition 2023 Summer Gear.",
"headSpecialSummer2023MageText": "Coral Antlers",
"headSpecialSummer2023MageNotes": "The wisdom of an entire ecosystem is with you when you work your marine magic. Increases Perception by <%= per %>. Limited Edition 2023 Summer Gear.",
"headSpecialSummer2023HealerText": "Kelp Crown",
"headSpecialSummer2023HealerNotes": "They're not snakes! You can open your eyes, it's safe! Increases Intelligence by <%= int %>. Limited Edition 2023 Summer Gear.",
"headSpecialGaymerxText": "Rainbow Warrior Helm",
"headSpecialGaymerxNotes": "In celebration of the GaymerX Conference, this special helmet is decorated with a radiant, colorful rainbow pattern! GaymerX is a game convention celebrating LGTBQ and gaming and is open to everyone.",
@@ -2237,7 +2276,9 @@
"headArmoireBeaniePropellerHatText": "Beanie Propeller Hat",
"headArmoireBeaniePropellerHatNotes": "This isnt the time to keep your feet on the ground! Spin this little propeller and rise as high as your ambitions will take you. Increases all stats by <%= attrs %>. Enchanted Armoire: Independent Item.",
"headArmoirePaintersBeretText": "Painter's Beret",
"headArmoirePaintersBeretNotes": "See the world with a more artistic eye when you wear this jaunty beret. Increases Perception by <%= per %>. Enchanted Armoire: Painter Set (Item 2 of 4).",
"headArmoirePaintersBeretNotes": "See the world with a more artistic eye when you wear this jaunty beret. Increases Perception by <%= per %>. Enchanted Armoire: Painter Set (Item 2 of 4).",
"headArmoireAdmiralsBicorneText": "Admiral's Bicorne Hat",
"headArmoireAdmiralsBicorneNotes": "Hats off to you! Wearing this two-cornered hat will make you wiser, brighter, braver...and taller. Increases Intelligence and Perception by <%= attrs %> each. Enchanted Armoire: Admirals Set (Item 1 of 2).",
"offhand": "off-hand item",
"offHandCapitalized": "Off-Hand Item",
@@ -2490,6 +2531,11 @@
"shieldSpecialSpring2023HealerText": "Lily Corsage",
"shieldSpecialSpring2023HealerNotes": "An accent for a healing visit, or part of a ritual for attending a springtime dance! Increases Constitution by <%= con %>. Limited Edition 2023 Spring Gear.",
"shieldSpecialSummer2023WarriorText": "Goldfish Spirit",
"shieldSpecialSummer2023WarriorNotes": "Summon this goldfish spirit for an extra burst of reassurance and companionship during a fight. Increases Constitution by <%= con %>. Limited Edition 2023 Summer Gear.",
"shieldSpecialSummer2023HealerText": "Sea Urchin",
"shieldSpecialSummer2023HealerNotes": "You conceal and shelter it. It dissuades nosy monsters from coming too close. Perfect symbiosis! Increases Constitution by <%= con %>. Limited Edition 2023 Summer Gear.",
"shieldMystery201601Text": "Resolution Slayer",
"shieldMystery201601Notes": "This blade can be used to parry away all distractions. Confers no benefit. January 2016 Subscriber Item.",
"shieldMystery201701Text": "Time-Freezer Shield",
@@ -2940,6 +2986,9 @@
"headAccessoryMystery202302Notes": "The purr-fect accessory to set off your enchanting grin. Confers no benefit. February 2023 Subscriber Item.",
"headAccessoryMystery202305Text": "Eventide Horns",
"headAccessoryMystery202305Notes": "These horns glow with reflected moonlight. Confers no benefit. May 2023 Subscriber Item.",
"headAccessoryMystery202307Text": "Kraken's Crown",
"headAccessoryMystery202307Notes": "This mighty circlet summons cyclones and stormy weather! Confers no benefit. July 2023 Subscriber Item.",
"headAccessoryMystery301405Text": "Headwear Goggles",
"headAccessoryMystery301405Notes": "\"Goggles are for your eyes,\" they said. \"Nobody wants goggles that you can only wear on your head,\" they said. Hah! You sure showed them! Confers no benefit. August 3015 Subscriber Item.",
+1 -1
View File
@@ -208,7 +208,7 @@
"userSentMessage": "<span class=\"notification-bold\"><%- user %></span> sent you a message",
"letsgo": "Let's Go!",
"selected": "Selected",
"howManyToBuy": "How many would you like to buy?",
"howManyToBuy": "How many would you like to purchase?",
"contactForm": "Contact the Moderation Team",
"loadEarlierMessages": "Load Earlier Messages",
"askQuestion": "Ask a Question",
+1 -1
View File
@@ -130,7 +130,7 @@
"sendGiftHeading": "Send Gift to <%= name %>",
"sendGiftGemsBalance": "From <%= number %> Gems",
"sendGiftCost": "Total: $<%= cost %> USD",
"sendGiftTotal": "Total:",
"sendTotal": "Total:",
"sendGiftFromBalance": "From Balance",
"sendGiftPurchase": "Purchase",
"sendGiftLabel": "Would you like to send a gift message?",
+4
View File
@@ -199,6 +199,10 @@
"spring2023HummingbirdWarriorSet": "Hummingbird (Warrior)",
"spring2023MoonstoneMageSet": "Moonstone (Mage)",
"spring2023LilyHealerSet": "Lily (Healer)",
"summer2023GoldfishWarriorSet": "Goldfish (Warrior)",
"summer2023GuppyRogueSet": "Guppy (Rogue)",
"summer2023KelpHealerSet": "Kelp (Healer)",
"summer2023CoralMageSet": "Coral (Mage)",
"eventAvailability": "Available for purchase until <%= date(locale) %>.",
"eventAvailabilityReturning": "Available for purchase until <%= availableDate(locale) %>. This potion was last available in <%= previousDate(locale) %>.",
"dateEndJanuary": "January 31",
+1
View File
@@ -31,6 +31,7 @@
"howManyToSell": "How many would you like to sell?",
"yourBalance": "Your balance:",
"sell": "Sell",
"sellItems": "Sell Items",
"buyNow": "Buy Now",
"sortByNumber": "Number",
"featuredItems": "Featured Items!",
+1 -1
View File
@@ -586,7 +586,7 @@
"questNudibranchUnlockText": "Unlocks Nudibranch Eggs for purchase in the Market",
"splashyPalsText": "Splashy Pals Quest Bundle",
"splashyPalsNotes": "Contains 'The Dilatory Derby', 'Guide the Turtle', and 'Wail of the Whale'. Available until July 31.",
"splashyPalsNotes": "Contains 'The Dilatory Derby', 'Guide the Turtle', and 'Wail of the Whale'. Available until June 30.",
"questHippoText": "What a Hippo-Crite",
"questHippoNotes": "You and @awesomekitty collapse into the shade of a palm tree, exhausted. The sun beats down over the Sloensteadi Savannah, scorching the ground below. Its been a productive day so far, conquering your Dailies, and this oasis looks like a nice place to take a break and refresh. Stooping near the water to get a drink, you stumble back in shock as a massive hippopotamus rises. “Resting so soon? Dont be so lazy, get back to work.” You try and protest that youve been working hard and need a break, but the hippo isnt having any of it.<br><br>@khdarkwolf whispers to you, “Notice how its lounging around all day but has the nerve to call you lazy? Its the Hippo-Crite!”<br><br>Your friend @jumorales nods. “Lets show it what hard work looks like!”",
+6 -3
View File
@@ -150,6 +150,8 @@
"mysterySet202303": "Mane Character Set",
"mysterySet202304": "Tiptop Teapot Set",
"mysterySet202305": "Eventide Dragon Set",
"mysterySet202306": "Razzle Dazzle Rainbow Set",
"mysterySet202307": "Perilous Kraken Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
@@ -194,8 +196,8 @@
"subscriptionBenefit5": "Receive the Royal Purple Jackalope pet when you become a new subscriber.",
"subscriptionBenefit6": "Earn Mystic Hourglasses to purchase items in the Time Travelers Shop!",
"purchaseAll": "Purchase Set",
"gemsRemaining": "Gems remaining",
"notEnoughGemsToBuy": "You are unable to buy that amount of Gems",
"gemsRemaining": "remaining",
"notEnoughGemsToBuy": "No more Gems available for purchase this month. More will become available within the first 3 days of each month.",
"subscribersReceiveBenefits": "Subscribers receive these useful benefits!",
"monthlyMysteryItems": "Monthly Mystery Items",
"doubleDropCap": "Double the Drops",
@@ -217,5 +219,6 @@
"haveNonRecurringSub": "You have a non-recurring gift subscription.",
"switchToRecurring": "Switch to a recurring subscription?",
"continueGiftSubBenefits": "Want to continue your benefits? You can start a new subscription before your gifted one runs out to keep your benefits active.",
"subscriptionCreditConversion": "Starting a new subscription will convert any remaining months to credit that will be used after the recurring subscription is canceled."
"subscriptionCreditConversion": "Starting a new subscription will convert any remaining months to credit that will be used after the recurring subscription is canceled.",
"monthlyGems": "Monthly Gems:"
}
+3 -1
View File
@@ -133,5 +133,7 @@
"addTags": "Add tags...",
"enterTag": "Enter a tag",
"pressEnterToAddTag": "Press Enter to add tag: '<%= tagName %>'",
"taskSummary": "<%= type %> Summary"
"taskSummary": "<%= type %> Summary",
"scoreUp": "Score up",
"scoreDown": "Score down"
}
@@ -122,5 +122,6 @@
"achievementZodiacZookeeper": "12 Zodiac Zookeeper",
"achievementZodiacZookeeperModalText": "You collected all the 12 zodiac pets!",
"achievementShadyCustomer": "shadow man",
"achievementShadeOfItAll": "The Beginning of the Shade"
"achievementShadeOfItAll": "The Beginning of the Shade",
"achievementDomesticatedModalText": "Ye gathered ev'ry critter matey!"
}
+4 -1
View File
@@ -147,5 +147,8 @@
"achievementPolarProText": "¡Ha eclosionado todos los colores estándar para mascotas Polares: Osos, Zorros, Pinguinos, Ballenas y Lobos!",
"achievementPlantParent": "Progenitor de las Plantas",
"achievementPlantParentText": "¡Ha eclosionado todos los colores estándar para las mascotas Planta: Cáctus y Esqueje de árbol!",
"achievementPlantParentModalText": "¡Has coleccionado todas las Mascotas Planta!"
"achievementPlantParentModalText": "¡Has coleccionado todas las Mascotas Planta!",
"achievementDinosaurDynasty": "Dinastía de Dinosaurios",
"achievementDinosaurDynastyModalText": "¡Has recogido todas las mascotas de pájaros y dinosaurios!",
"achievementDinosaurDynastyText": "Ha incubado todos los colores estándar de mascotas, de aves y dinosaurios: halcón, búho, loro, pavo real, pingüino, gallo, pterodáctilo, tiranosaurio rex, triceratops y velociraptor!"
}
+51 -47
View File
@@ -3,14 +3,14 @@
"stringNotFound": "No se encontró la cadena '<%= string %>'.",
"habitica": "Habitica",
"onward": "¡Adelante!",
"done": "Hecho",
"done": "Completado",
"gotIt": "¡Recibido!",
"titleTimeTravelers": "Viajeros del tiempo",
"titleSeasonalShop": "Tienda de temporada",
"saveEdits": "Guardar cambios",
"showMore": "Mostrar más",
"showLess": "Mostrar menos",
"markdownHelpLink": "Ayuda con el formato Markdown",
"markdownHelpLink": "Ayuda con el formato Reducción",
"bold": "**Negrita**",
"markdownImageEx": "![texto alt obligatorio](https://habitica.com/cake.png \"título opcional al pasar el ratón\")",
"code": "`código`",
@@ -41,16 +41,16 @@
"continue": "Continuar",
"accept": "Aceptar",
"reject": "Rechazar",
"neverMind": "No importa",
"neverMind": "Olvídalo",
"notEnoughGems": "No tienes suficientes gemas",
"alreadyHave": "Vaya, ya tienes este artículo. ¡No necesitas comprarlo otra vez!",
"alreadyHave": "Vaya! ya tienes este artículo. ¡No necesitas comprarlo otra vez!",
"delete": "Eliminar",
"gemsPopoverTitle": "Gemas",
"gems": "Gemas",
"needMoreGems": "¿Necesitas más gemas?",
"needMoreGemsInfo": "¡Compra Gemas ahora, o suscríbete para comprar Gemas con Oro, conseguir objetos misteriosos mensuales, disfrutar mayores botines y más!",
"needMoreGemsInfo": "¡Compra Gemas ahora, o suscríbete para comprar Gemas con Oro, recibe objetos misteriosos mensualmente, disfruta botines mas fréquentes y más!",
"veteran": "Veterano",
"veteranText": "Ha sobrevivido a Habit The Grey (nuestro sito web pre-Angular) y se ha ganado muchas cicatrices por sus fallos.",
"veteranText": "Ha sobrevivido a Habit The Grey (nuestro sito web pre-Angular) y ha recibido muchas cicatrices de sus fallos.",
"originalUser": "¡Usuario original!",
"originalUserText": "Uno de los <em>primerísimos</em> usuarios... ¡Este sí que es un alpha tester!",
"habitBirthday": "Fiesta de cumpleaños de Habitica",
@@ -58,11 +58,11 @@
"habitBirthdayPluralText": "¡Participó en <%= count %> Fiestas de Cumpleaños de Habitica!",
"habiticaDay": "Bautizo de Habitica",
"habiticaDaySingularText": "¡Celebró el bautizo de Habitica! Gracias por ser un usuario magnífico.",
"habiticaDayPluralText": "¡Participó en <%= count %> onomásticas de Habitica! Gracias por ser un magnífico usuario.",
"habiticaDayPluralText": "¡Participó en <%= count %> bautizos de Habitica! Gracias por ser un magnífico usuario.",
"achievementDilatory": "Salvador de Dilatoria",
"achievementDilatoryText": "¡Ayudó a derrotar al Dread Drag'on de Dilatoria durante el evento Summer Splash del 2014!",
"costumeContest": "Participante disfrazado",
"costumeContestText": "Has participado en el Concurso de Disfraces de Habitoween. ¡Mira algunas de las estupendas entradas en blog.habitrpg.com!",
"costumeContestText": "Participo en el Concurso de Disfraces de Habitoween. ¡Mira algunas de las estupendas entradas en blog.habitrpg.com!",
"costumeContestTextPlural": "Has participado en <%= count %> Concursos de Disfraces de Habitoween. ¡Echa un vistazo a las estupendas entradas en blog.habitrpg.com!",
"newPassSent": "Si tenemos constancia de tu correo electrónico, te hemos enviado un mensaje con las instrucciones a seguir para establecer una nueva contraseña.",
"error": "Error",
@@ -74,27 +74,27 @@
"audioTheme": "Tema de audio",
"audioTheme_off": "Desactivado",
"audioTheme_danielTheBard": "Daniel el Bardo",
"audioTheme_wattsTheme": "Tema Watts",
"audioTheme_gokulTheme": "Tema Gokul",
"audioTheme_luneFoxTheme": "Tema LuneFox",
"audioTheme_rosstavoTheme": "Tema Rosstavo",
"audioTheme_dewinTheme": "El tema de Dewin´s",
"audioTheme_airuTheme": "Tema Airu",
"audioTheme_beatscribeNesTheme": "Tema Beatscribe's NES",
"audioTheme_arashiTheme": "Tema Arashi",
"audioTheme_triumphTheme": "Tema del Triunfo",
"audioTheme_lunasolTheme": "Tema de Lunasol",
"audioTheme_spacePenguinTheme": "Tema del Pingüino Espacial",
"audioTheme_maflTheme": "Tema MAFL",
"audioTheme_pizildenTheme": "Tema de Pizilden",
"audioTheme_farvoidTheme": "Tema de Farvoid",
"reportBug": "Notificar un error",
"audioTheme_wattsTheme": "El tema de Watts",
"audioTheme_gokulTheme": "El tema de Gokul",
"audioTheme_luneFoxTheme": "El tema de LuneFox",
"audioTheme_rosstavoTheme": "El tema de Rosstavo",
"audioTheme_dewinTheme": "El tema de Dewin",
"audioTheme_airuTheme": "El tema de Airu",
"audioTheme_beatscribeNesTheme": "El tema de Beatscribe's NES",
"audioTheme_arashiTheme": "El tema de Arashi",
"audioTheme_triumphTheme": "El tema del Triunfo",
"audioTheme_lunasolTheme": "El tema de Lunasol",
"audioTheme_spacePenguinTheme": "El tema del Pingüino Espacial",
"audioTheme_maflTheme": "El tema de MAFL",
"audioTheme_pizildenTheme": "El tema de Pizilden",
"audioTheme_farvoidTheme": "El tema de Farvoid",
"reportBug": "Reportar un error",
"overview": "Introducción para nuevos usuarios",
"dateFormat": "Formato de fecha",
"achievementStressbeast": "Salvador de Stoïkalm",
"achievementStressbeastText": "¡Ayudó a derrotar a la Abominable Bestia del Estrés durante el evento Winter Wonderland de 2014!",
"achievementStressbeastText": "¡Ayudó a derrotar a la Bestia Abominable del Estrés durante el evento Paraíso Invernal de 2014!",
"achievementBurnout": "Salvador de los Campos Florecientes",
"achievementBurnoutText": "¡Ayudó a derrotar al Burnout y restaurar los Espíritus del Cansancio durante el evento Fall Festival de 2015!",
"achievementBurnoutText": "¡Ayudó a derrotar al Burnout y restaurar los Espíritus del Cansancio durante el evento Festival de Otoño de 2015!",
"achievementBewilder": "Salvador de Calavuelos",
"achievementBewilderText": "¡Ayudó a derrotar al Apa-bullador durante el Evento de Primavera de 2016!",
"achievementDysheartener": "Salvador de los Destrozados",
@@ -104,19 +104,19 @@
"cardReceived": "Recibiste una <span class=\"notification-bold-blue\"><%= card %></span>",
"greetingCard": "Tarjeta de saludo",
"greetingCardExplanation": "¡Ambos recibís el logro Alegres Amigotes!",
"greetingCardNotes": "Enviar una tarjeta para mandar un saludo a un miembro del equipo.",
"greetingCardNotes": "Enviar una tarjeta a un miembro del equipo.",
"greeting0": "¡Hola!",
"greeting1": "Solo quería saludar :)",
"greeting2": "(saluda con emoción)",
"greeting3": "¡Ey!",
"greetingCardAchievementTitle": "Alegre Amigote",
"greetingCardAchievementText": "¡Eh! ¡Hola! ¿Qué tal? <%= count %> tarjetas de saludo enviadas o recibidas.",
"greetingCardAchievementText": "¡Eh! ¡Hola! ¿Qué tal? <%= count %> tarjetas enviadas o recibidas.",
"thankyouCard": "Tarjeta de agradecimiento",
"thankyouCardExplanation": "¡Ambos recibís el logro Agradablemente Agradecido!",
"thankyouCardNotes": "Envía una tarjeta de agradecimiento a un miembro de tu equipo.",
"thankyou0": "¡Muchas gracias!",
"thankyou1": "¡Gracias, gracias, gracias!",
"thankyou2": "Te envío mil gracias.",
"thankyou2": "Envíando mil gracias.",
"thankyou3": "Estoy muy agradecido: ¡gracias!",
"thankyouCardAchievementTitle": "Agradablemente Agradecido",
"thankyouCardAchievementText": "¡Gracias por ser agradecido! <%= count %> tarjetas de agradecimiento enviadas o recibidas.",
@@ -126,31 +126,31 @@
"birthday0": "¡Feliz cumpleaños!",
"birthdayCardAchievementTitle": "Prosperidad Cumpleañera",
"birthdayCardAchievementText": "¡Muchas felicidades! <%= count %> tarjetas de cumpleaños enviadas o recibidas.",
"congratsCard": "Carta de Enhorabuena",
"congratsCard": "Carta de felicitaciónes",
"congratsCardExplanation": "¡Ambos habéis recibido el logro de Compañero Felicitador!",
"congratsCardNotes": "Envía una Carta de Enhorabuena a un miembro del equipo.",
"congrats0": Enhorabuena por tu éxito!",
"congratsCardNotes": "Envía una Carta de felicitaciónes a un miembro del equipo.",
"congrats0": Felicitaciónes por tu éxito!",
"congrats1": "¡Estoy orgulloso de ti!",
"congrats2": "¡Bien hecho!",
"congrats3": Un aplauso para ti!",
"congrats3": Aplauso para ti!",
"congrats4": "¡Disfruta de tu bien merecido éxito!",
"congratsCardAchievementTitle": "Compañero Congratulatorio",
"congratsCardAchievementText": "¡Es genial celebrar los logros de tus amigos! Enviaste o recibiste <%= count %> cartas de enhorabuena.",
"getwellCard": "Carta de Ponte Bueno",
"congratsCardAchievementText": "¡Es genial celebrar los logros de tus amigos! Enviaste o recibiste <%= count %> cartas de felicitaciónes.",
"getwellCard": "Carta de recupérate pronto",
"getwellCardExplanation": "¡Ambos habéis recibido el logro de Confidente Solícito!",
"getwellCardNotes": "Envía una carta de Ponte Bueno a un miembro del equipo.",
"getwellCardNotes": "Envía una carta de recupérate pronto a un miembro del equipo.",
"getwell0": "¡Espero que te recuperes pronto!",
"getwell1": "¡Cuídate! <3",
"getwell2": "¡Te tengo en mis pensamientos!",
"getwell3": "¡Siento que no te encuentres bien!",
"getwellCardAchievementTitle": "Confidente Cuidadoso",
"getwellCardAchievementText": "Siempre son de agrado los deseos de mejoría. Enviaste o recibiste <%= count %> cartas de Ponte Bueno.",
"getwellCardAchievementText": "Siempre son de agradecidos los deseos de salud. Enviaste o recibiste <%= count %> cartas de recupérate pronto.",
"goodluckCard": "Carta de Buena Suerte",
"goodluckCardExplanation": "¡Ambos recibís el logro Carta de la Suerte!",
"goodluckCardNotes": "Envía una carta de Buena Suerte a un miembro del equipo.",
"goodluck0": "¡Que la suerte te acompañe!",
"goodluck1": "¡Te deseo un montón de suerte!",
"goodluck2": "¡Espero que la suerte esté de lado hoy y siempre!",
"goodluck2": "¡Espero que la suerte esté a tu lado hoy y siempre!",
"goodluckCardAchievementTitle": "Carta de la Suerte",
"goodluckCardAchievementText": "¡Los deseos de buena suerte son un gran estímulo! Enviaste o recibiste <%= count %> cartas de Buena Suerte.",
"streakAchievement": "¡Has obtenido un logro de racha!",
@@ -163,8 +163,8 @@
"orderBy": "Ordenar por <%= item %>",
"you": "(tú)",
"loading": "Cargando...",
"userIdRequired": "Es necesaria un ID de usuario",
"resetFilters": "Limpiar todos los filtros",
"userIdRequired": "Es necesario un ID de usuario",
"resetFilters": "Borrar todos los filtros",
"applyFilters": "Aplicar filtros",
"wantToWorkOn": "Quiero trabajar en:",
"categories": "Categorías",
@@ -174,11 +174,11 @@
"health_wellness": "Salud y Bienestar",
"self_care": "Cuidado de ti mismo",
"habitica_official": "Oficial de Habitica",
"academics": "Académico",
"academics": "Académica",
"advocacy_causes": "Defensa + Causas",
"entertainment": "Entretenimiento",
"finance": "Finanzas",
"health_fitness": "Salud + Ejercicios",
"health_fitness": "Salud + Ejercicio",
"hobbies_occupations": "Aficiones + Ocupaciones",
"location_based": "Basado en la localización",
"mental_health": "Salud Mental + Cuidado de ti mismo",
@@ -186,11 +186,11 @@
"self_improvement": "Autosuperación",
"spirituality": "Espiritualidad",
"time_management": "Manejo del Tiempo + Responsabilidad",
"recovery_support_groups": "Recuperación + Grupos de Ayuda",
"recovery_support_groups": "Recuperación + Grupos de Apoyo",
"dismissAll": "Ignorar todas",
"messages": "Mensajes",
"emptyMessagesLine1": "No tienes ningún mensaje",
"emptyMessagesLine2": "Puedes enviar un nuevo mensaje a un usuario visitando su perfil y haciendo clic en el botón \"Mensaje\".",
"emptyMessagesLine2": "Puedes enviar un nuevo mensaje a un usuario visitando su perfil y presionando \"Mensaje\".",
"userSentMessage": "<span class=\"notification-bold\"><%- user %></span> te ha enviado un mensaje",
"letsgo": "¡Vamos!",
"selected": "Seleccionado",
@@ -199,8 +199,8 @@
"options": "Opciones",
"demo": "Demo",
"loadEarlierMessages": "Cargar Mensajes Anteriores",
"finish": "Terminar",
"congratulations": Enhorabuena!",
"finish": "Finalizar",
"congratulations": Felicidades!",
"onboardingAchievs": "Logros de incorporación",
"reportEmailError": "Por favor, introduzca un correo electrónico válido",
"reportDescription": "Descripción",
@@ -212,6 +212,10 @@
"reportEmailText": "Esto solo se utilizará para contactar contigo en relación con el informe de error.",
"reportEmailPlaceholder": "Tu correo electrónico",
"reportDescriptionText": "Si lo crees conveniente, incluye capturas de pantalla o errores de la consola de Javascript.",
"reportSentDescription": "Nos pondremos en contacto contigo en cuanto nuestro equipo haya podido estudiarlo. Gracias por informarnos del problema.",
"askQuestion": "Haz una pregunta"
"reportSentDescription": "Nos pondremos en contacto contigo en cuanto nuestro equipo haya podido investigar. Gracias por informarnos del problema.",
"askQuestion": "Haz una pregunta",
"skipExternalLinkModal": "Mantenga presionada la tecla CTRL (Windows) o Comando (Mac) al hacer clic en un enlace para omitir este modal.",
"refreshList": "Actualizar lista",
"leaveHabitica": "Estás a punto de salir de Habitica.com",
"leaveHabiticaText": "Habitica no es responsable del contenido de ningún sitio web vinculado que no sea propiedad ni esté operado por HabitRPG.<br>Tenga en cuenta que las prácticas de estos sitios web pueden diferir de las pautas de la comunidad de Habitica."
}
+4 -1
View File
@@ -147,5 +147,8 @@
"achievementPolarProModalText": "Vous avez collecté tous les familiers polaires !",
"achievementPlantParent": "Protecteur des plantes",
"achievementPlantParentText": "A fait éclore toutes les couleurs standards de familiers plantes : Cactus et arbustes !",
"achievementPlantParentModalText": "Vous avec collecté tous les familiers plantes !"
"achievementPlantParentModalText": "Vous avec collecté tous les familiers plantes !",
"achievementDinosaurDynasty": "Dynastie des dinosaures",
"achievementDinosaurDynastyText": "A fait éclore toutes les couleurs standard d'oiseaux et de dinosaures : faucon, hibou, perroquet, paon, pingouin, coq, ptérodactyle, T-Rex, tricératops et vélociraptor !",
"achievementDinosaurDynastyModalText": "Vous avez collecté tous les animaux de compagnie d'oiseau et de dinosaure!"
}
+3 -2
View File
@@ -98,7 +98,7 @@
"toDo": "À faire",
"tourStatsPage": "Ceci est votre page de statistiques ! Remportez des succès en complétant vos tâches.",
"tourTavernPage": "Voici la taverne, un lieu de discussions pour tout âge ! Vous pouvez empêcher vos quotidiennes de vous faire du mal en cas de maladie ou de voyage en cliquant sur \"Désactiver les dégâts\". Venez dire bonjour !",
"tourPartyPage": "Votre équipe vous aidera à rester responsable. Invitez des amis pour déverrouiller un parchemin de quête !",
"tourPartyPage": "Bienvenue dans votre nouvelle équipe ! Vous pouvez inviter d'autres personnes à votre équipe en utilisant leur pseudo, leur email, ou en utilisant la liste des personnes cherchant une équipe, pour gagner le parchemin de quête exclusif de la Basi-liste.<br/><br/>Accédez à la <a href='/static/faq#parties'>FAQ</a> dans le menu d'aide pour apprendre le fonctionnement des équipes.",
"tourGuildsPage": "Les guildes sont des groupes de discussion autour de centres d'intérêts communs, créés par les joueurs et pour les joueurs. Naviguez dans la liste des guildes et rejoignez celles qui vous intéressent. Jetez un œil à la guilde la plus populaire, la guilde d'aide de Habitica (\"Habitica Help\"), où tout le monde peut poser des questions concernant Habitica !",
"tourChallengesPage": "Les défis sont des listes de tâches à thème créées par des membres ! Rejoindre un défi ajoutera ses tâches à votre compte. Rivalisez avec d'autres membres pour gagner des gemmes !",
"tourMarketPage": "Chaque fois que vous réalisez vos tâches, vous avez une chance d'obtenir un œuf, une potion d'éclosion ou de la nourriture de familier. Vous pouvez aussi acheter ces objets ici.",
@@ -133,5 +133,6 @@
"amountExp": "<%= amount %> expérience",
"helpSupportHabitica": "Contribuez à soutenir Habitica",
"groupsPaymentSubBilling": "Votre prochaine date de facturation est <strong><%= renewalDate %></strong>.",
"groupsPaymentAutoRenew": "Cet abonnement se renouvellera automatiquement jusqu'à son annulation. Si vous devez l'annuler, vous pouvez le faire depuis l'onglet de facturation de groupe."
"groupsPaymentAutoRenew": "Cet abonnement se renouvellera automatiquement jusqu'à son annulation. Si vous devez l'annuler, vous pouvez le faire depuis l'onglet de facturation de groupe.",
"sellItems": "Vendre des objets"
}
+4 -1
View File
@@ -109,5 +109,8 @@
"earnedAchievement": "Ghnóthaigh tú éacht!",
"viewAchievements": "Féach ar Éachtaí",
"letsGetStarted": "Ar aghaidh linn!",
"achievementMindOverMatter": "Aigne Thar Ábhar"
"achievementMindOverMatter": "Aigne Thar Ábhar",
"achievementZodiacZookeeperText": "Tagtha amach gach dathanna caighdeánach de na peataí stoidiaca: Francach, Bó, Coinín, Nathair, Capall, Caoirigh, Moncaí, Coileach, Mac tíre, Tíogar, Muc ag Eitilt, agus Dragan!",
"achievementBirdsOfAFeather": "Éin Cleite",
"achievementBirdsOfAFeatherModalText": "Bhailigh tú na peataí eitilte go léir!"
}
+16 -13
View File
@@ -1,11 +1,11 @@
{
"achievement": "Logro",
"onwards": "Adiante!",
"levelup": "Ao cumprires as túas metas da vida real subiches de nivel e recuperaches toda a vida!",
"levelup": "Ao cumprires as túas metas na realidade subiches de nivel e recuperaches toda a vida!",
"reachedLevel": "Acadaches o nivel <%= level %>",
"achievementLostMasterclasser": "Coleccionista de misións: serie de clase mestra",
"achievementLostMasterclasserText": "Completou as dezaseis misións da serie de misións de clase mestra e resolveu o misterio da clase mestra perdida!",
"showAllAchievements": "Mostralo todo de <%= category %>",
"showAllAchievements": "Amosalo todo de <%= category %>",
"onboardingCompleteDesc": "Gañaches <strong>5 logros</strong> e <strong class=\"gold-amount\">100 de ouro</strong> por completar a lista.",
"onboardingCompleteDescSmall": "Se aínda queres máis, mira os Logros e empeza a coleccionar!",
"hideAchievements": "Agochar <%= category %>",
@@ -38,20 +38,20 @@
"achievementReptacularRumbleText": "Fixo nacer todas as mascotas réptiles: caimán, pterodáctilo, serpe, triceratops, tartaruga, tiranosauro e velociraptor!",
"achievementLegendaryBestiary": "Bestiario lendario",
"achievementBackToBasicsModalText": "Reuniches todas as mascotas básicas!",
"achievementVioletsAreBlueText": "Reuniu todas as mascotas azuis algodón de azucre.",
"achievementWildBlueYonderModalText": "Domaches todas as monturas azuis algodón de azucre!",
"achievementVioletsAreBlueText": "Reuniu todas as mascotas de cor azul algodón de azucre.",
"achievementWildBlueYonderModalText": "Domaches todas as monturas de cor azul algodón de azucre!",
"achievementDustDevilText": "Reuniu todas as mascotas do deserto.",
"achievementFedPetText": "Deu de comer á súa primeira mascota.",
"achievementUndeadUndertakerText": "Domou todas as monturas zombi.",
"achievementTickledPink": "Debilidade polo rosa",
"foundNewItems": "Atopaches obxectos novos!",
"achievementBareNecessitiesModalText": "Completaches as misións de mascotas de mono, preguiceiro e arbusto!",
"achievementWildBlueYonderText": "Domou todas as monturas azuis algodón de azucre.",
"achievementWildBlueYonderText": "Domou todas as monturas de cor azul algodón de azucre.",
"achievementMindOverMatter": "A mente sobre a materia",
"achievementGoodAsGold": "A prezo de ouro",
"achievementAllYourBaseText": "Domou todas as monturas básicas.",
"achievementFedPet": "Dá de comer a unha mascota",
"achievementRosyOutlookText": "Domou todas as monturas rosas algodón de azucre.",
"achievementRosyOutlookText": "Domou todas as monturas de cor rosa algodón de azucre.",
"achievementVioletsAreBlue": "As violetas son azuis",
"achievementBugBonanza": "Bonanza de bichos",
"achievementJustAddWater": "Bótalle auga",
@@ -66,7 +66,7 @@
"achievementSkeletonCrew": "Banda esquelética",
"achievementCompletedTaskText": "Completou a súa primeira tarefa.",
"achievementFreshwaterFriends": "Amizades de auga doce",
"achievementSeasonalSpecialistText": "Completou todas as misións estacionais de primavera e inverno: caza de ovos, Apalpador trampulleiro e busca da cría!",
"achievementSeasonalSpecialistText": "Completou todas as misións estacionais de primavera e inverno: caza de ovos, Apalpador trampulleiro e atopar a cría!",
"foundNewItemsExplanation": "Completar tarefas dáche a oportunidade de atopar obxectos, como ovos, pocións de eclosión e penso.",
"achievementMonsterMagusText": "Reuniu todas as mascotas zombi.",
"achievementLostMasterclasserModalText": "Completaches as dezaseis misións da serie de misións de clase mestra e resolviches o misterio da clase mestra perdida!",
@@ -79,7 +79,7 @@
"achievementKickstarter2019": "Patrocinio en Kickstarter de broche",
"achievementAllThatGlitters": "Todo o que brilla",
"achievementBareNecessities": "Necesitades vitais",
"achievementRosyOutlookModalText": "Domaches todas as monturas rosas algodón de azucre!",
"achievementRosyOutlookModalText": "Domaches todas as monturas de cor rosa algodón de azucre!",
"achievementAllYourBaseModalText": "Domaches todas as monturas básicas!",
"achievementDustDevil": "Control das areas",
"achievementCreatedTaskModalText": "Engade unha tarefa para algo que queiras conseguir esta semana",
@@ -87,7 +87,7 @@
"achievementCompletedTask": "Completar unha tarefa",
"achievementBoneCollectorText": "Reuniu todas as mascotas esqueléticas.",
"achievementPurchasedEquipmentText": "Mercou a súa primeira peza de equipamento.",
"achievementFedPetModalText": "Hai moitos tipos distintos de penso, pero as mascotas poden ser esixentes",
"achievementFedPetModalText": "Hai moitos tipos de penso, pero as mascotas poden ser esixentes",
"achievementHatchedPetModalText": "Vai ao teu inventario e proba a xuntar unha poción de eclosión e un ovo",
"achievementAridAuthority": "Autoridade árida",
"achievementJustAddWaterText": "Completou as misións de mascotas de polbo, cabalo de mar, lura, balea, tartaruga, lesma, serpe mariña e golfiño.",
@@ -128,8 +128,8 @@
"achievementPrimedForPaintingModalText": "Reuniches todas as mascotas brancas!",
"achievementPearlyPro": "Profesional das perlas",
"achievementPearlyProModalText": "Domaches todas as monturas brancas!",
"achievementTickledPinkText": "Reuniu todas as mascotas rosas algodón de azucre.",
"achievementTickledPinkModalText": "Reuniches todas as mascotas rosas algodón de azucre!",
"achievementTickledPinkText": "Reuniu todas as mascotas de cor rosa algodón de azucre.",
"achievementTickledPinkModalText": "Reuniches todas as mascotas de cor rosa algodón de azucre!",
"achievementBugBonanzaModalText": "Completaches as misións de mascotas de escaravello, bolboreta, caracol e araña!",
"achievementFreshwaterFriendsText": "Completou as misións de mascotas de axolote, ra e hipopótamo.",
"achievementBoneCollectorModalText": "Reuniches todas as mascotas esqueléticas!",
@@ -139,7 +139,7 @@
"achievementLegendaryBestiaryText": "Fixo nacer todas as mascotas místicas estándar: dragón, porco voador, grifón, serpe mariña e unicornio!",
"achievementLegendaryBestiaryModalText": "Reuniches todas as mascotas míticas!",
"achievementSeasonalSpecialistModalText": "Completaches todas as misións estacionais!",
"achievementVioletsAreBlueModalText": "Reuniches todas as mascotas azuis algodón de azucre!",
"achievementVioletsAreBlueModalText": "Reuniches todas as mascotas de cor azul algodón de azucre!",
"achievementDomesticatedText": "Fixo nacer todas as mascotas domesticadas estándar: tourón, cobaia, galo, porco voador, rata, coello, cabalo e vaca!",
"achievementShadeOfItAll": "A sombra de todo",
"achievementZodiacZookeeper": "Zoo do zodíaco",
@@ -147,5 +147,8 @@
"achievementZodiacZookeeperModalText": "Reuniches todas as mascotas do zodíaco!",
"achievementGroupsBeta2022ModalText": "Ti e mailo teu grupo axudastes a Habitica probando e informando!",
"achievementBoneToPickText": "Fixo nacer todas as mascotas esqueléticas clásicas e de misión!",
"achievementPolarProText": "Fixo nacer todas as mascotas polares estándar: oso, raposo, pingüín, balea e lobo!"
"achievementPolarProText": "Fixo nacer todas as mascotas polares estándar: oso, raposo, pingüín, balea e lobo!",
"achievementDinosaurDynasty": "Dinastía de dinosauros",
"achievementDinosaurDynastyModalText": "Reuniches todas as mascotas aves e dinosauros!",
"achievementDinosaurDynastyText": "Fixo nacer todas as cores estándar de mascotas aves e dinosauros: falcón, curuxa, papagaio, pavón, pingüín, galo, pterodáctilo, tiranosauro, triceratops e velociraptor!"
}
+5 -5
View File
@@ -36,7 +36,7 @@
"beard": "Barba",
"mustache": "Bigote",
"flower": "Flor",
"accent": "Complemento",
"accent": "Acento",
"headband": "Diadema",
"wheelchair": "Cadeira de rodas",
"extra": "Adicional",
@@ -65,12 +65,12 @@
"gearAchievementNotification": "Acabas de gañar o logro «Equipamento definitivo» por adquirires o mellor lote de equipamento da túa clase!",
"moreGearAchievements": "Para conseguir máis medallas de «Equipamento definitivo», cambia de clase en <a href='/user/settings/site' target='_blank'>Configuración → Sitio</a> e merca o equipamento da túa nova clase!",
"armoireUnlocked": "Para máis equipamento, proba co <strong>armario encantado</strong>! Preme a recompensa do armario encantado para unha oportunidade aleatoria de conseguir equipamento especial! Tamén pode que consigas experiencia aleatoria ou penso.",
"ultimGearName": "Equipamento definitivo - <%= ultClass %>",
"ultimGearName": "Equipamento definitivo <%= ultClass %>",
"ultimGearText": "Adquiriu o mellor lote de armas e armadura da clase <%= ultClass %>.",
"level": "Nivel",
"levelUp": "Subiches de nivel!",
"gainedLevel": "Gañaches un nivel!",
"leveledUp": "Cumprindo os teus obxectivos na vida real, acabas de pasar ao <strong>nivel <%= level %>!</strong>",
"leveledUp": "Cumprindo os teus obxectivos na realidade, acabas de pasar ao <strong>nivel <%= level %>!</strong>",
"huzzah": "Viva!",
"mana": "Maná",
"hp": "Vida",
@@ -138,8 +138,8 @@
"select": "Seleccionar",
"stealth": "Sixilo",
"stealthNewDay": "Cando comece un novo día, evitarás o dano inflixido por esta cantidade de tarefas diarias incompletas.",
"streaksFrozen": "Conxeláronse as rachas",
"streaksFrozenText": "Cando te saltes unha tarefa diaria, as rachas non se reiniciarán ao final do día.",
"streaksFrozen": "Conxelouse a serie",
"streaksFrozenText": "Cando te saltes unha tarefa diaria, as series non se reiniciarán ao final do día.",
"purchaseFor": "Mercar por <%= cost %> xemas?",
"purchaseForHourglasses": "Mercar por <%= cost %> reloxos de area?",
"notEnoughMana": "Non tes maná dabondo.",
@@ -1,9 +1,9 @@
{
"tavernCommunityGuidelinesPlaceholder": "Recordatorio amistoso: esta conversa é para xente de todas as idades, así que por favor comparte contido e usa expresións axeitadas! Consulta as directrices da comunidade na barra lateral se ten dúbidas.",
"tavernCommunityGuidelinesPlaceholder": "Recordatorio amigábel: esta conversa é para xente de todas as idades, así que comparte contido e usa expresións axeitadas! Consulta as directrices da comunidade na barra lateral se ten dúbidas.",
"lastUpdated": "Última actualización:",
"commGuideHeadingWelcome": "Dámoste a benvida a Habitica!",
"commGuidePara001": "Saúdos! Dámoste a benvida a Habitica, a terra da produtividade, a vida saudábel, e o ataque ocasional de grifón. Temos unha comunidade positiva chea de xente disposta a axudar ao resto no camiño á mellora persoal. Para encaixar, todo o que necesitas é unha actitude positiva, un comportamento respectuoso, e o entendemento de que cada quen ten distintas habilidades e limitacións, incluíndote a ti! A xente de Habitica é paciente co resto e procura axudar cando pode.",
"commGuidePara002": "Para axudar a que toda a xente se sinta segura, feliz e produtiva na comunidade, si que temos algunhas directrices. Elaborámolas coidadosamente para que sexan todo o fáciles de ler e comprender posíbel. Por favor, adica un tempo a lelas antes de unirte á conversa.",
"commGuidePara002": "Para axudar a que toda a xente se sinta segura, feliz e produtiva na comunidade, si que temos algunhas directrices. Elaborámolas coidadosamente para que sexan todo o fáciles de ler e comprender posíbel. Dedica un tempo a lelas antes de unirte á conversa.",
"commGuidePara003": "Estas regras aplícanse a todos os espazos sociais que usamos, incluídos (pero non exclusivamente) Trello, GitHub, Weblate, e o wiki de Habitica en Fandom. A medida que as comunidades medran e cambian, as súas regras poden adaptarse de vez en cando. Cando se producen cambios significativos nas regras da comunidade listadas aquí, anunciarémolo mediante Baia ou nas nosas redes sociais!",
"commGuideHeadingInteractions": "Interaccións en Habitica",
"commGuidePara015": "Habitica ten dous tipos de espazos sociais: os públicos e os privados. Entre os espazos públicos están a taberna, os gremios públicos, GitHub, Trello, e o wiki. Os espazos privados son os gremios privados, a conversa de grupo, e as mensaxes privadas. Todos os nomes públicos e os @alcumes deben cumprir as directrices de espazos públicos. Para cambiar o teu nome visual ou o teu alcume, vai a «Menú → Configuración → Perfil» desde unha das aplicacións móbiles ou a «Eu → Configuración» desde a aplicación web.",
@@ -16,7 +16,7 @@
"commGuideList02F": "Evita as conversas prolongadas sobre temas divisorios na taberna e onde estea fóra de lugar. Se alguén menciona algo que as directrices permiten pero que te senta mal, podes dicirllo de boas maneiras. Se alguén te avisa de que lle provocaches incomodidade, reflexiona en vez de responder desde o enfado. Pero se te dá a sensación de que unha conversa está subindo de ton, é demasiado emocional ou é danosa, <strong>deixa de participar. No seu lugar, denuncia as publicacións para informarnos sobre elas. </strong>O equipo de Habitica responderá tan rápido como sexa posíbel. Tamén podes mandar unha mensaxe de correo electrónico a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e incluír capturas de pantalla se poden axudar.",
"commGuideList02G": "<strong>Cumpre inmediatamente con calquera solicitude do equipo de Habitica.</strong> Estas poderían incluír, entre outras, solicitarche que limites as túas publicacións nun espazo concreto, editar o teu perfil para retirar contido non axeitado, pedirte que movas a túa conversa a un espazo máis axeitado, etc. Non discutas co equipo. Se tes preocupacións ou comentarios sobre as accións do equipo, envía unha mensaxe de correo electrónico a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> para contactar co equipo de xestión da comunidade.",
"commGuideList02J": "<strong>Non envíes contido non desexado</strong>. O contido non desexado inclúe, entre outras cousas: publicar o mesmo comentario ou consulta en varios lugares, <strong>publicar ligazóns sen explicalas ou sen contexto</strong>, publicar mensaxes sen sentido, publicar varias mensaxes promocionais sobre un gremio, equipo ou reto, ou publicar moitas mensaxes seguidas. Se que a xente siga unha ligazón te beneficia de algún modo, tes que declaralo previamente no texto da túa mensaxe, ou tamén será considerado contido non desexado. O equipo de Habitica pode decidir á súa discreción o que considera contido non desexado.",
"commGuideList02K": "<strong>Evita abusar de maiúsculas iniciais en espazos de conversa públicos, en especial na taberna</strong>. De xeito similar a usar MAIÚSCULAS TODO O TEMPO, percíbese como se estiveses berrando, e fai difícil unha atmosfera cómoda.",
"commGuideList02K": "<strong>Evita publicar texto longo de cabeceira nos espazos de conversa públicos, en especial na taberna</strong>. Igual que TODO EN MAIÚSCULAS, percíbese como se estiveses berrando, e fai difícil unha atmosfera cómoda.",
"commGuideList02L": "<strong>Desaconsellamos encarecidamente o intercambio de información persoal, en especial información que se poida usar para a identificación persoal, nos espazos de conversa públicos</strong>. A información de identificación pode incluír, entre outras cousas: o teu enderezo, o teu enderezo de correo electrónico e o teu contrasinal ou ficha de API. Isto é pola túa seguridade! O equipo de Habitica podería retirar publicacións con tal información se o consideran pertinente. Se te piden información persoal nun gremio privado, equipo ou mensaxe privada, recomendámosche encarecidamente que te negues amabelmente e avises ao equipo de Habitica ou (1) denunciando a mensaxe ou (2) enviando unha mensaxe a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e incluíndo capturas de pantalla.",
"commGuidePara019": "<strong>Nos espazos privados</strong>, as persoas teñen máis liberdade para falar dos temas que queiras, pero poderían aínda así infrinxir as condicións do servizo, incluída a publicación de insultos ou calquera contido discriminatorio, violento ou ameazador. Ten en conta que, dado que os nomes de desafíos aparecen no perfil público de quen os gaña, TODOS os nomes de desafío deben cumprir coas directrices dos espazos públicos, aínda que aparezan nun espazo privado.",
"commGuidePara020": "<strong>As mensaxes privadas</strong> teñen directrices adicionais. Se alguén te bloqueou, non contactes con esa persoa por outras vías para pedirlle que te desbloquee. Ademais, non deberías enviar mensaxes privadas a xente para pedirlles axuda (dado que responder en público a peticións de asistencia axuda á comunidade). Por último, non envíes a ninguén mensaxes privadas pedindo contido de pago de ningún tipo.",
@@ -32,7 +32,7 @@
"commGuidePara031": "Algúns gremios públicos conterán temas sensibles como a depresión, a relixión, a política, etc. Isto non é un problema mentres as conversas non incumpran as condicións do servizo ou as regras de espazos públicos, e mentres se centren na súa temática.",
"commGuidePara033": "<strong>Os gremios públicos NON poden ter contido para adultos. Se teñen pensado tratar contido sensíbel de maneira regular, deberían indicalo na descrición do gremio</strong>. Isto é para que Habitica continúe sendo segura e cómoda para toda a xente.",
"commGuidePara035": "<strong>Se o gremio en cuestión ten distintos tipos de temáticas sensíbeis, por respecto ao resto de xente de Habitica cómpre incluír un aviso (p. ex. «Aviso: referencias a automutilación»)</strong>. Poden presentarse como avisos sobre temáticas sensíbeis ou notas sobre contidos, e cada gremio pode ter regras de seu a maiores das definidas aquí. O equipo de Habitica podería aínda así retirar este material se o considera oportuno.",
"commGuidePara036": "Ademais, o material sensíbel debería ir en liña coa temática. Por exemplo, sacar o tema da automutilación nun gremio sobre loita contra a depresión pode ter sentido, pero sacalo nun gremio musical probabelmente non. Se observas a unha persoa que se salta repetidamente esta directriz, especialmente despois de advertírllelo varias veces, renuncia as súas publicacións.",
"commGuidePara036": "Ademais, o material sensíbel debería ir en liña coa temática. Por exemplo, sacar o tema da automutilación nun gremio sobre loita contra a depresión pode ter sentido, pero sacalo nun gremio musical probabelmente non. Se observas a unha persoa que se salta repetidamente esta directriz, especialmente despois de varias solicitudes, denuncia as súas publicacións.",
"commGuidePara037": "<strong>Non se deberían crear gremios, nin públicos nin privados, co propósito de atacar a un grupo ou individuo.</strong>. Crear un gremio así pode dar pe a unha expulsión inmediata. Loita contra os malos hábitos, non contra a xente!",
"commGuidePara038": "<strong>Todos os desafíos da taberna e dos gremios públicos deben cumprir tamén estas regras</strong>.",
"commGuideHeadingInfractionsEtc": "Infraccións, consecuencias e restauración",
@@ -48,9 +48,9 @@
"commGuideList05D": "Facerse pasar polo equipo de Habitica, incluído alegar que espazos creados por xente usuaria e non asociados con Habitica son oficiais ou están moderados por Habitica ou o seu equipo",
"commGuideList05E": "Infraccións moderadas reiteradas",
"commGuideList05F": "Creación de contas duplicadas para evitar consecuencias (p. ex. crear unha conta nova para conversar tras perder os privilexios de conversa)",
"commGuideList05G": "Enganar intencionadamente ao equipo de Habitica para editar consecuencias ou para meter en problemas a outra persoa",
"commGuideList05G": "Enganar intencionadamente ao equipo de Habitica para evitar consecuencias ou para meter en problemas a outra persoa",
"commGuideHeadingModerateInfractions": "Infraccións moderadas",
"commGuidePara054": "As infraccións moderadas non volven insegura a nosa comunidade, pero si desagradábel. Estas infraccións terán consecuencias moderadas. Cando as infraccións son numerosas, as consecuencias poden tornarse graves.",
"commGuidePara054": "As infraccións moderadas non volven insegura a nosa comunidade, pero si desagradábel. Estas infraccións terán consecuencias moderadas. En caso de moitas infraccións, as consecuencias poden tornarse graves.",
"commGuidePara055": "Estes son algúns exemplos de infraccións moderadas. Esta lista non é exhaustiva.",
"commGuideList06A": "<strong>Ignorar, faltar ao respecto ou discutir co equipo de Habitica.</strong> Isto inclúe queixarse publicamente sobre o equipo ou sobre outras persoas, glorificar ou defender publicamente a persoas expulsadas, ou debater se unha acción do equipo foi acertada. Se te preocupa unha das regras ou o comportamento do equipo, contacta connosco por correo electrónico (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06B": "Moderación de balcón. Para que quede claro: unha mención amistosa das regras está ben. A moderación de balcón consiste en esixir ou suxerir encarecidamente a unha persoa facer algo que ti describes para corrixir unha equivocación. Podes avisar a unha persoa do feito de que caeu nun incumprimento, pero non lle esixas ningunha acción. Por exemplo, mellor dicir «Que saibas que o uso de palabras malsoantes na taberna está desaconsellado, quizais te interese eliminar iso» que dicir «Vou ter que pedirte de elimines esa publicación».",
@@ -58,13 +58,13 @@
"commGuideList06D": "Infrinxir repetidamente directrices de espazos públicos",
"commGuideList06E": "Cometer repetidamente infraccións menores",
"commGuideHeadingMinorInfractions": "Infraccións menores",
"commGuidePara056": "As infraccións menores, se ben están desaconselladas, teñen consecuencias pouco importantes. Se seguen ocorrendo, poden levar a consecuencias máis graves co tempo.",
"commGuidePara056": "As infraccións menores, malia estar desaconselladas, teñen consecuencias pouco importantes. Se seguen ocorrendo, poden levar a consecuencias máis graves co tempo.",
"commGuidePara057": "Estes son algúns exemplos de infraccións menores. Esta lista non é exhaustiva.",
"commGuideList07A": "Infrinxir as directrices de espazos públicos por primeira vez",
"commGuideList07B": "Calquera declaración ou acción que leve a unha persoa do equipo de Habitica a responder «Por favor, non…». Cando se te solicita publicamente non facer algo, isto mesmo pode ser unha consecuencia. Se o equipo ten que emitir moitas correccións como esta a unha mesma persoa, poderían contar como unha infracción máis grave",
"commGuideList07B": "Calquera declaración ou acción que leve a unha persoa do equipo de Habitica a pedirlle que non a faga. Cando se te solicita publicamente non facer algo, isto mesmo pode ser unha consecuencia. Se o equipo ten que emitir moitas correccións como esta a unha mesma persoa, poderían contar como unha infracción máis grave",
"commGuidePara057A": "Algunhas publicacións poderían estar agochadas porque conteñen información sensíbel ou poden confundir á xente. Isto non adoita contar como unha infracción, especialmente a primeira vez que ocorre!",
"commGuideHeadingConsequences": "Consecuencias",
"commGuidePara058": "En Habitica, como na vida real, todas as accións teñen consecuencias, sexa mellorar en saúde por correr, sufrir caries por comer demasiado doce, ou aprobar por estudar.",
"commGuidePara058": "En Habitica, como na realidade, todas as accións teñen consecuencias, sexa mellorar en saúde por correr, sufrir caries por comer demasiado doce, ou aprobar por estudar.",
"commGuidePara059": "<strong>De maneira similar, todas as infraccións teñen consecuencias directas.</strong> Algunhas consecuencias descríbense a continuación.",
"commGuidePara060": "<strong>Se a túa infracción ten unha consecuencia moderada ou severa, haberá unha publicación dunha persoa do equipo de Habitica, no foro no que tivo lugar a infracción, que explicará</strong>:",
"commGuideList08A": "cal foi a infracción",
@@ -74,12 +74,12 @@
"commGuidePara060B": "Se se expulsa a túa conta (unha consecuencia severa), non poderás acceder a Habitica e recibirás unha mensaxe de erro ao intentar acceder. <strong>Se queres desculparte ou conseguir a restauración, envía unha mensaxe de correo electrónico ao equipo de Habitica a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> co teu identificador de persoa usuaria</strong> (que se indicará na mensaxe de erro) ou o teu @alcume. É responsabilidade <strong>túa</strong> contactar connosco se queres que reconsideremos ou te readmitamos.",
"commGuideHeadingSevereConsequences": "Exemplos de consecuencias graves",
"commGuideList09A": "Expulsións de contas (máis información arriba)",
"commGuideList09C": "Desactivar permanentemente (“conxelar) o progreso nos rangos de contribución",
"commGuideList09C": "Desactivar permanentemente (“conxelar) o progreso nos rangos de contribución",
"commGuideHeadingModerateConsequences": "Exemplos de consecuencias moderadas",
"commGuideList10A": "Privilexios restrinxidos de conversa pública ou privada",
"commGuideList10A1": "Se polas túas accións perdes os privilexios de conversa, debes enviar unha mensaxe a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. Pode que se te readmita se cumpres cordialmente coas accións requiridas e aceptas cumprir coas directrices da comunidade e coas condicións do servizo",
"commGuideList10C": "Restricted Guild/Challenge creation privileges",
"commGuideList10D": "Desactivar temporalmente (“conxelar) o progreso nos rangos de contribución",
"commGuideList10D": "Desactivar temporalmente (“conxelar) o progreso nos rangos de contribución",
"commGuideList10E": "Degradación do Nivel dos Contribuidores",
"commGuideList10F": "Conceder a “condicional”",
"commGuideHeadingMinorConsequences": "Exemplos de consecuencias menores",
@@ -90,13 +90,13 @@
"commGuideList11E": "Edicións (o equipo de Habitica pode editar contido problemático)",
"commGuideHeadingRestoration": "Recuperación",
"commGuidePara061": "Habitica é unha terra devota da mellora persoal, e cremos nas segundas oportunidades. <strong>Se cometes unha infracción e recibes unha consecuencia, pensa nela como unha oportunidade para reflexionar sobre as túas accións e intentar mellorar a túa participación na comunidade</strong>.",
"commGuidePara062": "O anuncio ou mensaxe que recibes por Habitica ou por correo electrónico explicando as consecuencias das túas accións é unha boa fonte de información. Coopera coas restricións impostas, e busca cumprir cos requisitos para a retirada das penas.",
"commGuidePara062": "O anuncio ou mensaxe que recibes por Habitica ou por correo electrónico explicando as consecuencias das túas accións é unha boa fonte de información. Coopera coas restricións impostas, e procura cumprir cos requisitos para a retirada das penas.",
"commGuidePara063": "Se non entendes as consecuencias, ou a natureza da túa infracción, pide axuda ao equipo de Habitica para evitar cometer infraccións no futuro. Se consideras que unha decisión en concreto non foi xusta, podes escribir ao equipo de Habitica a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> para falalo.",
"commGuideHeadingMeet": "Coñece ao equipo",
"commGuidePara006": "Habitica has some tireless knights-errant who join forces with the staff members to keep the community calm, contented, and free of trolls. Each has a specific domain, but will sometimes be called to serve in other social spheres.",
"commGuidePara007": "O equipo de Habitica mantén a aplicación e os sitios en funcionamento e pode moderar conversas. Teñen etiquetas violetas marcadas con coroas. Teñen por título «Heroicidade».",
"commGuidePara008": "Os moderadores teñen etiquetas azul escuro marcadas con estrelas. O seu título é \"Gardián\". A única excepción é Bailey, quen, como personaxe non xogable, ten unha etiqueta negra e verde marcada cunha estrela.",
"commGuidePara009": "O equipo fórmano actualmente as seguintes persoas (de esquerda a dereita):",
"commGuidePara009": "O equipo fórmano as seguintes persoas (de esquerda a dereita):",
"commGuideAKA": "<%= habitName %> ou <%= realName %>",
"commGuideOnTrello": "<%= trelloName %> on Trello",
"commGuideOnGitHub": "<%= gitHubName %> en GitHub",
@@ -109,7 +109,7 @@
"commGuidePara013": "Nunha comunidade tan grande como Habitica, a xente ven e vai, e ás veces alguén do equipo de Habitica ou do de moderación ten que gardar a capa e descansar. O que segue é unha lista de xente que outrora formou parte do equipo de Habitica ou de moderación. Xa non teñen ese rol, pero queremos facer honor ao traballo que fixeron!",
"commGuidePara014": "Antigo equipo de Habitica e de moderación:",
"commGuideHeadingFinal": "A sección final",
"commGuidePara067": "E estas son as directrices de Habitica! Agora descansa e date unha ben merecida experiencia por lelas todas. Se tes calquera dúbida ou preocupación sobre as directrices da comunidade, contacta connosco por <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e de boa gana aclararemos o que necesites.",
"commGuidePara067": "Velaquí as directrices de Habitica! Agora descansa e date unha ben merecida experiencia por lelas todas. Se tes calquera dúbida ou preocupación sobre as directrices da comunidade, contacta connosco por <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e de boa gana aclararemos o que necesites.",
"commGuidePara068": "Agora avanza, á aventura, derrota esas tarefas diarias!",
"commGuideHeadingLinks": "Ligazóns útiles",
"commGuideLink01": "<a href='/groups/guild/5481ccf3-5d2d-48a9-a871-70a7380cee5a' target='_blank'>Habitica Help: Ask a Question</a>: un gremio para que as persoas usuarias de Habitica fagan preguntas!",
@@ -130,5 +130,5 @@
"commGuideList02N": "<strong>Denuncia e informa de publicacións que incumpren estas directrices ou as condicións do servizo.</strong> Xestionarémolo o máis rápido que poidamos. Tamén podes notificar ao equipo de Habitica mediante <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> pero as denuncias desde a aplicación son a forma máis rápida de conseguir axuda.",
"commGuideList02M": "Non pidas xemas, subscricións ou ser parte de plans de grupo. Non está permitido na taberna, nos espazos de conversa públicos ou privados, nin en mensaxes privadas. Se recibes unha mensaxe pedíndote obxectos de pago, denúnciaa. A solicitude reiterada ou severa de xemas ou subscricións, especialmente tras un aviso, podería resultar en expulsión.",
"commGuideList09D": "Retirada ou degradación do rango de contribución",
"commGuideList05H": "Intentos severos ou repetidos de defraudar ou forzar a outras persoas buscando obxectos de valor monetario real"
"commGuideList05H": "Intentos severos ou repetidos de defraudar ou forzar a outras persoas procurando obxectos de valor monetario real"
}
File diff suppressed because one or more lines are too long
+17 -17
View File
@@ -7,7 +7,7 @@
"communityFacebook": "Facebook",
"communityExtensions": "Complementos e extensións",
"companyAbout": "Como funciona",
"companyBlog": "Blogue",
"companyBlog": "Bitácora",
"footerDevs": "Desenvolvemento",
"footerMobile": "Móbil",
"oldNews": "Novas",
@@ -43,13 +43,13 @@
"missingUsernameEmail": "Falta o alcume ou o enderezo de correo electrónico.",
"invalidEmailDomain": "Non pode rexistrarse con correos electrónicos dos seguintes dominios: <%= domains %>",
"passwordReset": "Se temos constancia do seu correo electrónico ou alcume, enviáronse ao seu correo electrónico instrucións para estabelecer un novo contrasinal.",
"unsupportedNetwork": "Actualmente non somos compatíbeis con esta rede.",
"unsupportedNetwork": "Non somos compatíbeis con esta rede.",
"earnRewardsDesc": "Marca as tarefas para subir de nivel o teu avatar e desbloquear funcionalidades do xogo como armaduras de batalla, misteriosas mascotas, habilidades máxicas, e mesmo misións!",
"schoolAndWorkDesc": "Sen importar se o informe que preparar é para a escola ou para o traballo, resulta doado facer un seguimento do teu progreso a medida que lidias coas tarefas máis complicadas.",
"pkQuestion1": "Como naceu Habitica?",
"localStorageClearExplanation": "Este botón borrará o almacenamento local e a maioría das cookies, e pechará a súa sesión.",
"pkQuestion6": "Quen adoita usar Habitica?",
"pkQuestion8": "Que impacto ten Habitica na vida real das persoas?",
"pkQuestion8": "Que impacto ten Habitica na vida das persoas?",
"incorrectDeletePhrase": "Escribe <%= magicWord %> en maiúsculas para eliminar a túa conta.",
"alreadyHaveAccountLogin": "Xa tes unha conta de Habitica? <strong>Entra.</strong>",
"joinMany": "Únete a máis de <%= userCountInMillions %> millóns de persoas que o pasan ben conseguindo as súas metas!",
@@ -83,7 +83,7 @@
"businessInquiries": "Consultas de negocios e de promoción",
"timeToGetThingsDone": "Toca divertirse ao facer as cousas! Únete a máis de <%= userCountInMillions %> millóns de persoas que xa usan Habitica e mellora a túa vida de tarefa en tarefa.",
"missingEmail": "Falta o enderezo de correo electrónico.",
"usernameTOSRequirements": "Os alcumes deben cumprir coas nosas <a href='/static/terms' target='_blank'>condicións de servizo</a> e coas <a href='/static/community-guidelines' target='_blank'>directrices da comunidade</a>. Se non estabeleciches previamente un alcume, xerouse automaticamente.",
"usernameTOSRequirements": "Os alcumes deben cumprir coas nosas <a href='/static/terms' target='_blank'>condicións de servizo</a> e coas <a href='/static/community-guidelines' target='_blank'>directrices da comunidade</a>. Se non definiches previamente un alcume, xerouse automaticamente.",
"missingPassword": "Falta o contrasinal.",
"marketing3Lead1": "As aplicacións de **iPhone e Android** permítenche traballar sobre a marcha. Somos conscientes de que acceder a un sitio web para premer botóns pode botar para atrás.",
"wrongPassword": "O contrasinal é incorrecto.",
@@ -101,7 +101,7 @@
"marketing1Lead2Title": "Consigue un bo equipamento",
"marketing2Lead3Title": "Desafiádevos",
"marketing4Lead1Title": "Ludificación do ensino",
"setNewPass": "Estabelecer un novo contrasinal",
"setNewPass": "Definir un novo contrasinal",
"reportAccountProblems": "Informar de problemas coa conta",
"reportCommunityIssues": "Informar de problemas coa comunidade",
"missingNewPassword": "Falta o novo contrasinal.",
@@ -127,12 +127,12 @@
"marketing1Lead1Title": "A túa vida, o xogo de rol",
"marketing2Header": "Compite con amizades, únete a grupos cos teus intereses",
"pkQuestion7": "Por que usa Habitica arte de píxeles?",
"usernameTime": "Hora de estabelecer o teu alcume!",
"usernameTime": "Hora de definir o teu alcume!",
"memberIdRequired": "«member» debe ser un UUID correcto.",
"heroIdRequired": "«heroId» debe ser un UUID correcto.",
"signUpWithSocial": "Rexístrate con <%= social %>",
"loginWithSocial": "Accede con <%= social %>",
"confirmPasswordPlaceholder": "Asegúrate de que son o mesmo contrasinal!",
"confirmPasswordPlaceholder": "Asegúrate de que é o mesmo contrasinal!",
"motivateYourself": "Motívate para conseguir as túas metas.",
"marketing1Header": "Mellora os teus hábitos xogando",
"trackYourGoals": "Fai seguimento dos seus hábitos e metas",
@@ -152,31 +152,31 @@
"invalidReqParams": "Os parámetros da solicitude son incorrectos.",
"marketing3Header": "Aplicacións e extensións",
"marketing1Lead3Title": "Atopa premios aleatorios",
"battleMonstersDesc": "Loita contra monstros con máis xente! Usa o ouro que gañes para mercar recompensas do xogo ou da vida real, como ver un episodio da túa serie favorita.",
"battleMonstersDesc": "Loita contra monstros con máis xente! Usa o ouro que gañes para mercar recompensas do xogo ou da realidade, como ver un episodio da túa serie favorita.",
"pkQuestion3": "Por que engadistes funcionalidades sociais?",
"marketing2Lead2": "Que é un xogo de rol sen batallas? Loita contra monstros co teu equipo. Os monstros son o «modo de máxima responsabilidade»: un día que non vaias ao ximnasio é un día que o mostro fai dano a *toda a xente!*",
"marketing2Lead2": "Que é un xogo de rol sen batallas? Loita contra monstros co teu equipo. Os monstros son o «modo de máxima responsabilidade»: un día que non vaias ao ximnasio é un día que o monstro fai dano a *toda a xente!*",
"marketing4Lead3Title": "Converte todo nun xogo",
"marketing4Header": "Uso organizativo",
"enterHabitica": "Acceder a Habitica",
"enterHabitica": "Entrar en Habitica",
"joinToday": "Únete a Habitica hoxe",
"emailUsernamePlaceholder": "p. ex. habitiquense ou grifon@example.com",
"socialAlreadyExists": "Esta conta social xa está asociada a unha conta de Habitica.",
"marketing4Lead2": "O custo da sanidade está subindo, e hai que facer algo. Constrúense centos de programas para reducir custos e mellorar o benestar. Nós cremos que Habitica pode construír unha gran parte do camiño cara estilos de vida saudábeis.",
"marketing4Lead2": "O custo da sanidade está subindo, e hai que facer algo. Constrúense centos de programas para reducir custos e mellorar o benestar. Nós cremos que Habitica pode construír unha gran parte do camiño cara a estilos de vida saudábeis.",
"pkAnswer6": "Habitica úsaa moita xente distinta! Máis da metade da xente que nos usa ten entre 18 e 34 anos, pero temos xente maior que usa o sitio coas netas e netos, e todas as idades entre medias. É común que as familias formen un grupo e combatan monstros xuntas. <br /> Moita xente que nos usa ten experiencia con xogos, pero para a nosa sorpresa, cando realizamos unha enquisa hai un tempo, o 40% da xente non se consideraba xogadora! Así que parece que o noso método pode resultar efectivo para calquera que queira que a produtividade e o benestar resulten máis divertidos.",
"accountSuspended": "Esta conta, o identificador de persoa usuaria «<%= userId %>», bloqueouse por violar as directrices da comunidade (https://habitica.com/static/community-guidelines) ou as condicións do servizo (https://habitica.com/static/terms). Para máis información, ou para solicitar un desbloqueo, envía unha mensaxe á xestoría da comunidade en <%= communityManagerEmail %> ou solicita á túa nai, pai ou garda que o faga. Inclúea o teu @alcume na mensaxe.",
"muchmuchMoreDesc": "A nosa lista de tarefas completamente personalizábel permíteche darlle a Habitica a forma que queiras para adaptala ás túas metas persoais. Traballa en proxectos creativos, fai fincapé no coidado persoal, ou persegue un soño diferente; ti decides.",
"usernameInfo": "Os alcumes son nomes únicos que se mostrarán canda o teu nome visual e se usarán para invitacións, @mencións de conversas, e mensaxaría.<br><br>Se queres saber máis sobre este cambio, <a href='https://habitica.fandom.com/wiki/Player_Names' target='_blank'>visita o noso wiki</a> (en inglés).",
"usernameInfo": "Os alcumes son nomes únicos que se amosarán canda o teu nome visual e se usarán para invitacións, @mencións de conversas, e mensaxaría.<br><br>Se queres saber máis sobre este cambio, <a href='https://habitica.fandom.com/wiki/Player_Names' target='_blank'>visita o noso wiki</a> (en inglés).",
"marketing4Lead1": "O ensino é un dos mellores sectores para a ludificación. Xa se sabe que a xente estudante anda pegada aos teléfonos e aos xogos; aprovéitao! Fai que compitan de maneira amigábel. Recompensa os bos comportamentos con premios singulares. Observa como melloran as súas notas e o seu comportamento.",
"invalidLoginCredentialsLong": "Vaites! O teu enderezo de correo electrónico, alcume ou contrasinal son incorrectos.\n- Asegúrate de que os escribiches ben. O alcume e o contrasinal distinguen maiúsculas.\n- Pode que te rexistrases con Facebook ou Google, non co enderezo de correo electrónico, así que asegúrate probándoos.\n- Se esqueciches o contrasinal, preme «Esquecín o contrasinal».",
"marketing3Lead2": "Outras **ferramentas de terceiras partes** adaptan Habitica a varios aspectos da túa vida. A nosa API permite integrar facilmente cousas como a [extensión de Chrome](https://chrome.google.com/webstore/detail/habitica/pidkmpibnnnhneohdgjclfdjpijggmjj?hl=gl-ES), coa que perdes puntos ao visitar sitios web non produtivos, e gañas puntos ao visitar os produtivos. [Aprende máis aquí](https://habitica.fandom.com/wiki/Extensions,_Add-Ons,_and_Customizations) (en inglés).",
"marketing2Lead1": "Se ben podes xogar a Habitica pola túa conta, sácaselle máis partido ao colaborar, competir, e responsabilizarse mutuamente. A parte máis efectiva de calquera programa de mellora persoal é a responsabilidade social, e que mellor ambiente para responsabilidade e competición que un videoxogo?",
"marketing2Lead1": "Aínda que podes xogar a Habitica pola túa conta, sácaselle máis partido ao colaborar, competir, e responsabilizarse mutuamente. A parte máis efectiva de calquera programa de mellora persoal é a responsabilidade social, e que mellor ambiente para responsabilidade e competición que un videoxogo?",
"pkAnswer7": "Habitica usa arte de píxeles por varios motivos. Ademais do factor nostalxia positiva, a arte de píxeles resulta moi accesíbel para o noso voluntariado de artistas que queren colaborar. É moito máis doado manter a consistencia da arte de píxeles cando unha morea de artistas contribúen, e permítenos xerar unha gran cantidade de contido novo!",
"aboutHabitica": "Habitica é unha aplicación de balde de construción de hábitos e produtividade que trata a vida real como un xogo. Con recompensas e castigos no xogo para motivarte e unha forte rede social para inspirarte, Habitica pode axudarte a conseguir as túas metas e mellorar a túa saúde, traballar duramente, e ser feliz.",
"marketing1Lead1": "Habitica é un videoxogo para axudarte a mellorar os hábitos da vida real. Ludifica a túa vida convertendo as túas tarefas (hábitos, tarefas diarias, e tarefas pendentes) en pequenos monstros que debes conquistar. Canto mellor o fagas, máis progresarás no xogo. Se te descoidas na vida, a túa personaxe empeorará no xogo.",
"aboutHabitica": "Habitica é unha aplicación de balde de construción de hábitos e produtividade que trata a vida como un xogo. Con recompensas e castigos no xogo para motivarte e unha forte rede social para inspirarte, Habitica pode axudarte a conseguir as túas metas e mellorar a túa saúde, traballar duramente, e ser feliz.",
"marketing1Lead1": "Habitica é un videoxogo para axudarte a mellorar os hábitos da realidade. Ludifica a túa vida convertendo as túas tarefas (hábitos, tarefas diarias, e tarefas pendentes) en pequenos monstros que debes conquistar. Canto mellor o fagas, máis progresarás no xogo. Se te descoidas na vida, a túa personaxe empeorará no xogo.",
"localStorageTryFirst": "Se experimentas problemas con Habitica, preme o botón de embaixo para borrar o almacenamento local e a maioría das cookies do sitio web (non afectará a outros sitios web). Terás que acceder de novo despois de facelo, así que primeiro asegúrate de que sabes os teus detalles de acceso, que podes atopar en Configuración → <%= linkStart %>Sitio<%= linkEnd %>.",
"pkAnswer4": "Se saltas unha das túas metas diarias, o teu avatar perderá vida o día seguinte. Isto serve como factor importante de motivación para animar á xente a cumprir as súas metas porque a xente odia facer dano ao seu pequeno avatar! Ademais, a responsabilidade social resulta crítica para moitas persoas: se estás a loitar contra monstros coas túas amizades, saltar as túas tarefas tamén fai dano aos seus avatares.",
"pkAnswer5": "Unha das fontes de maior éxito de Habitica no uso de ludificación foi poñer un gran esforzo en pensar nos aspectos de xogo para asegurarnos de que resultan divertidos de verdade. Tamén incluímos moitas compoñentes sociais, porque pensamos que algúns dos xogos máis motivadores permítenche xogar con amizades, e porque as investigacións mostran que resulta máis doado formar hábitos cando tes que responsabilizarte ante outras persoas.",
"pkAnswer1": "Se algunha vez investiches tempo en subir de nivel unha personaxe nun xogo, é difícil non preguntarse o ben que iría a túa vida se todo ese esforzo o puxeses en mellorar a túa vida real en vez de o teu avatar. Comezamos a construír Habitica para responder esa pregunta. <br /> Habitica comezou oficialmente cunha campaña de Kickstarter en 2013, e a idea tivo éxito. Desde entón medrou ata se converter nun proxecto enorme, apoiado polo noso alucinante voluntariado do software libre e a xenerosidade da xente que nos usa.",
"pkAnswer5": "Unha das fontes de maior éxito de Habitica no uso de ludificación foi poñer un grande esforzo en pensar nos aspectos de xogo para asegurarnos de que resultan divertidos de verdade. Tamén incluímos moitas compoñentes sociais, porque pensamos que algúns dos xogos máis motivadores permítenche xogar con amizades, e porque as investigacións amosan que resulta máis doado formar hábitos cando tes que responsabilizarte ante outras persoas.",
"pkAnswer1": "Se algunha vez investiches tempo en subir de nivel unha personaxe nun xogo, é difícil non preguntarse o ben que iría a túa vida se todo ese esforzo o puxeses en mellorar a túa vida en vez de o teu avatar. Comezamos a construír Habitica para responder esa pregunta. <br /> Habitica comezou oficialmente cunha campaña de Kickstarter en 2013, e a idea tivo éxito. Desde entón medrou ata se converter nun proxecto enorme, apoiado polo noso alucinante voluntariado do software libre e a xenerosidade da xente que nos usa.",
"pkAnswer2": "Formar novos hábitos resulta difícil porque a xente realmente necesita esa recompensa instantánea e obvia. Por exemplo, é difícil empezar a lavar os dentes, porque aínda que na clínica odontolóxica nos digan que é máis saudábel a longo prazo, no momento non fai máis que facer que nos doan as enxivas. <br /> A ludificación de Habitica engade un sentimento de gratificación instantánea aos obxectivos de todos os días recompensando unha tarefa difícil con experiencia, ouro… e quizais mesmo un premio aleatorio, como un ovo de dragón! Isto axuda a manter á xente motivada mesmo cando a tarefa de por si non ten unha recompensa intrínseca, e vimos xente dar a volta á súa vida como resultado.",
"pkAnswer3": "A presión social é un factor de motivación enorme para unha morea de xente, así que sabíamos que queríamos ter unha comunidade forte que se responsabilizase mutuamente das metas e de animarse para gañar. Por sorte, unha das cousas que fan mellor os videoxogos para varias persoas é alimentar ese sentido de comunidade entre quen os xoga! A estrutura da comunidade de Habitica inspírase nese tipo de xogos; podes formar un pequeno grupo de amizades próximas, pero tamén podes unirte a un grupo máis grande con intereses comúns, un gremio. Aínda que algunhas persoas deciden xogar pola súa conta, a maioría decide formar unha rede de apoio que favorece a responsabilidade social mediante funcionalidades como as misións, onde a xente dos grupos xúntase e pon en común a súa produtividade para loitar contra monstros.",
"footerProduct": "Produto",
+2 -2
View File
@@ -560,7 +560,7 @@
"armorSpecialFall2016WarriorNotes": "Mysteriously moist and mossy! Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
"armorSpecialFall2016MageText": "Manto da Crueldade",
"armorSpecialFall2016MageNotes": "When your cloak flaps, you hear the sound of cackling laughter. Increases Intelligence by <%= int %>. Limited Edition 2016 Autumn Gear.",
"armorSpecialFall2016HealerText": "Túnica de gorgona",
"armorSpecialFall2016HealerText": "Túnica de górgona",
"armorSpecialFall2016HealerNotes": "These robes are actually made of stone. How are they so comfortable? Increases Constitution by <%= con %>. Limited Edition 2016 Autumn Gear.",
"armorSpecialWinter2017RogueText": "Armadura xeada",
"armorSpecialWinter2017RogueNotes": "This stealthy suit reflects light to dazzle unsuspecting tasks as you take your rewards from them! Increases Perception by <%= per %>. Limited Edition 2016-2017 Winter Gear.",
@@ -1378,7 +1378,7 @@
"shieldSpecialFall2016RogueNotes": "Feel the sting of the spider's bite! Increases Strength by <%= str %>. Limited Edition 2016 Autumn Gear.",
"shieldSpecialFall2016WarriorText": "Raíces Defensivas",
"shieldSpecialFall2016WarriorNotes": "Deféndete das Tarefas Diarias con estas raíces retorcidas! Aumenta a Constitución de <%= con %>. Edición Limitada de Outono de 2016.",
"shieldSpecialFall2016HealerText": "Escudo de Gorgona",
"shieldSpecialFall2016HealerText": "Escudo de rgona",
"shieldSpecialFall2016HealerNotes": "Non admires o teu propio reflexo neste escudo. Aumenta a Constitución de <%= con %>. Edición Limitada de Outono de 2016.",
"shieldSpecialWinter2017RogueText": "Ice Axe",
"shieldSpecialWinter2017RogueNotes": "This axe is great for attack, defense, and ice-climbing! Increases Strength by <%= str %>. Limited Edition 2016-2017 Winter Gear.",
+21 -17
View File
@@ -7,9 +7,9 @@
"gotIt": "Entendido!",
"titleTimeTravelers": "Viaxantes do tempo",
"titleSeasonalShop": "Tenda de tempada",
"saveEdits": "Gardar os cambios",
"showMore": "Mostrar máis",
"showLess": "Mostrar menos",
"saveEdits": "Gardar as edicións",
"showMore": "Amosar máis",
"showLess": "Amosar menos",
"markdownHelpLink": "Axuda do formato Markdown",
"bold": "**Grosa**",
"markdownImageEx": "![texto alternativo obrigatorio](https://habitica.com/torta.png \"título opcional cando o rato estea enriba\")",
@@ -103,7 +103,7 @@
"sentCardToUser": "Enviaches unha postal a <%= profileName %>",
"cardReceived": "Recibiches unha <span class=\"notification-bold-blue\"><%= card %></span>",
"greetingCard": "Postal de benvida",
"greetingCardExplanation": "Recibides ambas persoas o logro «Camarada alegre»!",
"greetingCardExplanation": "Recibides o logro «Camarada alegre»!",
"greetingCardNotes": "Enviar unha postal de benvida a unha persoa do equipo.",
"greeting0": "Ola!",
"greeting1": "Só era para dicir ola :)",
@@ -112,32 +112,32 @@
"greetingCardAchievementTitle": "Camarada alegre",
"greetingCardAchievementText": "Ei! Ola! Enviou ou recibiu <%= count %> postais de benvida.",
"thankyouCard": "Postal de agradecemento",
"thankyouCardExplanation": "Recibides ambas persoas o logro «Gran agradecemento»!",
"thankyouCardExplanation": "Recibides o logro «Grande agradecemento»!",
"thankyouCardNotes": "Enviar unha postal de agradecemento a unha persoa do equipo.",
"thankyou0": "Moitas grazas!",
"thankyou1": "Mil grazas!",
"thankyou2": "Un millón de grazas.",
"thankyou3": "Grazas de corazón!",
"thankyouCardAchievementTitle": "Gran agradecemento",
"thankyouCardAchievementTitle": "Grande agradecemento",
"thankyouCardAchievementText": "Grazas polas grazas! Enviou ou recibiu <%= count %> portais de agradecemento.",
"birthdayCard": "Postal de aniversario",
"birthdayCardExplanation": "Recibides ambas persoas o logro «Aniversario animado»!",
"birthdayCardExplanation": "Recibides o logro «Aniversario animado»!",
"birthdayCardNotes": "Enviar unha postal de aniversario a unha persoa do equipo.",
"birthday0": "Feliz aniversario!",
"birthdayCardAchievementTitle": "Aniversario animado",
"birthdayCardAchievementText": "Moitos parabéns! Enviou ou recibiu <%= count %> postais de aniversario.",
"congratsCard": "Postal de felicitación",
"congratsCardExplanation": "Recibides ambas persoas o logro «Feliz felicitación»!",
"congratsCardExplanation": "Recibides o logro «Feliz felicitación»!",
"congratsCardNotes": "Envía unha postal de felicitación a unha persoa do equipo.",
"congrats0": "Parabéns polo éxito!",
"congrats1": "Sinto moito orgullo de ti!",
"congrats2": "Ben feito!",
"congrats3": "Un gran aplauso para ti!",
"congrats3": "Un grande aplauso para ti!",
"congrats4": "Goza do teu ben merecido éxito!",
"congratsCardAchievementTitle": "Feliz felicitación",
"congratsCardAchievementText": "Nada como celebrar os logros das amizades! Enviou ou recibiu <%= count %> postais de felicitación.",
"getwellCard": "Tarxeta de recuperación",
"getwellCardExplanation": "Recibides ambas persoas o logro «Amizade reparadora»!",
"getwellCardExplanation": "Recibides o logro «Amizade reparadora»!",
"getwellCardNotes": "Envía unha postal de recuperación a unha persoa do equipo.",
"getwell0": "Que te mellores!",
"getwell1": "Cóidate! <3",
@@ -146,18 +146,18 @@
"getwellCardAchievementTitle": "Amizade reparadora",
"getwellCardAchievementText": "Os bos desexos son sempre benvidos. Enviou ou recibiu <%= count %> postais de recuperación.",
"goodluckCard": "Postal de boa sorte",
"goodluckCardExplanation": "Recibides ambas persoas o logro «Carta afortunada»!",
"goodluckCardExplanation": "Recibides o logro «Carta afortunada»!",
"goodluckCardNotes": "Envía unha postal para desexar boa sorte a unha persoa do equipo.",
"goodluck0": "Que a sorte te acompañe!",
"goodluck1": "Moita sorte!",
"goodluck2": "Espero que a sorte estea da túa banda sempre!",
"goodluckCardAchievementTitle": "Carta afortunada",
"goodluckCardAchievementText": "Os desexos de boa sorte son un gran incentivo! Enviou ou recibiu <%= count %> postais de boa sorte.",
"streakAchievement": "Gañaches un logro de racha!",
"firstStreakAchievement": "Racha de 21 días",
"streakAchievementCount": "<%= streaks %> rachas de 21 días",
"goodluckCardAchievementText": "Os desexos de boa sorte son un grande incentivo! Enviou ou recibiu <%= count %> postais de boa sorte.",
"streakAchievement": "Gañaches un logro de serie!",
"firstStreakAchievement": "Serie de 21 días",
"streakAchievementCount": "<%= streaks %> series de 21 días",
"twentyOneDays": "Completaches unha tarefa diaria 21 días seguidos!",
"dontBreakStreak": "Moi bo traballo. Non rompas a racha!",
"dontBreakStreak": "Moi bo traballo. Non rompas a serie!",
"dontStop": "Agora non pares!",
"wonChallengeShare": "Gañei un desafío en Habitica!",
"orderBy": "Ordenar por <%= item %>",
@@ -213,5 +213,9 @@
"reportEmailError": "Fornece un enderezo de correo electrónico válido",
"reportBugHeaderDescribe": "Describe o fallo que experimentaches e o noso equipo te contestará.",
"reportEmailText": "Isto só se usará para contactar contigo sobre o informe de fallo.",
"reportSentDescription": "Contestarémoste cando o noso equipo teña oportunidade de investigar. Grazas por informar do fallo."
"reportSentDescription": "Contestarémoste cando o noso equipo teña oportunidade de investigar. Grazas por informar do fallo.",
"refreshList": "Actualizar a lista",
"skipExternalLinkModal": "Manteña premido Ctrl (Windows) ou Command (Mac) ao premer unha ligazón para evitar este diálogo modal.",
"leaveHabitica": "Está a piques de saír de Habitica.com",
"leaveHabiticaText": "Habitica non se fai responsábel do contido de ningún sitio web ao que ligue que non sexa propiedade de ou estea operado por HabitRPG.<br>Teña en conta que as prácticas destes sitios web non teñen por que coincidir coas directrices da comunidade de Habitica."
}
+28 -13
View File
@@ -20,7 +20,7 @@
"dataTool": "Ferramenta de Mostra de Datos",
"resources": "Recursos",
"communityGuidelines": "Directrices da comunidade",
"bannedWordUsed": "Vaites! Parece que esta publicación contén algunha palabra malsoante ou unha referencia a substancias aditivas ou temática para persoas adultas (<%= swearWordsUsed %>). Habitica mantén a conversa moi limpa. Podes editar a mensaxe para poder publicala! Tes que eliminar a palabra, non simplemente censurala.",
"bannedWordUsed": "Vaites! Parece que esta publicación contén algunha palabra malsoante ou unha mención de substancias aditivas ou temática para persoas adultas (<%= swearWordsUsed %>). Habitica mantén a conversa moi limpa. Podes editar a mensaxe para poder publicala! Tes que eliminar a palabra, non simplemente censurala.",
"bannedSlurUsed": "A túa publicación contiña expresións non axeitadas, e retiráronseche os privilexios de conversa.",
"party": "Equipo",
"usernameCopied": "O alcume copiouse no portapapeis.",
@@ -100,7 +100,7 @@
"abuseFlagModalHeading": "Informar dunha transgresión",
"abuseFlagModalBody": "Seguro que queres denunciar esta publicación? <strong>Só</strong> deberías denunciar publicacións que incumpran as <%= firstLinkStart %>directrices da comunidade<%= linkEnd %> ou as <%= secondLinkStart %>condicións de uso<%= linkEnd %>. Denunciar unha publicación incorrectamente é un incumprimento das directrices da comunidade e pode causarte unha infracción.",
"abuseReported": "Grazas por denunciar esta transgresión. Notificouse ao equipo de moderación.",
"whyReportingPost": "Por que denuncias esta mensaxe?",
"whyReportingPost": "Por que denuncias esta publicación?",
"whyReportingPostPlaceholder": "Axuda ao noso equipo de moderación indicándonos o motivo polo que denuncias esta publicación por transgresión, p. ex. publicidade non desexada, palabras malsoantes, loas relixiosas, intolerancia, xerga, temática adulta ou violencia.",
"optional": "Opcional",
"needsTextPlaceholder": "Escribe a túa mensaxe aquí.",
@@ -134,7 +134,7 @@
"partyOnText": "Uniuse a un equipo cun mínimo de catro persoas! Motivádeos mutuamente ao tempo que derrotades ao inimigo!",
"groupNotFound": "Non se atopou o grupo ou non tes acceso.",
"groupTypesRequired": "Debes fornecer unha cadea de consulta «type» válida.",
"questLeaderCannotLeaveGroup": "Non podes abandonar o teu equipo cando comenzastes unha misión. Interrompe primeiro a misión.",
"questLeaderCannotLeaveGroup": "Non podes abandonar o teu equipo cando comezaches unha misión. Interrompe primeiro a misión.",
"cannotLeaveWhileActiveQuest": "Non podes abandonar un equipo durante unha misión activa. Abandona primeiro a misión.",
"onlyLeaderCanRemoveMember": "Só a persoa líder do grupo pode retirar persoas del!",
"cannotRemoveCurrentLeader": "Non podes retirar a persoa líder do grupo. Asigna primeiro unha nova líder.",
@@ -189,7 +189,7 @@
"approveTask": "Aprobar a tarefa",
"needsWork": "Necesita traballo",
"viewRequests": "Ver as solicitudes",
"groupSubscriptionPrice": "9 $ ao mes + 3 $ ao mes por cada persoa adicional no grupo",
"groupSubscriptionPrice": "$9 ao mes + $3 ao mes por cada persoa adicional no grupo",
"groupBenefitsDescription": "Acabamos de lanzar a versión de probas dos nosos plans de grupo! Ascender a un plan de grupo desbloquea algunhas funcionalidades únicas para optimizar os aspectos sociais de Habitica.",
"teamBasedTasks": "Tarefas baseadas en equipos",
"cannotDeleteActiveGroup": "Non se pode retirar un grupo cunha subscrición activa",
@@ -264,7 +264,7 @@
"noGuildsParagraph1": "Os gremios son grupos sociais que crean outras persoas e poden ofrecer unha conversa de asistencia e ánimo.",
"noGuildsParagraph2": "Preme o separador «Descubrir» para ver gremios recomendados baseados nos teus intereses, explora os gremios públicos de Habitica ou crea o teu propio gremio.",
"noGuildsMatchFilters": "Non atopamos ningún gremio que coincida.",
"privateDescription": "Un gremio privado non se mostrará no directorio de gremios de Habitica. Só se pode sumar xente por invitación.",
"privateDescription": "Un gremio privado non se amosará no directorio de gremios de Habitica. Só se pode sumar xente por invitación.",
"removeInvite": "Retirar a invitación",
"removeMember": "Expulsar a persoa",
"sendMessage": "Enviar a mensaxe",
@@ -315,7 +315,7 @@
"groupManagementControlsDesc": "Mira o estado das tarefas para verificar que se completaron, expande o equipo de xestión do grupo para compartir responsabilidades, e goza dunha conversa de grupo privada para toda a xente do equipo.",
"inGameBenefits": "Vantaxes no xogo",
"inGameBenefitsDesc": "As persoa do grupo reciben unha exclusiva montura, un coélope, así como todas as vantaxes dunha subscrición, incluídos os lotes de equipamento mensual especiais e a posibilidade de mercar xemas con ouro.",
"inspireYourParty": "Insira ao teu equipo, ludificade a vida en equipo.",
"inspireYourParty": "Inspira ao teu equipo, ludificade a vida en equipo.",
"letsMakeAccount": "Para comezar, fagámoste unha conta",
"nameYourGroup": "Logo, dá nome ao grupo",
"exampleGroupName": "Por exemplo: Academia de heroicidades",
@@ -326,9 +326,9 @@
"whatsIncludedGroup": "Que inclúe a subscrición",
"whatsIncludedGroupDesc": "Toda a xente do grupo recibe todas as vantaxes dunha subscrición, incluídos os obxectos de subscrición mensuais, a posibilidade de mercar xemas con ouro, e a montura coélope púrpura real, exclusiva para xente no plan de grupo.",
"howDoesBillingWork": "Como funciona a facturación?",
"howDoesBillingWorkDesc": "Ao liderado do grupo factúraselles segundo o número de persoas no grupo cada mes. O cargo inclúe o prezo de 9 $ (USD) da subscrición de líder de grupo, máis 3 $ USD por cada persoa adicional no grupo. Por exemplo: un grupo de catro persoas custará 18 USD/mes, dado que o grupo consiste nunha persoa líder do grupo e tres persoas adicionais.",
"howDoesBillingWorkDesc": "Ao liderado do grupo factúraselles segundo o número de persoas no grupo cada mes. O cargo inclúe o prezo de $9 (USD) da subscrición de líder de grupo, máis $3 USD por cada persoa adicional no grupo. Por exemplo: un grupo de catro persoas custará $18 USD/mes, dado que o grupo consiste nunha persoa líder do grupo e tres persoas adicionais.",
"howToAssignTask": "Como se asigna unha tarefa?",
"howToAssignTaskDesc": "Asigna calquera tarefa a unha ou máis persoas do grupo (incluída a persoa líder ou persoas xestoras) escribindo os seus alcumes no campo «Asignar a» na xanela modal de creación da tarefa. Tamén podes decidir asignar unha tarefa despois de creala, editándoa e engadindo a persoa usuaria ao campo «Asignar a»!",
"howToAssignTaskDesc": "Asigna calquera tarefa a unha ou máis persoas do grupo (incluída a persoa líder ou persoas xestoras) escribindo os seus alcumes no campo «Asignar a» no diálogo modal de creación da tarefa. Tamén podes decidir asignar unha tarefa despois de creala, editándoa e engadindo a persoa usuaria ao campo «Asignar a»!",
"howToRequireApproval": "Como indicar que unha tarefa necesita aprobación?",
"howToRequireApprovalDesc": "Conmuta a opción «Necesita aprobación» para indicar que unha tarefa concreta necesita confirmación por parte do liderado ou da xente de xestión. A persoa usuaria que marcase a tarefa non recibirá a recompensa por completala ata que se aprobe.",
"howToRequireApprovalDesc2": "A xente que lidera ou xestiona o grupo pode aprobar tarefas completadas directamente desde o taboleiro de tarefas ou desde o panel de notificacións.",
@@ -375,7 +375,7 @@
"descriptionOptionalText": "Engadir unha descrición",
"lastCompleted": "Última completada",
"youEmphasized": "<strong>Ti</strong>",
"chatTemporarilyUnavailable": "A conversa está desactivada temporalmente. Proba máis tarde.",
"chatTemporarilyUnavailable": "A conversa está indispoñíbel temporalmente. Proba máis tarde.",
"newGroupsWelcome": "Dámoste a benvida ao novo taboleiro de tarefas compartidas!",
"newGroupsBullet08": "A persoa líder do grupo e as persoas xestoras poden engadir tarefas rapidamente desde a parte superior das columnas de tarefas",
"newGroupsBullet10a": "<strong>Deixa unha tarefa sen asignar</strong> se a pode completar calquera",
@@ -395,7 +395,7 @@
"newGroupsBullet01": "Interactúa con tarefas directamente deste o taboleiro de tarefas compartidas",
"newGroupsBullet02": "Calquera pode completar as tarefas sen asignar",
"newGroupsBullet03": "As tarefas compartidas restabelécense ao mesmo tempo para toda a xente para colaborar mellor",
"newGroupsBullet04": "As tarefas diarias compartidas non causan dano cando se saltan nin aparecen na xanela para rexistrar a actividade do día anterior",
"newGroupsBullet04": "As tarefas diarias compartidas non causan dano cando se saltan nin aparecen no diálogo para rexistrar a actividade do día anterior",
"newGroupsBullet05": "A cor das tarefas compartidas empeorará se non se completan, para axudar a facer seguimento do progreso",
"invitedToThisQuest": "Invitáronte a esta misión!",
"suggestedGroup": "Suxerido porque levas pouco tempo en Habitica.",
@@ -410,13 +410,28 @@
"nameStar": "Nome*",
"nameStarText": "Engadir un título",
"nextPaymentMethod": "Seguinte: método de pago",
"newGroupsBullet07": "Conmuta a posibilidade de mostrar as tarefas compartidas no teu taboleiro de tarefas persoal",
"newGroupsBullet09": "Unha tarefa compartida pode desmarcarse para mostrar que aínda necesita traballo",
"newGroupsBullet07": "Conmuta a posibilidade de Amosar as tarefas compartidas no teu taboleiro de tarefas persoal",
"newGroupsBullet09": "Unha tarefa compartida pode desmarcarse para Amosar que aínda necesita traballo",
"newGroupsWhatsNew": "Olla as novidades:",
"newGroupsBullet06": "A vista de estado da tarefa permíteche ver rapidamente que persoas asignadas completaron a tarefa",
"newGroupsBullet10b": "<strong>Asigna unha tarefa a unha persoa</strong> para que só a poida completar ela",
"newGroupsBullet10c": "<strong>Asigna unha tarefa a varias persoas</strong> se a teñen que completar todas",
"newGroupsVisitFAQ": "Visita as <a href='/static/faq#group-plans' target='_blank'>preguntas frecuentes</a> desde a lista despregábel de axuda para máis indicacións.",
"upgradeToGroup": "Ascender a grupo",
"viewStatus": "Estado"
"viewStatus": "Estado",
"questWithOthers": "Completa misións con máis xente",
"checkinsLabel": "Accesos",
"classLabel": "Clase:",
"startPartyDetail": "Organiza un equipo ou únete a un<br/> para completar misións e motivarte!",
"partyExceedsInvitesLimit": "Un equipo non pode ter máis de <%= maxInvites %> invitacións pendentes.",
"currentlyLookingForParty": "Estás buscando equipo!",
"partyFinderDescription": "Queres unirte a un equipo pero non coñeces a ninguén máis no xogo? Anuncia que buscas equipo!",
"invitedToYourParty": "<strong>Invitouse ao equipo!</strong>&nbsp;&nbsp;Preme para desfacer",
"lookingForPartyTitle": "Atopar participantes",
"findMorePartyMembers": "Atopar máis participantes",
"findPartyMembers": "Atopar xente para o equipo",
"noOneLooking": "Non hai ninguén buscando equipo agora mesmo.<br>Podes comprobalo de novo máis tarde!",
"sendTotal": "Total:",
"lookForParty": "Buscar equipo",
"languageLabel": "Idioma:"
}
+13 -9
View File
@@ -8,7 +8,7 @@
"aquaticFriends": "Amizades acuáticas",
"aquaticFriendsText": "<%= count %> salpicaduras por persoas do equipo.",
"valentineCard": "Tarxeta do día de San Valentín",
"valentineCardExplanation": "Por aturar un poema tan charramangueiro, ambas persoas recibides a insignia «Amizades devotas»!",
"valentineCardExplanation": "Por aturar un poema tan charramangueiro, recibides a insignia «Amizades devotas»!",
"valentineCardNotes": "Envía unha tarxeta de San Valentín a unha persoa do equipo.",
"valentine0": "«Nin o son do mar,\n\nnin o cantar do bilurico,\n\nnada me fai tan feliz\n\ncomo estar no teu equipo!»",
"valentine1": "«Deixemos atrás os días\n\nde produtividade quebradiza,\n\nXuntemos as nosas forzas\n\npara loitar contra a preguiza!»",
@@ -32,8 +32,8 @@
"seasonalShopWinterText": "Feliz inverno das marabillas! Queres mercar obxectos singulares? Pois non esquezas facelo antes de que remate a gala!",
"seasonalShopSpringText": "Feliz aventura de primavera! Queres mercar obxectos singulares? Pois non esquezas facelo antes de que remate a gala!",
"seasonalShopFallTextBroken": "Oh… Doute a benvida á tenda estacional… Estamos xuntando obxectos de tempada outonal ou algo así… Todo o que temos aquí estará dispoñíbel para mercar durante a festa do magosto cada ano, pero só abrimos ata o 31 de outubro… Así que máis vale que aproveites agora, ou terás que agardar… e agardar… <strong>*suspira*</strong>.",
"seasonalShopBrokenText": "O meu pavillón! As miñas decoracións! Oh, o desanimador destruíuno todo :( Por favor, axúdame a derrotalo na taberna para que poda reconstruír!",
"seasonalShopRebirth": "Se mercaches pezas deste equipamento no pasado pero non as tes actualmente, podes volver mercalas na columna «Recompensas». Ao principio só poderás adquirir os obxectos da túa clase actual («pugnaz» é a predeterminada), pero non temas, os outros obxectos de clases específicas pasarán a estar dispoñíbeis se cambias á súa clase.",
"seasonalShopBrokenText": "O meu pavillón! As miñas decoracións! Oh, o desanimador destruíuno todo :( Axúdame a derrotalo na taberna para que poda reconstruír!",
"seasonalShopRebirth": "Se mercaches pezas deste equipamento no pasado pero xa non as tes, podes volver mercalas na columna «Recompensas». Ao principio só poderás adquirir os obxectos da túa clase actual («pugnaz» é a predeterminada), pero non temas, os outros obxectos de clases específicas pasarán a estar dispoñíbeis se cambias á súa clase.",
"candycaneSet": "Bastón de caramelo (maga)",
"skiSet": "Esquíasasino (renarte)",
"snowflakeSet": "Folerpa (albeite)",
@@ -48,7 +48,7 @@
"cocoaSet": "Cacao (renarte)",
"toAndFromCard": "Para <%= toName %>, de <%= fromName %>",
"nyeCard": "Postal de Aninovo",
"nyeCardExplanation": "Por xuntarvos para celebrar o Aninovo, ambas persoas recibides a insignia «Amizade anovada»!",
"nyeCardExplanation": "Por xuntarvos para celebrar o Aninovo, recibides a insignia «Amizade anovada»!",
"nyeCardNotes": "Envía unha postal de Aninovo a unha persoa do equipo.",
"seasonalItems": "Obxectos estacionais",
"nyeCardAchievementTitle": "Amizade anovada",
@@ -83,7 +83,7 @@
"potionerSet": "Preparación de pocións (albeite)",
"battleRogueSet": "Morcego de combate (renarte)",
"springingBunnySet": "Coello saltador (albeite)",
"grandMalkinSet": "Gran espantallo (maga)",
"grandMalkinSet": "Grande espantallo (maga)",
"cleverDogSet": "Can listo (renarte)",
"braveMouseSet": "Rato valente (pugnaz)",
"summer2016SharkWarriorSet": "Tiburón (pugnaz)",
@@ -92,7 +92,7 @@
"summer2016EelSet": "Anguila (renarte)",
"fall2016SwampThingSet": "Cousa do pantano (pugnaz)",
"fall2016WickedSorcererSet": "Maxia escura (maga)",
"fall2016GorgonHealerSet": "Gorgona (albeite)",
"fall2016GorgonHealerSet": "Górgona (albeite)",
"fall2016BlackWidowSet": "Viúva negra (renarte)",
"winter2017IceHockeySet": "Hóckey sobre xeo (pugnaz)",
"winter2017WinterWolfSet": "Lobo invernal (maga)",
@@ -255,8 +255,8 @@
"anniversaryLimitations": "Este é un evento de tempo limitado que comeza o 30 de xaneiro ás 8:00 na costa leste dos Estados Unidos (14:00 en España) e remata o 8 de febreiro ás 23:59 (9 de febreiro ás 05:59 en España). Durante este tempo poderás mercar a grifotriz entusiasmada de edición limitada e dez pocións de eclosión máxicas. O resto de agasallos listados na sección «Catro de balde» entregaranse automaticamente a todas as contas que estivesen activas nos 30 días anteriores ao envío do agasallo. As contas creadas despois de enviarse os agasallos non poderán reclamalos.",
"limitedEdition": "Edición limitada",
"anniversaryGryphatriceText": "A singular grifotriz entusiasmada únese á celebración do aniversario! Non perdas a oportunidade de conseguir esta exclusiva mascota animada.",
"anniversaryGryphatricePrice": "Consíguea hoxe por <strong>9,99 $</strong> ou <strong>60 xemas</strong>",
"buyNowMoneyButton": "Comprar agora por 9,99 $",
"anniversaryGryphatricePrice": "Consíguea hoxe por <strong>$9,99</strong> ou <strong>60 xemas</strong>",
"buyNowMoneyButton": "Comprar agora por $9,99",
"buyNowGemsButton": "Comprar agora por 60 xemas",
"wantToPayWithGemsText": "Queres pagar con xemas?",
"wantToPayWithMoneyText": "Queres pagar con Stripe, Paypal ou Amazon?",
@@ -269,5 +269,9 @@
"visitTheMarketButton": "Ir o mercado",
"fourForFree": "Catro de balde",
"fourForFreeText": "Para que non pare a festa, regalamos vestidos de festa, 20 xemas, e un lote de fondos e obxectos de aniversario de edición limitada que inclúen unha capa, ombreiras, e unha máscara.",
"dayOne": "Día 1"
"dayOne": "Día 1",
"summer2023GoldfishWarriorSet": "Carpa vermella (pugnaz)",
"summer2023GuppyRogueSet": "Guppy (renarte)",
"summer2023KelpHealerSet": "Kelp (albeite)",
"summer2023CoralMageSet": "Coral (maga)"
}
+1 -1
View File
@@ -4,7 +4,7 @@
"messageTagNotFound": "Non se atopou a etiqueta.",
"messagePetNotFound": ":pet non se atopou en user.items.pets",
"messageFoodNotFound": ":food non se atopou en user.items.food",
"messageNotAvailable": "Actualmente este obxecto non está dispoñíbel para mercar.",
"messageNotAvailable": "Este obxecto non está dispoñíbel para mercar.",
"messageCannotFeedPet": "Non podes dar de comer a esta mascota.",
"messageAlreadyMount": "Xa tes esa montura. Intenta dar de comer a outra mascota.",
"messageEvolve": "Domesticaches a <%= egg %>, vaiamos dar unha volta!",
+7 -6
View File
@@ -8,7 +8,7 @@
"justinIntroMessage1": "Ola! Acabas de chegar, non? Chámome <strong>Xustino</strong>, e fareite de guía en Habitica.",
"justinIntroMessage3": "Xenial! Agora dime, en que queres traballar durante esta aventura?",
"justinIntroMessageUsername": "Antes de nada, necesitarás un nome. Embaixo atoparás un nome visual e un alcume que xerei para ti. Unha vez decidas como queres chamarte, empezaremos a crear o teu avatar!",
"justinIntroMessageAppearance": "Que aparencia buscas? Non te preocupes, sempre podes cambiar máis adiante.",
"justinIntroMessageAppearance": "Que aparencia queres? Non te preocupes, sempre podes cambiar máis adiante.",
"introTour": "E chegamos! Prepareite algunhas tarefas en función dos teus intereses, para que poidas empezar canto antes. Preme unha tarefa para editala ou engade novas tarefas que se axusten á túa rutina!",
"prev": "Anterior",
"next": "Seguinte",
@@ -18,7 +18,7 @@
"welcomeToTavern": "Dámoste a benvida á taberna!",
"sleepDescription": "Necesitas un descanso? Entra na pousada de Daniel para pausar algunhas das mecánicas de xogo máis difíciles de Habitica:",
"sleepBullet1": "As tarefas diarias que non completes non te farán dano (as criaturas rivais continuarán facendo dano a causa das tarefas diarias sen facer do resto do equipo)",
"sleepBullet2": "As túas rachas de tarefas e contadores de hábitos non se restabelecerán",
"sleepBullet2": "As túas series de tarefas e contadores de hábitos non se restabelecerán",
"sleepBullet3": "O teu dano á criatura rival de misión ou obxectos de colección atopados seguirán pendentes ata que saias da pousada",
"sleepBullet4": "Your boss damage or collection Quest items will stay pending until check-out",
"pauseDailies": "Pausar o dano",
@@ -89,7 +89,7 @@
"paymentYouSentGems": "Enviaches <strong><%- name %></strong>:",
"paymentYouSentSubscription": "Enviaches a <strong><%- name %></strong><br> unha subscrición de <%= months %> meses a Habitica.",
"paymentSubBilling": "Pola túa subscrición facturaránseche <strong>$<%= amount %></strong> cada <strong><%= months %> meses</strong>.",
"success": "Todo en orde!",
"success": "Conseguido!",
"classGear": "Equipamento de clase",
"classGearText": "Parabéns por escoller unha clase! Engadín a túa nova arma básica ao teu inventario. Bota un ollo embaixo para equipala!",
"autoAllocate": "Asignar automaticamente",
@@ -105,7 +105,7 @@
"tourHallPage": "Dámoste a benvida á sala das xestas, onde honramos as contribucións libres a Habitica. Fose mediante código, arte, música, texto ou simplemente axuda, gañaron xemas, equipamento exclusivo e títulos prestixiosos. Ti tamén podes contribuír a Habitica!",
"tourPetsPage": "Dámoste a benvida á corte! Cada vez que completes unha tarefa terás unha oportunidade de recibir un ovo ou unha poción de eclosión para incubar unha mascota. Cando a túa mascota naza aparecerá aquí! Preme a imaxe dunha mascota para engadila ao teu avatar. Aliméntaas co penso que atopes e converteranse en rechas monturas.",
"tourMountsPage": "Unha vez deas penso dabondo a unha mascota para convertela nunha montura, aparecerá aquí. Preme unha montura para subir a ela!",
"tourEquipmentPage": "Aquí é onde se almacena o teu equipamento! O teu equipamento de batalla afecta á túa condición. Se queres mostrar un equipamento distinto no teu avatar sen cambiar a túa condición, preme «Usar o disfrace».",
"tourEquipmentPage": "Aquí é onde se almacena o teu equipamento! O teu equipamento de batalla afecta á túa condición. Se queres Amosar un equipamento distinto no teu avatar sen cambiar a túa condición, preme «Usar o disfrace».",
"equipmentAlreadyOwned": "Xa tes esa peza de equipamento",
"tourOkay": "Vale!",
"tourAwesome": "Xenial!",
@@ -114,7 +114,7 @@
"welcome1": "Crea un avatar básico.",
"welcome1notes": "Este avatar representarate a medida que progreses.",
"welcome2": "Prepara as túas tarefas.",
"welcome2notes": "O cumprimento das túas tarefas na vida real controlará o teu progreso no xogo!",
"welcome2notes": "O cumprimento das túas tarefas na realidade controlará o teu progreso no xogo!",
"welcome3": "Progresa na vida e no xogo!",
"welcome3notes": "A medida que mellores na túa vida, o teu avatar subirá de nivel e desbloqueará mascotas, misións, equipamento e máis!",
"imReady": "Entra en Habitica",
@@ -133,5 +133,6 @@
"amountExp": "<%= amount %> de experiencia",
"nGems": "<%= nGems %> xemas",
"limitedAvailabilityDays": "Dispoñíbel durante <%= days %>d <%= hours %>h <%= minutes %>m",
"limitedAvailabilityHours": "Dispoñíbel durante <%= hours %>h <%= minutes %>m"
"limitedAvailabilityHours": "Dispoñíbel durante <%= hours %>h <%= minutes %>m",
"sellItems": "Vender obxectos"
}
+5 -5
View File
@@ -1,10 +1,10 @@
{
"needTips": "Necesitas consellos para comezar? Aquí tes unha guía fácil!",
"step1": "Paso 1: engade tarefas",
"webStep1Text": "Habitica resulta inútil sen metas do mundo real, así que engade algunhas tarefas. Máis adiante, a medida que se te ocorran outras, podes engadilas tamén! As tarefas poden engadirse premendo o botón verde «Crear».\n* **Prepara [pendentes](http://habitica.wikia.com/wiki/To-Dos):** engade tarefas puntuais ou pouco habituais na columna «Pendentes», dunha nunha. Podes premer as tarefas para editalas e engadirlles listas de comprobación, datas límite, e máis!\n* **Prepara [diarias](http://habitica.wikia.com/wiki/Dailies):** engade actividades que tes que completar a diario ou en días concretos da semana, do mes, ou do ano, na columna «Diarias». Preme unha tarefa para editar cando toca ou definir a data de inicio. Tamén podes facer que se repita, por exemplo, cada 3 días.\n* **Prepara [hábitos](http://habitica.wikia.com/wiki/Habits):** engade hábitos que queres adoptar na columna «Hábitos». Podes editar un hábito para convertelo nun bo hábito :heavy_plus_sign: ou un mal hábito :heavy_minus_sign:.\n* **Prepara [recompensas](http://habitica.wikia.com/wiki/Rewards):** ademais das recompensas que se ofrecen dentro do xogo, engade actividades ou premios que queres usar como motivación na columna «Recompensas». É importante que te deas un respiro ou te permitas un pouco de manga ancha!\n* Se necesitas inspiración á hora de escoller tarefas para engadir, bota un ollo a estas páxinas do wiki: [Hábitos de exemplo](http://habitica.wikia.com/wiki/Sample_Habits), [Diarias de exemplo](http://habitica.wikia.com/wiki/Sample_Dailies), [Pendentes de exemplo](http://habitica.wikia.com/wiki/Sample_To-Dos), e [Recompensas de exemplo](http://habitica.wikia.com/wiki/Sample_Custom_Rewards).",
"step2": "Paso 2: gaña puntos facendo cousas na vida real",
"webStep2Text": "Agora comeza a cumprir os obxectivos da lista! A medida que completes tarefas e as marques como tal en Habitica, gañarás [experiencia](http://habitica.wikia.com/wiki/Experience_Points), que te permite subir de nivel, e [ouro](http://habitica.wikia.com/wiki/Gold_Points), que te permite comprar recompensas. Se caes en malos hábitos ou non completas as túas tarefas diarias, perderás [vida](http://habitica.wikia.com/wiki/Health_Points). Dese xeito, as barras de experiencia e de vida de Habitica son un indicador divertido do progreso nas túas metas. Empezarás a ver como mellora a túa vida real a medida que a túa personaxe avanza no xogo.",
"step1": "Paso 1: insire tarefas",
"webStep1Text": "Habitica resulta inútil sen metas do mundo real, así que insire algunhas tarefas. Máis adiante, a medida que se te ocorran outras, podes engadilas tamén! As tarefas poden engadirse premendo o botón verde «Crear».\n* **Prepara [pendentes](http://habitica.wikia.com/wiki/To-Dos):** engade tarefas puntuais ou pouco habituais na columna «Pendentes», dunha nunha. Podes premer as tarefas para editalas e engadirlles listas de comprobación, datas límite, e máis!\n* **Prepara [diarias](http://habitica.wikia.com/wiki/Dailies):** engade actividades que tes que completar a diario ou en días concretos da semana, do mes, ou do ano, na columna «Diarias». Preme unha tarefa para editar cando toca ou definir a data de inicio. Tamén podes facer que se repita, por exemplo, cada 3 días.\n* **Prepara [hábitos](http://habitica.wikia.com/wiki/Habits):** engade hábitos que queres adoptar na columna «Hábitos». Podes cambiar un hábito para convertelo nun bo hábito :heavy_plus_sign: ou un mal hábito :heavy_minus_sign:.\n* **Prepara [recompensas](http://habitica.wikia.com/wiki/Rewards):** ademais das recompensas que se ofrecen dentro do xogo, engade actividades ou premios que queres usar como motivación na columna «Recompensas». É importante que te deas un respiro ou te permitas un pouco de manga ancha!\n* Se necesitas inspiración á hora de escoller tarefas para engadir, bota un ollo a estas páxinas do wiki: [Hábitos de exemplo](http://habitica.wikia.com/wiki/Sample_Habits), [Diarias de exemplo](http://habitica.wikia.com/wiki/Sample_Dailies), [Pendentes de exemplo](http://habitica.wikia.com/wiki/Sample_To-Dos), e [Recompensas de exemplo](http://habitica.wikia.com/wiki/Sample_Custom_Rewards).",
"step2": "Paso 2: gaña puntos facendo cousas na realidade",
"webStep2Text": "Agora comeza a cumprir os obxectivos da lista! A medida que completes tarefas e as marques como tal en Habitica, gañarás [experiencia](http://habitica.wikia.com/wiki/Experience_Points), que te permite subir de nivel, e [ouro](http://habitica.wikia.com/wiki/Gold_Points), que te permite comprar recompensas. Se caes en malos hábitos ou non completas as túas tarefas diarias, perderás [vida](http://habitica.wikia.com/wiki/Health_Points). Dese xeito, as barras de experiencia e de vida de Habitica fan de indicador divertido do progreso nas túas metas. Empezarás a ver como mellora a túa vida a medida que a túa personaxe avanza no xogo.",
"step3": "Paso 3: personaliza e explora Habitica",
"webStep3Text": "Unha vez te afagas aos elementos básicos, podes sacarlle máis partido a Habitica con estas funcionalidades:\n * Organiza as túas tarefas con [etiquetas](https://habitica.fandom.com/wiki/Tags) (edita unha tarefa para engadilas).\n * Personaliza o teu [avatar](https://habitica.fandom.com/wiki/Avatar) premendo a icona de usuario na esquina superior dereita.\n * Compra o teu [equipo](https://habitica.fandom.com/wiki/Equipment) desde «Recompensas» ou nas [tendas](<%= shopUrl %>), e cámbiao desde [Inventario → Equipo](<%= equipUrl %>).\n * Conecta con outras persoas usuarias a través da [taberna](https://habitica.fandom.com/wiki/Tavern).\n * Recolle e abre [ovos](https://habitica.fandom.com/wiki/Eggs) de [mascotas](https://habitica.fandom.com/wiki/Pets) usando [pocións de eclosión](https://habitica.fandom.com/wiki/Hatching_Potions). [Aliméntaas](https://habitica.fandom.com/wiki/Food) para crear [monturas](https://habitica.fandom.com/wiki/Mounts).\n * No nivel 10, escolle unha [clase](https://habitica.fandom.com/wiki/Class_System) e usa as súas [habilidades](https://habitica.fandom.com/wiki/Skills) específicas (niveis do 11 ao 14).\n * Forma un grupo de amizades (preme [Grupo](<%= partyUrl %>) na barra de navegación) para controlarvos entre vós e gañar un pergameo de misión.\n * Derrota monstros e recolle obxectos durante [misións](https://habitica.fandom.com/wiki/Quests) (recibirás unha misión no nivel 15).",
"webStep3Text": "Unha vez te afagas aos elementos básicos, podes sacarlle máis partido a Habitica con estas funcionalidades:\n * Organiza as túas tarefas con [etiquetas](https://habitica.fandom.com/wiki/Tags) (edita unha tarefa para engadilas).\n * Personaliza o teu [avatar](https://habitica.fandom.com/wiki/Avatar) premendo a icona de persoa usuaria na esquina superior dereita.\n * Compra o teu [equipo](https://habitica.fandom.com/wiki/Equipment) desde «Recompensas» ou nas [tendas](<%= shopUrl %>), e cámbiao desde [Inventario → Equipo](<%= equipUrl %>).\n * Conecta con outras persoas usuarias a través da [taberna](https://habitica.fandom.com/wiki/Tavern).\n * Recolle e abre [ovos](https://habitica.fandom.com/wiki/Eggs) de [mascotas](https://habitica.fandom.com/wiki/Pets) usando [pocións de eclosión](https://habitica.fandom.com/wiki/Hatching_Potions). [Aliméntaas](https://habitica.fandom.com/wiki/Food) para crear [monturas](https://habitica.fandom.com/wiki/Mounts).\n * No nivel 10, escolle unha [clase](https://habitica.fandom.com/wiki/Class_System) e usa as súas [habilidades](https://habitica.fandom.com/wiki/Skills) específicas (niveis do 11 ao 14).\n * Forma un grupo de amizades (preme [Grupo](<%= partyUrl %>) na barra de navegación) para controlarvos entre vós e gañar un pergameo de misión.\n * Derrota monstros e recolle obxectos durante [misións](https://habitica.fandom.com/wiki/Quests) (recibirás unha misión no nivel 15).",
"overviewQuestions": "Tes preguntas? Consulta as [preguntas frecuentes](<%= faqUrl %>)! Se non inclúen a túa pregunta, podes pedir axuda no [gremio de axuda de Habitica](<%= helpGuildUrl %>) (en inglés).\n\nSorte coas tarefas!"
}
+1 -1
View File
@@ -10,7 +10,7 @@
"hatchedPet": "Fixeches nacer un novo <%= egg %> de <%= potion %>!",
"triadBingoAchievement": "Conseguiches o logro «Bingo triplo» por atopar tódalas mascotas, domar tódalas monturas e volver atopar tódalas mascotas!",
"triadBingoText2": " e liberou unha corte completa <%= count %> veces",
"triadBingoText": "Encontrou as 90 mascotas, as 90 monturas e volveu encontrar as 90 mascotas outra vez (COMO FIXECHES?!)",
"triadBingoText": "Atopou as 90 mascotas, as 90 monturas e volveu encontrar as 90 mascotas outra vez (COMO FIXECHES?!)",
"triadBingoName": "Bingo triplo",
"mountMasterText2": " e liberou as 90 monturas <%= count %> veces",
"mountMasterText": "Domou as 90 monturas (aínda máis difícil, dálle os teus parabéns!)",
+2 -2
View File
@@ -36,7 +36,7 @@
"questRatUnlockText": "Desbloquea os Ovos de Rata adquiribles no Mercado",
"questOctopusText": "A Chamada de Octothulu",
"questOctopusNotes": "@Urse, un escriba novo de ollos desorbitados, pediuvos axuda paraa explorar unha cova misteriosa preto da beira do mar. Entre as pozas de marea crepusculares érguese unha enorme porta de estalactitas e estalagmitas. A medida que vos acercades da porta, un remuíño escuro comeza a formarse na súa base. Mirades con admiración como un dragón parecido a unha lura ascende a través do abismo. \"A xeneración das estrelas pegañentas espertou\" ruxe @Urse tolamente. \"Despois de vixintillóns de anos, o gran Octothulu está solto de novo, e ávido de deleitarse!\"",
"questOctopusCompletion": "Cun golpe final, a criatura escapa ata o remuíño de onde veu. Non podedes distinguir se @Urse está contento da súa vitoria ou triste de ver marchar a besta. Sen palabras, o seu compañeiro móstravos tres ovos xigantescos e viscosos nunha poza cercana, pousados nun niño de moedas de ouro. \"Probablemente só sexan ovos de polbo\", dis, nervios@. Mentres voltades a casa, @Urse rabisca freneticamente nun xornal e sospeitades que esta non é a última vez que ides saber do gran Octothulu.",
"questOctopusCompletion": "Cun golpe final, a criatura escapa ata o remuíño de onde veu. Non podedes distinguir se @Urse está contento da súa vitoria ou triste de ver marchar a besta. Sen palabras, o seu compañeiro amósavos tres ovos xigantescos e viscosos nunha poza cercana, pousados nun niño de moedas de ouro. \"Probablemente só sexan ovos de polbo\", dis, nervios@. Mentres voltades a casa, @Urse rabisca freneticamente nun xornal e sospeitades que esta non é a última vez que ides saber do gran Octothulu.",
"questOctopusBoss": "Polbulhu",
"questOctopusDropOctopusEgg": "Polbo (Ovo)",
"questOctopusUnlockText": "Desbloquea os Ovos de Polbo adquiribles no Mercado",
@@ -47,7 +47,7 @@
"questHarpyDropParrotEgg": "Papagaio (ovo)",
"questHarpyUnlockText": "Desbloquea os Ovos de Papagaio adquiribles no Mercado",
"questRoosterText": "A Furia do Galo",
"questRoosterNotes": "Durante anos, o agricultor @extrajordanary agricultor empregou galos como espertador. Pero de repente apareceu un galo xigante, e canta máis alto ca calquera outro, espertando a todos en Habitica! Aos Habiticantes privados de sono cústalles completar as súas tarefas diarias. @Pandoro decide que chegou o momento de poñerlle un punto e final a iso. \"Por favor, hai alguén capaz de ensinarlle ao galo a cantar baixiño?\" Preséntaste voluntario, achegándote do Galo unha mañá cedo. Pero el dáse a volta, batendo súas ás xigantes e mostrando as súas garras afiadas, e canta un grito de guerra.",
"questRoosterNotes": "Durante anos, o agricultor @extrajordanary agricultor usou galos como espertador. Pero de repente apareceu un galo xigante, e canta máis alto ca calquera outro, espertando a todos en Habitica! Aos Habiticantes privados de sono cústalles completar as súas tarefas diarias. @Pandoro decide que chegou o momento de poñerlle un punto e final a iso. \"Por favor, hai alguén capaz de ensinarlle ao galo a cantar baixiño?\" Preséntaste voluntario, achegándote do Galo unha mañá cedo. Pero el dáse a volta, batendo súas ás xigantes e amosando as súas garras afiadas, e canta un grito de guerra.",
"questRoosterCompletion": "Con delicadeza e forza, domesticades a fera. Os seus oídos, antes cheos de plumas e tarefas medio esquecidas, están agora totalmente limpos. Cacaréxache suavemente, aconchegando o seu bico no teu ombreiro. O día seguinte, estades list@s para marchar, pero @EmeraldOx corre ata ti cun cesto cuberto. \"Espera! Cando entrei na granxa esta mañá, o galo empurrara estes ovos contra a porta onde durmíades. Penso que quere dárvolos.\" Descubrides o cesto e vedes tres delicados ovos.",
"questRoosterBoss": "Galo",
"questRoosterDropRoosterEgg": "Galo (Ovo)",
+1 -1
View File
@@ -8,7 +8,7 @@
"rebirthOrb": "Usaches unha orbe de renacemento para comezar desde o principio tras chegar ao nivel <%= level %>.",
"rebirthOrb100": "Usaches unha orbe de renacemento para comezar desde o principio tras chegar ao nivel 100 ou máis.",
"rebirthOrbNoLevel": "Usaches unha orbe de renacemento para comezar desde o principio.",
"rebirthPop": "Reinicia instantaneamente a túa personaxe como guerreira de nivel 1 pero mantendo os teus logros, obxectos de colección, e equipamento. As túas tarefas e o seu historial manteranse, pero volverán estar en amarelo. As túas rachas retiraranse, salvo no caso de tarefas de retos. O teu ouro, experiencia e maná, así como os efectos de todas as habilidades, retiraranse. O efecto será inmediato. Para máis información, consulta a páxina do wiki sobre as <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>orbes de renacemento</a> (en inglés).",
"rebirthPop": "Reinicia instantaneamente a túa personaxe como guerreira de nivel 1 pero mantendo os teus logros, obxectos de colección, e equipamento. As túas tarefas e o seu historial manteranse, pero volverán estar en amarelo. As túas series retiraranse, salvo no caso de tarefas de retos. O teu ouro, experiencia e maná, así como os efectos de todas as habilidades, retiraranse. O efecto será inmediato. Para máis información, consulta a páxina do wiki sobre as <a href='http://habitica.wikia.com/wiki/Orb_of_Rebirth' target='_blank'>orbes de renacemento</a> (en inglés).",
"rebirthName": "Orbe de renacemento",
"rebirthComplete": "Acabas de renacer!",
"nextFreeRebirth": "<strong><%= days %> días</strong> ata conseguir <strong>de balde</strong> unha orbe de renacemento"

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