Compare commits

..

153 Commits

Author SHA1 Message Date
SabreCat 53c536b525 4.264.4 2023-03-24 19:46:32 -05:00
SabreCat e2defc675e fix(css): don't make invisible links 2023-03-24 19:46:11 -05:00
SabreCat 232a62ffc7 4.264.3 2023-03-23 14:34:57 -05:00
Phillip Thelen d2d4af227b Fix an issue with gifting subs (#14550)
* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (405 of 405 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2781 of 2781 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (135 of 135 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (217 of 217 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (56 of 56 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (405 of 405 strings)

Translated using Weblate (Portuguese)

Currently translated at 81.7% (331 of 405 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (214 of 214 strings)

Translated using Weblate (Portuguese)

Currently translated at 62.5% (5 of 8 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.8% (1777 of 2781 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Portuguese)

Currently translated at 71.6% (43 of 60 strings)

Translated using Weblate (Portuguese)

Currently translated at 79.7% (609 of 764 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (375 of 375 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (47 of 47 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (770 of 770 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (German)

Currently translated at 100.0% (404 of 404 strings)

Translated using Weblate (German)

Currently translated at 79.5% (97 of 122 strings)

Translated using Weblate (German)

Currently translated at 97.7% (753 of 770 strings)

Translated using Weblate (German)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Portuguese)

Currently translated at 77.0% (94 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 76.7% (310 of 404 strings)

Translated using Weblate (Portuguese)

Currently translated at 76.2% (93 of 122 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 85.6% (2381 of 2781 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (60 of 60 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (217 of 217 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (404 of 404 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 95.8% (732 of 764 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (375 of 375 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (770 of 770 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Portuguese)

Currently translated at 74.5% (91 of 122 strings)

Translated using Weblate (Portuguese)

Currently translated at 72.1% (88 of 122 strings)

Co-authored-by: Ana Beatriz <anabeatriz.augusto06@yahoo.com>
Co-authored-by: Andressa Murari Sudré <andressa@sudre.com.br>
Co-authored-by: Cachinhos <cachnhos@gmail.com>
Co-authored-by: Falzart Werefox <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Jay <fallacyofwildlifeconservation@gmail.com>
Co-authored-by: Jerry Chen <minecjraft@qq.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Yu-Wei Tien <a38498987911@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/de/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/de/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/de/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/contrib/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/de/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/rebirth/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/spells/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
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/Messages
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Questscontent
Translation: Habitica/Rebirth
Translation: Habitica/Spells
Translation: Habitica/Subscriber
Translation: Habitica/Tasks

* gift subscription fix

* remove only

---------

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Ana Beatriz <anabeatriz.augusto06@yahoo.com>
Co-authored-by: Andressa Murari Sudré <andressa@sudre.com.br>
Co-authored-by: Cachinhos <cachnhos@gmail.com>
Co-authored-by: Falzart Werefox <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Jay <fallacyofwildlifeconservation@gmail.com>
Co-authored-by: Jerry Chen <minecjraft@qq.com>
Co-authored-by: Yu-Wei Tien <a38498987911@gmail.com>
Co-authored-by: SabreCat <sabe@habitica.com>
2023-03-23 14:34:40 -05:00
SabreCat 5de2573521 4.264.2 2023-03-21 13:54:23 -05:00
SabreCat b472af532c Merge branch 'apple_sub_fix' into release 2023-03-21 13:54:16 -05:00
SabreCat 027e61a93e 4.264.1 2023-03-17 17:24:56 -05:00
SabreCat c35afb7cfe fix(string): add missing party invite text 2023-03-17 17:24:49 -05:00
SabreCat a16098ccda 4.264.0 2023-03-17 15:09:12 -05:00
SabreCat 118c8421fe fix(tz): account for DST 2023-03-17 15:09:02 -05:00
Natalie L a363e68080 feat(cont): 2023 Spring Fling content (#14525)
* feat(cont): 2023 Spring Fling

* feat(content): 2023 Spring Fling (attempt to add Jungle Buddies Quest Bundle)

* fix(event): various typos and date ranges

* fix(event): correct countdown on Shiny Seed

* fix(quests): correct TypeError in featured list

* feat(content): update Spring gear to canon desc

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-03-17 15:05:04 -05:00
SabreCat 1940062200 4.263.1 2023-03-16 16:23:00 -05:00
SabreCat aea075d0bf chore(content): make Jungle Buddies available 2023-03-16 16:22:47 -05:00
SabreCat 3e63d74b2c 4.263.0 2023-03-16 12:52:15 -05:00
SabreCat 199ce3e6f7 fix(text): update description of group task approval by @CuriousMagpie 2023-03-16 12:51:51 -05:00
SabreCat c83a8c9766 fix(stable): correctly suppress hatching modal 2023-03-15 16:15:55 -05:00
CuriousMagpie c481354f78 feat(content): add new achievement, Plant Parent 2023-03-15 15:51:04 -05:00
CuriousMagpie ec9973f9d2 feature(upgrade): added btn-block styling to "Unpause Damage" button 2023-03-15 15:24:02 -05:00
SabreCat bbea789700 fix(test): don't cross two month boundaries when anticipating +1 perk 2023-03-14 16:27:09 -05:00
SabreCat 5359a2bf3d fix(lint): === 2023-03-14 16:14:48 -05:00
Phillip Thelen 93e922e774 fix logic 2023-03-14 15:55:41 +01:00
SabreCat 377b152ffd 4.262.2 2023-03-14 09:25:42 -05:00
SabreCat 8ff8213954 Merge branch 'sabrecat/invite-notif' into release 2023-03-14 09:25:29 -05:00
SabreCat 00bdf81902 4.262.1 2023-03-14 09:15:37 -05:00
SabreCat 4ae50e4d44 Merge branch 'develop' into release 2023-03-14 09:15:18 -05:00
SabreCat 383cd84016 feat(event): Pi Day 2023-03-14 09:12:39 -05:00
Phillip Thelen f6f1202baf better init for perkMonthCount 2023-03-14 14:37:47 +01:00
Weblate 0c65ff6fec Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (98 of 98 strings)

Translated using Weblate (Cebuano)

Currently translated at 0.0% (0 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.7% (1718 of 2781 strings)

Translated using Weblate (Portuguese)

Currently translated at 59.9% (130 of 217 strings)

Translated using Weblate (Portuguese)

Currently translated at 81.9% (331 of 404 strings)

Translated using Weblate (Portuguese)

Currently translated at 92.5% (198 of 214 strings)

Translated using Weblate (Portuguese)

Currently translated at 71.3% (87 of 122 strings)

Translated using Weblate (Portuguese)

Currently translated at 96.2% (130 of 135 strings)

Translated using Weblate (Portuguese)

Currently translated at 96.2% (130 of 135 strings)

Translated using Weblate (Portuguese)

Currently translated at 98.5% (133 of 135 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.7% (1774 of 2781 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.3% (145 of 146 strings)

Translated using Weblate (Portuguese)

Currently translated at 99.3% (145 of 146 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.7% (1773 of 2781 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.5% (1766 of 2781 strings)

Translated using Weblate (Italian)

Currently translated at 98.7% (760 of 770 strings)

Translated using Weblate (Estonian)

Currently translated at 13.6% (20 of 146 strings)

Translated using Weblate (Ukrainian)

Currently translated at 67.5% (516 of 764 strings)

Translated using Weblate (Estonian)

Currently translated at 4.1% (6 of 146 strings)

Translated using Weblate (Vietnamese)

Currently translated at 79.6% (613 of 770 strings)

Translated using Weblate (Vietnamese)

Currently translated at 78.9% (608 of 770 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Vietnamese)

Currently translated at 77.2% (595 of 770 strings)

Translated using Weblate (Indonesian)

Currently translated at 98.5% (133 of 135 strings)

Translated using Weblate (Indonesian)

Currently translated at 94.1% (353 of 375 strings)

Translated using Weblate (Malay)

Currently translated at 38.6% (70 of 181 strings)

Translated using Weblate (Vietnamese)

Currently translated at 76.3% (588 of 770 strings)

Translated using Weblate (Vietnamese)

Currently translated at 97.0% (131 of 135 strings)

Translated using Weblate (Vietnamese)

Currently translated at 95.2% (139 of 146 strings)

Translated using Weblate (Vietnamese)

Currently translated at 62.5% (167 of 267 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (217 of 217 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.4% (200 of 214 strings)

Translated using Weblate (Ukrainian)

Currently translated at 67.4% (515 of 764 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (770 of 770 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (217 of 217 strings)

Translated using Weblate (French)

Currently translated at 100.0% (217 of 217 strings)

Translated using Weblate (Vietnamese)

Currently translated at 76.0% (111 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2781 of 2781 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.4% (170 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Spanish)

Currently translated at 93.0% (2587 of 2781 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Serbian)

Currently translated at 94.8% (128 of 135 strings)

Translated using Weblate (Serbian)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Italian)

Currently translated at 98.7% (760 of 770 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (770 of 770 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (770 of 770 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2781 of 2781 strings)

Translated using Weblate (French)

Currently translated at 100.0% (2781 of 2781 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.4% (766 of 770 strings)

Translated using Weblate (Indonesian)

Currently translated at 99.3% (765 of 770 strings)

Translated using Weblate (French)

Currently translated at 100.0% (770 of 770 strings)

Translated using Weblate (Indonesian)

Currently translated at 74.7% (302 of 404 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (French)

Currently translated at 100.0% (2777 of 2777 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.6% (194 of 214 strings)

Translated using Weblate (French)

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (French)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.8% (169 of 182 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.7% (1714 of 2777 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.7% (1714 of 2777 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (94 of 94 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (131 of 131 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.6% (1711 of 2777 strings)

Translated using Weblate (Ukrainian)

Currently translated at 66.6% (509 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.5% (1709 of 2777 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Malay)

Currently translated at 50.0% (27 of 54 strings)

Translated using Weblate (Indonesian)

Currently translated at 53.3% (32 of 60 strings)

Translated using Weblate (Dutch)

Currently translated at 86.3% (2397 of 2777 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2777 of 2777 strings)

Translated using Weblate (Dutch)

Currently translated at 86.3% (2397 of 2777 strings)

Translated using Weblate (Spanish)

Currently translated at 93.2% (2587 of 2773 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.3% (350 of 375 strings)

Translated using Weblate (Indonesian)

Currently translated at 62.9% (34 of 54 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Slovak)

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Czech)

Currently translated at 78.0% (114 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 98.9% (756 of 764 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 88.4% (161 of 182 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.5% (347 of 375 strings)

Translated using Weblate (Japanese)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Spanish)

Currently translated at 93.2% (2587 of 2773 strings)

Translated using Weblate (French)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (French)

Currently translated at 99.0% (757 of 764 strings)

Translated using Weblate (French)

Currently translated at 95.0% (116 of 122 strings)

Translated using Weblate (French)

Currently translated at 100.0% (375 of 375 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (French)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Malay)

Currently translated at 36.6% (41 of 112 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.6% (117 of 135 strings)

Translated using Weblate (Ukrainian)

Currently translated at 24.9% (693 of 2773 strings)

Translated using Weblate (Indonesian)

Currently translated at 94.2% (114 of 121 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Tagalog)

Currently translated at 96.7% (180 of 186 strings)

Translated using Weblate (Tagalog)

Currently translated at 53.2% (115 of 216 strings)

Translated using Weblate (Tagalog)

Currently translated at 42.6% (114 of 267 strings)

Translated using Weblate (Filipino)

Currently translated at 32.8% (910 of 2773 strings)

Translated using Weblate (Ukrainian)

Currently translated at 65.8% (503 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.3% (113 of 121 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Filipino)

Currently translated at 32.6% (906 of 2773 strings)

Translated using Weblate (Filipino)

Currently translated at 80.0% (108 of 135 strings)

Translated using Weblate (Filipino)

Currently translated at 32.6% (906 of 2773 strings)

Translated using Weblate (Filipino)

Currently translated at 81.3% (621 of 763 strings)

Translated using Weblate (Filipino)

Currently translated at 71.7% (548 of 764 strings)

Translated using Weblate (Filipino)

Currently translated at 32.5% (903 of 2773 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (764 of 764 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.4% (114 of 135 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.4% (1705 of 2773 strings)

Translated using Weblate (Serbian)

Currently translated at 75.6% (571 of 755 strings)

Translated using Weblate (Serbian)

Currently translated at 96.2% (179 of 186 strings)

Translated using Weblate (Spanish)

Currently translated at 93.2% (2587 of 2773 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 94.2% (115 of 122 strings)

Translated using Weblate (Italian)

Currently translated at 91.3% (244 of 267 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.6% (1764 of 2773 strings)

Translated using Weblate (Italian)

Currently translated at 88.5% (108 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.5% (112 of 121 strings)

Translated using Weblate (Indonesian)

Currently translated at 59.2% (32 of 54 strings)

Translated using Weblate (Spanish)

Currently translated at 93.2% (2587 of 2773 strings)

Translated using Weblate (Arabic)

Currently translated at 85.0% (649 of 763 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 85.8% (2380 of 2773 strings)

Translated using Weblate (Dutch)

Currently translated at 86.0% (2386 of 2773 strings)

Translated using Weblate (Indonesian)

Currently translated at 61.4% (1704 of 2773 strings)

Translated using Weblate (Spanish)

Currently translated at 93.2% (2587 of 2773 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.5% (347 of 375 strings)

Translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Malay)

Currently translated at 33.1% (60 of 181 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.6% (340 of 375 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (Ukrainian)

Currently translated at 99.2% (265 of 267 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (375 of 375 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.1% (338 of 375 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Russian)

Currently translated at 82.7% (101 of 122 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (375 of 375 strings)

Translated using Weblate (Spanish)

Currently translated at 93.2% (2587 of 2773 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Spanish)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Spanish)

Currently translated at 86.0% (105 of 122 strings)

Translated using Weblate (Spanish)

Currently translated at 97.2% (142 of 146 strings)

Translated using Weblate (Spanish)

Currently translated at 80.3% (98 of 122 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (375 of 375 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.9% (110 of 121 strings)

Translated using Weblate (Indonesian)

Currently translated at 88.5% (332 of 375 strings)

Translated using Weblate (Arabic)

Currently translated at 83.2% (635 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 82.6% (631 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 82.0% (626 of 763 strings)

Translated using Weblate (Spanish (Latin America))

Currently translated at 100.0% (374 of 374 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.5% (1761 of 2773 strings)

Translated using Weblate (Arabic)

Currently translated at 81.7% (624 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.2% (108 of 121 strings)

Translated using Weblate (Arabic)

Currently translated at 81.5% (622 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 80.9% (618 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 78.3% (598 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 77.8% (594 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 82.7% (101 of 122 strings)

Translated using Weblate (Malay)

Currently translated at 20.9% (38 of 181 strings)

Translated using Weblate (Malay)

Currently translated at 19.3% (35 of 181 strings)

Translated using Weblate (Malay)

Currently translated at 18.2% (33 of 181 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2773 of 2773 strings)

Translated using Weblate (Arabic)

Currently translated at 76.8% (586 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 87.6% (106 of 121 strings)

Translated using Weblate (Arabic)

Currently translated at 76.2% (582 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 76.1% (581 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 82.7% (101 of 122 strings)

Translated using Weblate (Russian)

Currently translated at 99.8% (762 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2773 of 2773 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (182 of 182 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 74.3% (567 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 74.1% (566 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 72.2% (551 of 763 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.3% (1757 of 2773 strings)

Translated using Weblate (Portuguese)

Currently translated at 63.3% (1757 of 2773 strings)

Translated using Weblate (Portuguese)

Currently translated at 85.1% (650 of 763 strings)

Translated using Weblate (Malay)

Currently translated at 17.6% (32 of 181 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Bulgarian)

Currently translated at 73.9% (108 of 146 strings)

Translated using Weblate (Russian)

Currently translated at 80.3% (98 of 122 strings)

Translated using Weblate (Arabic)

Currently translated at 71.8% (548 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.9% (747 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 71.5% (546 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 97.1% (741 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 71.1% (543 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 71.0% (542 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 70.6% (539 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Arabic)

Currently translated at 69.8% (533 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 69.2% (528 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 68.9% (526 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 82.7% (101 of 122 strings)

Translated using Weblate (French)

Currently translated at 95.0% (116 of 122 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (221 of 221 strings)

Translated using Weblate (Malay)

Currently translated at 11.6% (21 of 181 strings)

Translated using Weblate (Indonesian)

Currently translated at 95.9% (732 of 763 strings)

Translated using Weblate (Ukrainian)

Currently translated at 94.7% (253 of 267 strings)

Translated using Weblate (French)

Currently translated at 88.5% (108 of 122 strings)

Translated using Weblate (French)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 79.5% (97 of 122 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (181 of 181 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 95.0% (725 of 763 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Filipino)

Currently translated at 83.0% (93 of 112 strings)

Translated using Weblate (Filipino)

Currently translated at 73.0% (195 of 267 strings)

Translated using Weblate (Filipino)

Currently translated at 32.7% (909 of 2773 strings)

Translated using Weblate (Filipino)

Currently translated at 91.9% (343 of 373 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2773 of 2773 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (122 of 122 strings)

Translated using Weblate (Filipino)

Currently translated at 32.8% (910 of 2773 strings)

Translated using Weblate (Filipino)

Currently translated at 32.8% (911 of 2773 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Filipino)

Currently translated at 32.0% (889 of 2773 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 95.0% (116 of 122 strings)

Translated using Weblate (Indonesian)

Currently translated at 93.3% (712 of 763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (2769 of 2773 strings)

Translated using Weblate (Italian)

Currently translated at 99.2% (757 of 763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (755 of 755 strings)

Translated using Weblate (Filipino)

Currently translated at 95.6% (178 of 186 strings)

Translated using Weblate (Filipino)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (French)

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (15 of 15 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (755 of 755 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (French)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 86.8% (106 of 122 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 84.2% (107 of 127 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 66.9% (511 of 763 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (214 of 214 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (216 of 216 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (755 of 755 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Indonesian)

Currently translated at 92.0% (702 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (135 of 135 strings)

Translated using Weblate (Dutch)

Currently translated at 95.3% (205 of 215 strings)

Translated using Weblate (Dutch)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Dutch)

Currently translated at 96.1% (126 of 131 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Spanish)

Currently translated at 93.0% (2581 of 2773 strings)

Translated using Weblate (Dutch)

Currently translated at 97.2% (176 of 181 strings)

Translated using Weblate (Dutch)

Currently translated at 95.0% (57 of 60 strings)

Translated using Weblate (Dutch)

Currently translated at 98.6% (144 of 146 strings)

Translated using Weblate (Dutch)

Currently translated at 91.4% (202 of 221 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (404 of 404 strings)

Translated using Weblate (Indonesian)

Currently translated at 91.4% (698 of 763 strings)

Translated using Weblate (German)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (German)

Currently translated at 89.8% (240 of 267 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (2769 of 2773 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2773 of 2773 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (760 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 63.4% (484 of 763 strings)

Translated using Weblate (Russian)

Currently translated at 99.2% (2745 of 2767 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (763 of 763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.4% (759 of 763 strings)

Translated using Weblate (Indonesian)

Currently translated at 91.0% (695 of 763 strings)

Translated using Weblate (Arabic)

Currently translated at 61.7% (467 of 756 strings)

Translated using Weblate (French)

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (French)

Currently translated at 100.0% (2763 of 2763 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Indonesian)

Currently translated at 90.0% (681 of 756 strings)

Translated using Weblate (Malay)

Currently translated at 10.4% (19 of 181 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (2763 of 2763 strings)

Translated using Weblate (Spanish)

Currently translated at 93.4% (2581 of 2763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.5% (677 of 756 strings)

Translated using Weblate (Spanish)

Currently translated at 93.4% (2581 of 2763 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (135 of 135 strings)

Translated using Weblate (Russian)

Currently translated at 95.5% (255 of 267 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Indonesian)

Currently translated at 89.1% (674 of 756 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (2763 of 2763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 95.8% (256 of 267 strings)

Translated using Weblate (Malay)

Currently translated at 6.0% (11 of 181 strings)

Translated using Weblate (Filipino)

Currently translated at 98.3% (183 of 186 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Ukrainian)

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Indonesian)

Currently translated at 88.0% (666 of 756 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (2762 of 2763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Filipino)

Currently translated at 98.3% (183 of 186 strings)

Translated using Weblate (Tagalog)

Currently translated at 96.7% (180 of 186 strings)

Translated using Weblate (Filipino)

Currently translated at 98.9% (184 of 186 strings)

Translated using Weblate (Filipino)

Currently translated at 80.8% (76 of 94 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Filipino)

Currently translated at 100.0% (61 of 61 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (135 of 135 strings)

Translated using Weblate (Russian)

Currently translated at 99.5% (214 of 215 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (215 of 215 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Russian)

Currently translated at 94.3% (252 of 267 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 89.5% (239 of 267 strings)

Translated using Weblate (Russian)

Currently translated at 99.3% (2745 of 2763 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Indonesian)

Currently translated at 87.1% (659 of 756 strings)

Translated using Weblate (Portuguese)

Currently translated at 80.9% (179 of 221 strings)

Translated using Weblate (Arabic)

Currently translated at 60.0% (454 of 756 strings)

Translated using Weblate (Arabic)

Currently translated at 67.0% (63 of 94 strings)

Translated using Weblate (Malay)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (French)

Currently translated at 100.0% (215 of 215 strings)

Translated using Weblate (Russian)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (French)

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Russian)

Currently translated at 99.1% (2740 of 2763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.8% (2758 of 2763 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.7% (754 of 756 strings)

Translated using Weblate (French)

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Portuguese)

Currently translated at 100.0% (146 of 146 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (215 of 215 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (112 of 112 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (267 of 267 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (2763 of 2763 strings)

Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (756 of 756 strings)

Translated using Weblate (Indonesian)

Currently translated at 86.7% (656 of 756 strings)

Co-authored-by: An Nguyen <nguyen.thienan.business@gmail.com>
Co-authored-by: Ana Beatriz <anabeatriz.augusto06@yahoo.com>
Co-authored-by: Andressa Murari Sudré <andressa@sudre.com.br>
Co-authored-by: Anfasa Rabbany <lelcraft96@gmail.com>
Co-authored-by: Benoit Hetru <me+hbtc@gahanka.net>
Co-authored-by: Binny <45uipcik@duck.com>
Co-authored-by: Camille <barberacamille47@gmail.com>
Co-authored-by: Chloé Fonson <chl.fsn@gmail.com>
Co-authored-by: Daniel Villarroel Aguilera <y4v7l45j@duck.com>
Co-authored-by: Falzart Werefox <muh_fauzi_ramadhan@yahoo.co.id>
Co-authored-by: Hanafi <naflizo@gmail.com>
Co-authored-by: Harvey James <harveymoldon@gmail.com>
Co-authored-by: Ike Osenberg <ike.osenberg@gmail.com>
Co-authored-by: Jerry Chen <minecjraft@qq.com>
Co-authored-by: Jonathan Garcia <jonathangarcia0@duck.com>
Co-authored-by: Karylle Mae Treuse G. Labitad <treuse2006@gmail.com>
Co-authored-by: Kris <dawnut.x@gmail.com>
Co-authored-by: Kuan Yu Chou <jenny2311@gmail.com>
Co-authored-by: LiziKnight <liziknight0316@outlook.com>
Co-authored-by: M <maperray@gmail.com>
Co-authored-by: Maria Otonuo <mariaotonio@gmail.com>
Co-authored-by: Martim Pinto Paiva <pintopaivam@gmail.com>
Co-authored-by: Natalie Luhrs <eilatan@gmail.com>
Co-authored-by: Nazar Paruna <nazarparuna@gmail.com>
Co-authored-by: Nero <pablofh004@gmail.com>
Co-authored-by: Nina Glasbergen <ninaglas2002@gmail.com>
Co-authored-by: Phillip Thelen <phillip@habitica.com>
Co-authored-by: Pyotr Stolnikov <pitmysterio@gmail.com>
Co-authored-by: Raithe <RaitheOfDureya@gmail.com>
Co-authored-by: Rara <annisarahmah.xmipa2@gmail.com>
Co-authored-by: Ruben <r.tartwijk@gmail.com>
Co-authored-by: Sandra Marcial <sandramarcial80@gmail.com>
Co-authored-by: Sciuridae <sweetvshoney@163.com>
Co-authored-by: Sergey Shevelev <vlkgamer45@gmail.com>
Co-authored-by: Soul <joninsoul@gmail.com>
Co-authored-by: Tristan Roosipuu <roosipuutristan@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: endriw cisersa batistela correa <endriwbatistela@gmail.com>
Co-authored-by: fluffstuff <opositesandreality@gmail.com>
Co-authored-by: maikodoglas <maickeldouglas.mm@outlook.com>
Co-authored-by: polyglottericus <vincemorel.vilan.889@gmail.com>
Co-authored-by: そら <comi4work@gmail.com>
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/bg/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/ceb/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/cs/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/es/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/et/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/id/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/it/
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/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/vi/
Translate-URL: https://translate.habitica.com/projects/habitica/achievements/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/es/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/id/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/it/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/pt/
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/backgrounds/vi/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/backgrounds/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/challenge/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/character/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/character/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/character/tl/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/es/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/id/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/it/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/communityguidelines/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/content/es_419/
Translate-URL: https://translate.habitica.com/projects/habitica/content/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/content/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/content/id/
Translate-URL: https://translate.habitica.com/projects/habitica/content/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/content/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/content/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/death/sk/
Translate-URL: https://translate.habitica.com/projects/habitica/death/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/id/
Translate-URL: https://translate.habitica.com/projects/habitica/defaulttasks/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/id/
Translate-URL: https://translate.habitica.com/projects/habitica/faq/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/front/es/
Translate-URL: https://translate.habitica.com/projects/habitica/front/fr/
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/front/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/front/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/front/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/front/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/front/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/es/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/id/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/it/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/nl/
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/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/gear/zh_Hant/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/id/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/generic/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/id/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/groups/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/inventory/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/de/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/it/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/tl/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/vi/
Translate-URL: https://translate.habitica.com/projects/habitica/limited/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/merch/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/messages/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/npc/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/overview/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/de/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ms/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/pets/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/ar/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/quests/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/pt_BR/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/questscontent/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/settings/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/fr/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/pt/
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/subscriber/tl/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/uk/
Translate-URL: https://translate.habitica.com/projects/habitica/subscriber/zh_Hans/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/fil/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/id/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/nl/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/pt/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/ru/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/sr/
Translate-URL: https://translate.habitica.com/projects/habitica/tasks/vi/
Translation: Habitica/Achievements
Translation: Habitica/Backgrounds
Translation: Habitica/Challenge
Translation: Habitica/Character
Translation: Habitica/Communityguidelines
Translation: Habitica/Content
Translation: Habitica/Death
Translation: Habitica/Defaulttasks
Translation: Habitica/Faq
Translation: Habitica/Front
Translation: Habitica/Gear
Translation: Habitica/Generic
Translation: Habitica/Groups
Translation: Habitica/Inventory
Translation: Habitica/Limited
Translation: Habitica/Merch
Translation: Habitica/Messages
Translation: Habitica/Npc
Translation: Habitica/Overview
Translation: Habitica/Pets
Translation: Habitica/Quests
Translation: Habitica/Questscontent
Translation: Habitica/Settings
Translation: Habitica/Subscriber
Translation: Habitica/Tasks
2023-03-14 10:16:35 +01:00
Phillip Thelen 8dcacdc92e Only update user objects that don’t have notification yet (#14514)
* build(deps): bump stopword from 2.0.5 to 2.0.7 in /website/client (#14504)

Bumps [stopword](https://github.com/fergiemcdowall/stopword) from 2.0.5 to 2.0.7.
- [Release notes](https://github.com/fergiemcdowall/stopword/releases)
- [Commits](https://github.com/fergiemcdowall/stopword/commits/v.2.0.7)

---
updated-dependencies:
- dependency-name: stopword
  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>

* build(deps): bump stripe from 11.6.0 to 11.10.0 (#14503)

Bumps [stripe](https://github.com/stripe/stripe-node) from 11.6.0 to 11.10.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/v11.6.0...v11.10.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>

* build(deps): bump apidoc from 0.53.1 to 0.54.0 (#14501)

Bumps [apidoc](https://github.com/apidoc/apidoc) from 0.53.1 to 0.54.0.
- [Release notes](https://github.com/apidoc/apidoc/releases)
- [Changelog](https://github.com/apidoc/apidoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apidoc/apidoc/compare/0.53.1...0.54.0)

---
updated-dependencies:
- dependency-name: apidoc
  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>

* build(deps): bump @sideway/formula in /website/client (#14495)

Bumps [@sideway/formula](https://github.com/sideway/formula) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sideway/formula/releases)
- [Commits](https://github.com/sideway/formula/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: "@sideway/formula"
  dependency-type: indirect
...

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

* build(deps): bump validator from 13.7.0 to 13.9.0 in /website/client (#14492)

Bumps [validator](https://github.com/validatorjs/validator.js) from 13.7.0 to 13.9.0.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/validatorjs/validator.js/compare/13.7.0...13.9.0)

---
updated-dependencies:
- dependency-name: validator
  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>

* build(deps): bump validator from 13.7.0 to 13.9.0 (#14488)

Bumps [validator](https://github.com/validatorjs/validator.js) from 13.7.0 to 13.9.0.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/validatorjs/validator.js/compare/13.7.0...13.9.0)

---
updated-dependencies:
- dependency-name: validator
  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>

* build(deps): bump hellojs from 1.19.5 to 1.20.0 in /website/client (#14479)

Bumps [hellojs](https://github.com/MrSwitch/hello.js) from 1.19.5 to 1.20.0.
- [Release notes](https://github.com/MrSwitch/hello.js/releases)
- [Changelog](https://github.com/MrSwitch/hello.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MrSwitch/hello.js/compare/v1.19.5...v1.20.0)

---
updated-dependencies:
- dependency-name: hellojs
  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>

* build(deps): bump ua-parser-js from 0.7.31 to 0.7.33 in /website/client (#14463)

Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.31 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.31...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

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

* build(deps): bump cookiejar from 2.1.3 to 2.1.4 (#14462)

Bumps [cookiejar](https://github.com/bmeck/node-cookiejar) from 2.1.3 to 2.1.4.
- [Release notes](https://github.com/bmeck/node-cookiejar/releases)
- [Commits](https://github.com/bmeck/node-cookiejar/commits)

---
updated-dependencies:
- dependency-name: cookiejar
  dependency-type: indirect
...

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

* build(deps): bump glob from 8.0.3 to 8.1.0 (#14448)

Bumps [glob](https://github.com/isaacs/node-glob) from 8.0.3 to 8.1.0.
- [Release notes](https://github.com/isaacs/node-glob/releases)
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v8.0.3...v8.1.0)

---
updated-dependencies:
- dependency-name: glob
  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>

* build(deps): bump dompurify from 2.4.1 to 2.4.3 in /website/client (#14443)

Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.4.1 to 2.4.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.1...2.4.3)

---
updated-dependencies:
- dependency-name: dompurify
  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>

* fixed typo (#14417)

In   "weaponSpecialWinter2023RogueNotes", changed "Incrases" to "Increases"

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

* fix test

* fix spy

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: gwenexner <49045733+gwenexner@users.noreply.github.com>
Co-authored-by: SabreCat <sabe@habitica.com>
2023-03-13 16:24:00 -05:00
SabreCat 7874ae5092 fix(hyperlinks): WHITE inactive drawer tabs 2023-03-13 15:28:26 -05:00
SabreCat 481719e513 Revert "fix(hyperlinks): gray inactive drawer tabs"
This reverts commit 9657112bca.
2023-03-13 15:19:41 -05:00
SabreCat 9657112bca fix(hyperlinks): gray inactive drawer tabs 2023-03-13 14:35:43 -05:00
SabreCat f7026b2478 Merge branch 'release' into sabrecat/invite-notif 2023-03-13 14:13:06 -05:00
SabreCat 458aee9a3a Merge branch 'release' into develop 2023-03-07 11:48:14 -06:00
SabreCat 0b6b967753 4.262.0 2023-03-07 10:33:10 -06:00
Natalie L 57f86bac70 feat(content): March backgrounds and Enchanted Armoire items (#14524)
* feat(content): March backgrounds and Enchanted Armoire

* fix(backgrounds): trivial syntax consistency

* fix(gear): missing verbiage

* fix(gear): correct usage of <%= attrs %>

* fix(backgrounds): broken string tokens

* fix(backgrounds): more broken tokens

---------

Co-authored-by: SabreCat <sabe@habitica.com>
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
2023-03-06 16:57:56 -06:00
Natalie L f2fe83a469 feature(upgrade): copy Pause Damage button to Settings page (#14532)
* feature(upgrade): copying Pause Damage button to Settings page

* Removing duplicate string 'cause I can't search effectively. 😅
2023-03-06 16:16:23 -06:00
SabreCat 3354ca048c fix(analytics): record missing group ID info
also update subproject while I'm here
2023-03-06 15:36:17 -06:00
Phillip Thelen 0754c0ff05 correctly set limit 2023-03-02 18:04:02 +01:00
Phillip Thelen 5d1346e65c fix lint 2023-03-01 15:06:08 +01:00
Phillip Thelen a2ce0ab099 Set request size limit higher, because of iOS receipt sizes 2023-03-01 14:48:50 +01:00
SabreCat 16ae182f34 Merge branch 'release' into develop 2023-02-28 15:37:35 -06:00
Phillip Thelen 6887fd70c0 try something 2023-02-28 16:17:52 +01:00
SabreCat f327795761 4.261.1 2023-02-27 16:17:17 -06:00
SabreCat 8cf5a380da fix(strings): more silly 2023-02-27 16:17:09 -06:00
Phillip Thelen def24142ca remove wrong test 2023-02-27 13:30:44 +01:00
Phillip Thelen c29049146d prevent sub accidentally also being applied to other account 2023-02-27 12:06:27 +01:00
SabreCat cc419385f6 4.261.0 2023-02-24 16:32:41 -06:00
SabreCat 45107fe48f Merge branch 'sabrecat/transactions-404' into release 2023-02-24 16:32:35 -06:00
SabreCat 80f517f1ad feat(content): subscriber items March 2023
Also fixes Vue templating in one paragraph of the Community Guidelines.
2023-02-24 16:31:50 -06:00
Phillip Thelen 57fb7ca6f2 fix 2023-02-24 11:25:53 +01:00
Phillip Thelen 62b171ffa5 fix linting 2023-02-24 10:47:50 +01:00
Phillip Thelen be18476292 correctly set perkMonthCount 2023-02-23 13:20:47 +01:00
SabreCat b6e9d0c9c0 Merge branch 'sabrecat/transactions-404' into develop 2023-02-22 15:20:16 -06:00
SabreCat 442d9ca9cd fix(permissions): route away from purchase history for non-support 2023-02-22 15:15:03 -06:00
Phillip Thelen 3f56b7fa3f fix offset calculation 2023-02-17 15:42:31 +01:00
SabreCat 14f9debfdb fix(css): remove yet more blue-10 overrides 2023-02-16 14:34:24 -06:00
SabreCat 4a1011f1af fix(hyperlinks): remove some blue overrides 2023-02-16 12:57:35 -06:00
Phillip Thelen d69de2948b fix import 2023-02-16 09:58:09 +01:00
Phillip Thelen c5f5da1d32 Merge remote-tracking branch 'origin/develop' into apple_sub_fix 2023-02-16 09:38:14 +01:00
Phillip Thelen e338fb8ce7 Merge branch 'apple_sub_fix' of https://github.com/HabitRPG/habitica into apple_sub_fix 2023-02-16 09:37:36 +01:00
Phillip Thelen 2d5dcae406 fix tests 2023-02-16 09:37:00 +01:00
SabreCat 9ec1917e6d feat(invites): provide link to inviting user in party notif
Also changes basic links sitewide to purple-300
2023-02-15 16:54:46 -06:00
SabreCat 409ce5dbfb Merge branch 'release' into develop 2023-02-15 15:29:34 -06:00
SabreCat ab706abed5 fix(test): remove outdated event expectation 2023-02-15 15:29:23 -06:00
Phillip Thelen 3203b09b7a reset perkMonthCount when subscription ends 2023-02-15 10:05:18 +01:00
gwenexner 2ea023299c fixed typo (#14417)
In   "weaponSpecialWinter2023RogueNotes", changed "Incrases" to "Increases"
2023-02-13 16:33:10 -06:00
dependabot[bot] ce1ce47d18 build(deps): bump dompurify from 2.4.1 to 2.4.3 in /website/client (#14443)
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.4.1 to 2.4.3.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/2.4.1...2.4.3)

---
updated-dependencies:
- dependency-name: dompurify
  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-02-13 16:27:33 -06:00
dependabot[bot] 0d1e8ec3f9 build(deps): bump glob from 8.0.3 to 8.1.0 (#14448)
Bumps [glob](https://github.com/isaacs/node-glob) from 8.0.3 to 8.1.0.
- [Release notes](https://github.com/isaacs/node-glob/releases)
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v8.0.3...v8.1.0)

---
updated-dependencies:
- dependency-name: glob
  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-02-13 16:27:03 -06:00
dependabot[bot] 4a849e6d15 build(deps): bump cookiejar from 2.1.3 to 2.1.4 (#14462)
Bumps [cookiejar](https://github.com/bmeck/node-cookiejar) from 2.1.3 to 2.1.4.
- [Release notes](https://github.com/bmeck/node-cookiejar/releases)
- [Commits](https://github.com/bmeck/node-cookiejar/commits)

---
updated-dependencies:
- dependency-name: cookiejar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-13 16:26:33 -06:00
dependabot[bot] 7f65079cfe build(deps): bump ua-parser-js from 0.7.31 to 0.7.33 in /website/client (#14463)
Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.31 to 0.7.33.
- [Release notes](https://github.com/faisalman/ua-parser-js/releases)
- [Changelog](https://github.com/faisalman/ua-parser-js/blob/master/changelog.md)
- [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.31...0.7.33)

---
updated-dependencies:
- dependency-name: ua-parser-js
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-13 16:26:11 -06:00
dependabot[bot] 04f54d5e03 build(deps): bump hellojs from 1.19.5 to 1.20.0 in /website/client (#14479)
Bumps [hellojs](https://github.com/MrSwitch/hello.js) from 1.19.5 to 1.20.0.
- [Release notes](https://github.com/MrSwitch/hello.js/releases)
- [Changelog](https://github.com/MrSwitch/hello.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MrSwitch/hello.js/compare/v1.19.5...v1.20.0)

---
updated-dependencies:
- dependency-name: hellojs
  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-02-13 16:03:23 -06:00
dependabot[bot] 925e2e5ec6 build(deps): bump validator from 13.7.0 to 13.9.0 (#14488)
Bumps [validator](https://github.com/validatorjs/validator.js) from 13.7.0 to 13.9.0.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/validatorjs/validator.js/compare/13.7.0...13.9.0)

---
updated-dependencies:
- dependency-name: validator
  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-02-13 15:41:09 -06:00
dependabot[bot] a549668522 build(deps): bump validator from 13.7.0 to 13.9.0 in /website/client (#14492)
Bumps [validator](https://github.com/validatorjs/validator.js) from 13.7.0 to 13.9.0.
- [Release notes](https://github.com/validatorjs/validator.js/releases)
- [Changelog](https://github.com/validatorjs/validator.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/validatorjs/validator.js/compare/13.7.0...13.9.0)

---
updated-dependencies:
- dependency-name: validator
  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-02-13 15:40:52 -06:00
dependabot[bot] 02e0e45da6 build(deps): bump @sideway/formula in /website/client (#14495)
Bumps [@sideway/formula](https://github.com/sideway/formula) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/sideway/formula/releases)
- [Commits](https://github.com/sideway/formula/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: "@sideway/formula"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-13 15:40:31 -06:00
dependabot[bot] 1e72dbe155 build(deps): bump apidoc from 0.53.1 to 0.54.0 (#14501)
Bumps [apidoc](https://github.com/apidoc/apidoc) from 0.53.1 to 0.54.0.
- [Release notes](https://github.com/apidoc/apidoc/releases)
- [Changelog](https://github.com/apidoc/apidoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/apidoc/apidoc/compare/0.53.1...0.54.0)

---
updated-dependencies:
- dependency-name: apidoc
  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-02-13 15:39:05 -06:00
dependabot[bot] e71f0558fe build(deps): bump stripe from 11.6.0 to 11.10.0 (#14503)
Bumps [stripe](https://github.com/stripe/stripe-node) from 11.6.0 to 11.10.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/v11.6.0...v11.10.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-02-13 15:38:38 -06:00
dependabot[bot] b3d83431e6 build(deps): bump stopword from 2.0.5 to 2.0.7 in /website/client (#14504)
Bumps [stopword](https://github.com/fergiemcdowall/stopword) from 2.0.5 to 2.0.7.
- [Release notes](https://github.com/fergiemcdowall/stopword/releases)
- [Commits](https://github.com/fergiemcdowall/stopword/commits/v.2.0.7)

---
updated-dependencies:
- dependency-name: stopword
  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-02-13 15:38:02 -06:00
SabreCat 2ac21104a4 4.260.1 2023-02-13 11:51:45 -06:00
SabreCat 6b95f648c4 Merge remote-tracking branch 'CuriousMagpie/footer-link-updates' into release 2023-02-13 11:28:14 -06:00
SabreCat f9db4b9b5b fix(event): correct logic for various Valentine's items 2023-02-13 11:25:02 -06:00
Phillip Thelen 6ee2e3a379 Merge remote-tracking branch 'origin/develop' into apple_sub_fix 2023-02-13 17:38:14 +01:00
SabreCat 74da6d8798 4.260.0 2023-02-12 23:17:16 -06:00
Natalie L a73e4d399e chore(content): add Pink Marble Magic Hatching Potion (#14497)
* chore(content): add quest text

* chore(content): add rest of potion quest content

* fix(image): pad quest scroll image

* feat(quest): add Rage action

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-02-12 23:17:56 -06:00
Natalie L 8f4d668b0f chore(content): add pet quest bundle and magic hatching potions for February (#14499) 2023-02-12 23:17:09 -06:00
CuriousMagpie 945c19cc80 chore(links): add weblate link to footer and update data display tool 2023-02-10 15:11:36 -05:00
gwenexner 7b4cfee290 Fixed release info for Set 105 (#14494)
Removed a stray space at the front of "Set 105", changed year to 2023.
2023-02-10 10:30:27 -06:00
Phillip Thelen 77229f3e5e show year for next hourglass 2023-02-10 17:13:20 +01:00
Phillip Thelen 41cdab1672 adjust tests 2023-02-10 17:13:10 +01:00
Phillip Thelen 58f4dd0c43 fix typo 2023-02-10 17:13:04 +01:00
Phillip Thelen 0ce64a0197 fix next hourglass calculation 2023-02-09 16:20:46 +01:00
Natalie L 0b8f2bc58e update(content): revise community guidelines (#14481)
* update(content); revise community guidelines

* fix(CG): remove outdated spoiler advice, remove unneeded string token

* chore(CG): update date line to intended publication

---------

Co-authored-by: SabreCat <sabe@habitica.com>
2023-02-08 15:04:30 -06:00
SabreCat 015631685b 4.259.1 2023-02-08 15:04:19 -06:00
SabreCat 6c536c0b89 Merge branch 'release' into develop 2023-02-07 09:12:03 -06:00
Phillip Thelen ad6555c92b fix import 2023-02-06 17:16:43 +01:00
Phillip Thelen c04e8ea514 comma 2023-02-06 13:01:06 +01:00
Phillip Thelen aec2409227 lint fixes 2023-02-06 12:59:54 +01:00
Phillip Thelen 87aebcc19e Merge branch 'apple_sub_fix' of https://github.com/HabitRPG/habitica into apple_sub_fix
# Conflicts:
#	test/api/unit/libs/payments/apple.test.js
#	website/server/libs/payments/subscriptions.js
2023-02-06 11:19:00 +01:00
Phillip Thelen a3bc20f855 Fix case where a number was sometimes a string 2023-02-06 11:17:35 +01:00
Phillip Thelen 86e33b2364 remove log 2023-02-06 11:17:35 +01:00
Phillip Thelen 12479edb77 fix tests and some cases 2023-02-06 11:17:35 +01:00
Phillip Thelen c0c6657536 handle upgrades and creations better 2023-02-06 11:17:35 +01:00
SabreCat e81a052f66 fix(lint): line lengths and so on 2023-02-06 11:17:35 +01:00
Phillip Thelen 82a1d6ff0e Improve handling 2023-02-06 11:17:35 +01:00
Phillip Thelen 0f7001b609 fix lint 2023-02-06 11:17:35 +01:00
Phillip Thelen 87558a325e Handle subscription cancelation better 2023-02-06 11:17:35 +01:00
Phillip Thelen de48925341 remove only 2023-02-06 11:17:35 +01:00
Phillip Thelen 614850e56c fix tests 2023-02-06 11:17:35 +01:00
Phillip Thelen 64a3515c10 Add logic for different types of sub upgrades 2023-02-06 11:17:35 +01:00
Phillip Thelen 8dfa21a4b8 Add field to track when current subscription type started 2023-02-06 11:17:35 +01:00
Phillip Thelen f9a9d4919b Improve recheck handling for test subs 2023-02-06 11:17:35 +01:00
Phillip Thelen ddf1b4060d Better handling for cancellation when user had multiple subs 2023-02-06 11:17:35 +01:00
Phillip Thelen 967717a010 Fix logic for apple subscriptions 2023-02-06 11:17:35 +01:00
SabreCat 9b791b4ba0 fix(test): save user to avoid lock errors 2023-02-06 11:17:35 +01:00
SabreCat 5aca5b4be7 fix(test): linting 2023-02-06 11:17:35 +01:00
Phillip Thelen 0dd25b6431 fix issue where subs would be applied multiple times 2023-02-06 11:17:35 +01:00
Phillip Thelen cf75d941fa fix test 2023-02-06 11:17:35 +01:00
Phillip Thelen 777f7887b4 fix lint errors 2023-02-06 11:17:35 +01:00
Phillip Thelen f07d0f6441 Implement correct handling for when subs are up/downgraded 2023-02-06 11:17:24 +01:00
Phillip Thelen 98ec1757f9 fix tests 2023-02-06 11:16:24 +01:00
SabreCat 742da1f2c6 fix(typo): customER 2023-02-06 11:16:24 +01:00
SabreCat b3d5a8d083 fix(lint): line length 2023-02-06 11:16:24 +01:00
Phillip Thelen b5f2e66025 fix check 2023-02-06 11:16:24 +01:00
Phillip Thelen 9a40674d8d Allow sub upgrades/downgrades on iOS 2023-02-06 11:16:24 +01:00
SabreCat 0f9b6ab591 fix(lint): revert bad lint rule again 2023-01-31 11:00:08 -06:00
Phillip Thelen cde5fbef85 Fix case where a number was sometimes a string 2022-12-09 12:16:33 +01:00
Phillip Thelen 8b2af1ef56 remove log 2022-12-05 15:38:30 +01:00
Phillip Thelen 21652c2670 fix tests and some cases 2022-12-02 17:12:17 +01:00
Phillip Thelen d1ee679810 handle upgrades and creations better 2022-12-02 11:51:33 +01:00
SabreCat 67988da33c fix(lint): line lengths and so on 2022-11-30 15:27:53 -06:00
Phillip Thelen fae26a517d Improve handling 2022-11-30 15:06:50 +01:00
Phillip Thelen e3c86349b4 fix lint 2022-11-11 13:58:45 +01:00
Phillip Thelen 6604f38144 Handle subscription cancelation better 2022-11-11 13:54:17 +01:00
Phillip Thelen 037882b50a remove only 2022-11-10 13:55:58 +01:00
Phillip Thelen 15deb778fd fix tests 2022-11-10 13:48:58 +01:00
Phillip Thelen 7d2529f5e1 Add logic for different types of sub upgrades 2022-11-09 19:49:53 +01:00
Phillip Thelen 8d732c59c4 Add field to track when current subscription type started 2022-11-08 12:38:24 +01:00
Phillip Thelen 3a34aa4cc5 Improve recheck handling for test subs 2022-11-08 12:19:17 +01:00
Phillip Thelen e7fc7feddd Better handling for cancellation when user had multiple subs 2022-11-04 13:30:50 +01:00
Phillip Thelen 7fd899b642 Fix logic for apple subscriptions 2022-11-03 17:48:36 +01:00
SabreCat 36d2ad6b9b fix(test): save user to avoid lock errors 2022-11-02 15:15:28 -05:00
SabreCat 164dbdcf10 Merge branch 'develop' into apple_sub_fix 2022-11-02 15:00:24 -05:00
SabreCat b65fa941b9 fix(test): linting 2022-11-02 14:44:49 -05:00
Phillip Thelen ab953440e3 fix issue where subs would be applied multiple times 2022-11-02 16:36:09 +01:00
Phillip Thelen 1143f690d1 fix test 2022-10-28 15:28:46 +02:00
Phillip Thelen 08469c556b fix lint errors 2022-10-28 12:41:43 +02:00
Phillip Thelen 13a25ad89e Implement correct handling for when subs are up/downgraded 2022-10-28 11:23:48 +02:00
Phillip Thelen 8e2e170930 fix tests 2022-10-26 16:30:35 +02:00
SabreCat e6a7d15644 fix(typo): customER 2022-10-25 16:59:59 -05:00
SabreCat 6a4b08203f fix(lint): line length 2022-10-25 16:52:16 -05:00
SabreCat c9016c8d42 Merge branch 'develop' into phillip/sub_change 2022-10-25 16:47:51 -05:00
Phillip Thelen 31685c3e94 fix check 2022-10-21 16:59:18 +02:00
Phillip Thelen c25b09c7ed Allow sub upgrades/downgrades on iOS 2022-10-21 16:57:12 +02:00
246 changed files with 5374 additions and 1789 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ import { v4 as uuid } from 'uuid';
import { model as User } from '../../website/server/models/user';
const MIGRATION_NAME = '20220314_pi_day';
const MIGRATION_NAME = '20230314_pi_day';
const progressCount = 1000;
let count = 0;
@@ -54,7 +54,7 @@ async function updateUser (user) {
export default async function processUsers () {
const query = {
migration: { $ne: MIGRATION_NAME },
'auth.timestamps.loggedin': { $gt: new Date('2022-02-15') },
'auth.timestamps.loggedin': { $gt: new Date('2023-02-15') },
};
const fields = {
+234 -229
View File
@@ -1,6 +1,6 @@
{
"name": "habitica",
"version": "4.259.0",
"version": "4.264.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -1667,15 +1667,135 @@
"integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="
},
"@esbuild/android-arm": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz",
"integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==",
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
"integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
"optional": true
},
"@esbuild/android-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
"integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
"optional": true
},
"@esbuild/android-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
"integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
"optional": true
},
"@esbuild/darwin-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
"integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
"optional": true
},
"@esbuild/darwin-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
"integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
"optional": true
},
"@esbuild/freebsd-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
"integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
"optional": true
},
"@esbuild/freebsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
"integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
"optional": true
},
"@esbuild/linux-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
"integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
"optional": true
},
"@esbuild/linux-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
"integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
"optional": true
},
"@esbuild/linux-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
"integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
"optional": true
},
"@esbuild/linux-loong64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz",
"integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==",
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
"integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"optional": true
},
"@esbuild/linux-mips64el": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
"integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
"optional": true
},
"@esbuild/linux-ppc64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
"integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
"optional": true
},
"@esbuild/linux-riscv64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
"integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
"optional": true
},
"@esbuild/linux-s390x": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
"integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
"optional": true
},
"@esbuild/linux-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
"integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
"optional": true
},
"@esbuild/netbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
"integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
"optional": true
},
"@esbuild/openbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
"integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
"optional": true
},
"@esbuild/sunos-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
"integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
"optional": true
},
"@esbuild/win32-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
"integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
"optional": true
},
"@esbuild/win32-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
"integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
"optional": true
},
"@esbuild/win32-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
"integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
"optional": true
},
"@google-cloud/common": {
@@ -2147,9 +2267,9 @@
}
},
"@types/eslint": {
"version": "8.4.7",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.7.tgz",
"integrity": "sha512-ehM7cCt2RSFs42mb+lcmhFT9ouIlV92PuaeRGn8N8c98oMjG4Z5pJHA9b1QiCcuqnbPSHcyfiD3mlhqMaHsQIw==",
"version": "8.21.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.21.0.tgz",
"integrity": "sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA==",
"requires": {
"@types/estree": "*",
"@types/json-schema": "*"
@@ -2636,9 +2756,9 @@
}
},
"apidoc": {
"version": "0.53.1",
"resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.53.1.tgz",
"integrity": "sha512-ijiLtIVEzTMdF29B/QzkvR4weMatgcElMsYKP1asszrImWYwzlZ9x0ZMLTXZrCe7GVMtkGSwQdugdLTZMZ+lww==",
"version": "0.54.0",
"resolved": "https://registry.npmjs.org/apidoc/-/apidoc-0.54.0.tgz",
"integrity": "sha512-VCOdwkAaFK7bDLbiAiFKqX8SVlAnk7sQCXDARwshBQpVRqRGDNY993kAMPkWmSD1RCVBDMFIOgOfOR9mcISNZQ==",
"requires": {
"bootstrap": "3.4.1",
"commander": "^8.3.0",
@@ -2663,9 +2783,9 @@
},
"dependencies": {
"anymatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
"integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
"requires": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
@@ -4075,20 +4195,25 @@
"dev": true
},
"browserslist": {
"version": "4.21.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz",
"integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==",
"version": "4.21.5",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"requires": {
"caniuse-lite": "^1.0.30001366",
"electron-to-chromium": "^1.4.188",
"node-releases": "^2.0.6",
"update-browserslist-db": "^1.0.4"
"caniuse-lite": "^1.0.30001449",
"electron-to-chromium": "^1.4.284",
"node-releases": "^2.0.8",
"update-browserslist-db": "^1.0.10"
},
"dependencies": {
"electron-to-chromium": {
"version": "1.4.192",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.192.tgz",
"integrity": "sha512-8nCXyIQY9An88NXAp+PuPy5h3/w5ZY7Iu2lag65Q0XREprcat5F8gKhoHsBUnQcFuCRnmevpR8yEBYRU3d2HDw=="
"version": "1.4.295",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz",
"integrity": "sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw=="
},
"node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w=="
}
}
},
@@ -4246,9 +4371,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001367",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz",
"integrity": "sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw=="
"version": "1.0.30001451",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz",
"integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w=="
},
"caseless": {
"version": "0.12.0",
@@ -4879,9 +5004,9 @@
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"cookiejar": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
"integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ=="
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw=="
},
"cookies": {
"version": "0.8.0",
@@ -5759,9 +5884,9 @@
}
},
"enhanced-resolve": {
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz",
"integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==",
"version": "5.12.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz",
"integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==",
"requires": {
"graceful-fs": "^4.2.4",
"tapable": "^2.2.0"
@@ -5871,167 +5996,47 @@
}
},
"esbuild": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz",
"integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==",
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
"integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
"requires": {
"@esbuild/android-arm": "0.15.12",
"@esbuild/linux-loong64": "0.15.12",
"esbuild-android-64": "0.15.12",
"esbuild-android-arm64": "0.15.12",
"esbuild-darwin-64": "0.15.12",
"esbuild-darwin-arm64": "0.15.12",
"esbuild-freebsd-64": "0.15.12",
"esbuild-freebsd-arm64": "0.15.12",
"esbuild-linux-32": "0.15.12",
"esbuild-linux-64": "0.15.12",
"esbuild-linux-arm": "0.15.12",
"esbuild-linux-arm64": "0.15.12",
"esbuild-linux-mips64le": "0.15.12",
"esbuild-linux-ppc64le": "0.15.12",
"esbuild-linux-riscv64": "0.15.12",
"esbuild-linux-s390x": "0.15.12",
"esbuild-netbsd-64": "0.15.12",
"esbuild-openbsd-64": "0.15.12",
"esbuild-sunos-64": "0.15.12",
"esbuild-windows-32": "0.15.12",
"esbuild-windows-64": "0.15.12",
"esbuild-windows-arm64": "0.15.12"
"@esbuild/android-arm": "0.16.17",
"@esbuild/android-arm64": "0.16.17",
"@esbuild/android-x64": "0.16.17",
"@esbuild/darwin-arm64": "0.16.17",
"@esbuild/darwin-x64": "0.16.17",
"@esbuild/freebsd-arm64": "0.16.17",
"@esbuild/freebsd-x64": "0.16.17",
"@esbuild/linux-arm": "0.16.17",
"@esbuild/linux-arm64": "0.16.17",
"@esbuild/linux-ia32": "0.16.17",
"@esbuild/linux-loong64": "0.16.17",
"@esbuild/linux-mips64el": "0.16.17",
"@esbuild/linux-ppc64": "0.16.17",
"@esbuild/linux-riscv64": "0.16.17",
"@esbuild/linux-s390x": "0.16.17",
"@esbuild/linux-x64": "0.16.17",
"@esbuild/netbsd-x64": "0.16.17",
"@esbuild/openbsd-x64": "0.16.17",
"@esbuild/sunos-x64": "0.16.17",
"@esbuild/win32-arm64": "0.16.17",
"@esbuild/win32-ia32": "0.16.17",
"@esbuild/win32-x64": "0.16.17"
}
},
"esbuild-android-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz",
"integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==",
"optional": true
},
"esbuild-android-arm64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz",
"integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==",
"optional": true
},
"esbuild-darwin-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz",
"integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==",
"optional": true
},
"esbuild-darwin-arm64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz",
"integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==",
"optional": true
},
"esbuild-freebsd-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz",
"integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==",
"optional": true
},
"esbuild-freebsd-arm64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz",
"integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==",
"optional": true
},
"esbuild-linux-32": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz",
"integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==",
"optional": true
},
"esbuild-linux-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz",
"integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==",
"optional": true
},
"esbuild-linux-arm": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz",
"integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==",
"optional": true
},
"esbuild-linux-arm64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz",
"integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==",
"optional": true
},
"esbuild-linux-mips64le": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz",
"integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==",
"optional": true
},
"esbuild-linux-ppc64le": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz",
"integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==",
"optional": true
},
"esbuild-linux-riscv64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz",
"integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==",
"optional": true
},
"esbuild-linux-s390x": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz",
"integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==",
"optional": true
},
"esbuild-loader": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.20.0.tgz",
"integrity": "sha512-dr+j8O4w5RvqZ7I4PPB4EIyVTd679EBQnMm+JBB7av+vu05Zpje2IpK5N3ld1VWa+WxrInIbNFAg093+E1aRsA==",
"version": "2.21.0",
"resolved": "https://registry.npmjs.org/esbuild-loader/-/esbuild-loader-2.21.0.tgz",
"integrity": "sha512-k7ijTkCT43YBSZ6+fBCW1Gin7s46RrJ0VQaM8qA7lq7W+OLsGgtLyFV8470FzYi/4TeDexniTBTPTwZUnXXR5g==",
"requires": {
"esbuild": "^0.15.6",
"esbuild": "^0.16.17",
"joycon": "^3.0.1",
"json5": "^2.2.0",
"loader-utils": "^2.0.0",
"tapable": "^2.2.0",
"webpack-sources": "^2.2.0"
"webpack-sources": "^1.4.3"
}
},
"esbuild-netbsd-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz",
"integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==",
"optional": true
},
"esbuild-openbsd-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz",
"integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==",
"optional": true
},
"esbuild-sunos-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz",
"integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==",
"optional": true
},
"esbuild-windows-32": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz",
"integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==",
"optional": true
},
"esbuild-windows-64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz",
"integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==",
"optional": true
},
"esbuild-windows-arm64": {
"version": "0.15.12",
"resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz",
"integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==",
"optional": true
},
"escalade": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -7729,9 +7734,9 @@
"dev": true
},
"glob": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
"integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -7749,9 +7754,9 @@
}
},
"minimatch": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
"integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"requires": {
"brace-expansion": "^2.0.1"
}
@@ -9704,9 +9709,9 @@
"integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
},
"jquery": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.1.tgz",
"integrity": "sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw=="
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz",
"integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg=="
},
"js-tokens": {
"version": "4.0.0",
@@ -9784,9 +9789,9 @@
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"json5": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ=="
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
},
"jsonfile": {
"version": "6.1.0",
@@ -13451,9 +13456,9 @@
}
},
"serialize-javascript": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz",
"integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==",
"requires": {
"randombytes": "^2.1.0"
}
@@ -13612,9 +13617,9 @@
}
},
"simple-update-notifier": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz",
"integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
"integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
"requires": {
"semver": "~7.0.0"
},
@@ -14286,9 +14291,9 @@
}
},
"stripe": {
"version": "11.6.0",
"resolved": "https://registry.npmjs.org/stripe/-/stripe-11.6.0.tgz",
"integrity": "sha512-ht8S1l8CJJE3jtv2NM1mEQzZBkITYvb9uDpSeXYeNz9iJkFFgDU169htwOW00OdIESvFaIsGgWQatAE5dfOERQ==",
"version": "11.10.0",
"resolved": "https://registry.npmjs.org/stripe/-/stripe-11.10.0.tgz",
"integrity": "sha512-uzQuj/Vangpp8fgkaEr6oRNfPToo5xamOhc7wxFGF/RUm7VKm/IGzoZ0cCtnGHCs5/O1AjMQsTZApgUARRVHOw==",
"requires": {
"@types/node": ">=8.1.0",
"qs": "^6.11.0"
@@ -14600,9 +14605,9 @@
"integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw=="
},
"terser": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz",
"integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==",
"version": "5.16.3",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz",
"integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==",
"requires": {
"@jridgewell/source-map": "^0.3.2",
"acorn": "^8.5.0",
@@ -14611,9 +14616,9 @@
},
"dependencies": {
"acorn": {
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w=="
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
},
"commander": {
"version": "2.20.3",
@@ -15310,9 +15315,9 @@
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
},
"update-browserslist-db": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
"integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"requires": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
@@ -15514,9 +15519,9 @@
}
},
"validator": {
"version": "13.7.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
"integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
"version": "13.9.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz",
"integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA=="
},
"value-or-function": {
"version": "3.0.0",
@@ -15782,9 +15787,9 @@
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"webpack": {
"version": "5.74.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz",
"integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==",
"version": "5.75.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz",
"integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==",
"requires": {
"@types/eslint-scope": "^3.7.3",
"@types/estree": "^0.0.51",
@@ -15813,9 +15818,9 @@
},
"dependencies": {
"acorn": {
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w=="
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
},
"eslint-scope": {
"version": "5.1.1",
@@ -15902,12 +15907,12 @@
}
},
"webpack-sources": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz",
"integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==",
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
"integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
"requires": {
"source-list-map": "^2.0.1",
"source-map": "^0.6.1"
"source-list-map": "^2.0.0",
"source-map": "~0.6.1"
},
"dependencies": {
"source-map": {
+5 -5
View File
@@ -1,7 +1,7 @@
{
"name": "habitica",
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
"version": "4.259.0",
"version": "4.264.4",
"main": "./website/server/index.js",
"dependencies": {
"@babel/core": "^7.20.12",
@@ -13,7 +13,7 @@
"accepts": "^1.3.8",
"amazon-payments": "^0.2.9",
"amplitude": "^6.0.0",
"apidoc": "^0.53.1",
"apidoc": "^0.54.0",
"apple-auth": "^1.0.7",
"bcrypt": "^5.1.0",
"body-parser": "^1.20.1",
@@ -30,7 +30,7 @@
"express": "^4.18.2",
"express-basic-auth": "^1.2.1",
"express-validator": "^5.2.0",
"glob": "^8.0.3",
"glob": "^8.1.0",
"got": "^11.8.3",
"gulp": "^4.0.0",
"gulp-babel": "^8.0.0",
@@ -67,12 +67,12 @@
"remove-markdown": "^0.5.0",
"rimraf": "^3.0.2",
"short-uuid": "^4.2.2",
"stripe": "^11.6.0",
"stripe": "^11.10.0",
"superagent": "^8.0.6",
"universal-analytics": "^0.5.3",
"useragent": "^2.1.9",
"uuid": "^9.0.0",
"validator": "^13.7.0",
"validator": "^13.9.0",
"vinyl-buffer": "^1.0.1",
"winston": "^3.8.2",
"winston-loggly-bulk": "^3.2.1",
+100 -21
View File
@@ -231,13 +231,16 @@ describe('cron', async () => {
},
});
// user1 has a 1-month recurring subscription starting today
user1.purchased.plan.customerId = 'subscribedId';
user1.purchased.plan.dateUpdated = moment().toDate();
user1.purchased.plan.planId = 'basic';
user1.purchased.plan.consecutive.count = 0;
user1.purchased.plan.consecutive.offset = 0;
user1.purchased.plan.consecutive.trinkets = 0;
user1.purchased.plan.consecutive.gemCapExtra = 0;
beforeEach(async () => {
user1.purchased.plan.customerId = 'subscribedId';
user1.purchased.plan.dateUpdated = moment().toDate();
user1.purchased.plan.planId = 'basic';
user1.purchased.plan.consecutive.count = 0;
user1.purchased.plan.perkMonthCount = 0;
user1.purchased.plan.consecutive.offset = 0;
user1.purchased.plan.consecutive.trinkets = 0;
user1.purchased.plan.consecutive.gemCapExtra = 0;
});
it('does not increment consecutive benefits after the first month', async () => {
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(1, 'months')
@@ -271,6 +274,24 @@ describe('cron', async () => {
expect(user1.purchased.plan.consecutive.gemCapExtra).to.equal(0);
});
it('increments consecutive benefits after the second month if they also received a 1 month gift subscription', async () => {
user1.purchased.plan.perkMonthCount = 1;
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(2, 'months')
.add(2, 'days')
.toDate());
// Add 1 month to simulate what happens a month after the subscription was created.
// Add 2 days so that we're sure we're not affected by any start-of-month effects
// e.g., from time zone oddness.
await cron({
user: user1, tasksByType, daysMissed, analytics,
});
expect(user1.purchased.plan.perkMonthCount).to.equal(0);
expect(user1.purchased.plan.consecutive.count).to.equal(2);
expect(user1.purchased.plan.consecutive.offset).to.equal(0);
expect(user1.purchased.plan.consecutive.trinkets).to.equal(1);
expect(user1.purchased.plan.consecutive.gemCapExtra).to.equal(5);
});
it('increments consecutive benefits after the third month', async () => {
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(3, 'months')
.add(2, 'days')
@@ -315,6 +336,30 @@ describe('cron', async () => {
expect(user1.purchased.plan.consecutive.trinkets).to.equal(3);
expect(user1.purchased.plan.consecutive.gemCapExtra).to.equal(15);
});
it('initializes plan.perkMonthCount if necessary', async () => {
user.purchased.plan.perkMonthCount = undefined;
clock = sinon.useFakeTimers(moment(user.purchased.plan.dateUpdated)
.utcOffset(0)
.startOf('month')
.add(1, 'months')
.add(2, 'days')
.toDate());
await cron({
user, tasksByType, daysMissed, analytics,
});
expect(user.purchased.plan.perkMonthCount).to.equal(1);
user.purchased.plan.perkMonthCount = undefined;
user.purchased.plan.consecutive.count = 8;
clock.restore();
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(2, 'months')
.add(2, 'days')
.toDate());
await cron({
user, tasksByType, daysMissed, analytics,
});
expect(user.purchased.plan.perkMonthCount).to.equal(2);
});
});
describe('for a 3-month recurring subscription', async () => {
@@ -330,13 +375,16 @@ describe('cron', async () => {
},
});
// user3 has a 3-month recurring subscription starting today
user3.purchased.plan.customerId = 'subscribedId';
user3.purchased.plan.dateUpdated = moment().toDate();
user3.purchased.plan.planId = 'basic_3mo';
user3.purchased.plan.consecutive.count = 0;
user3.purchased.plan.consecutive.offset = 3;
user3.purchased.plan.consecutive.trinkets = 1;
user3.purchased.plan.consecutive.gemCapExtra = 5;
beforeEach(async () => {
user3.purchased.plan.customerId = 'subscribedId';
user3.purchased.plan.dateUpdated = moment().toDate();
user3.purchased.plan.planId = 'basic_3mo';
user3.purchased.plan.perkMonthCount = 0;
user3.purchased.plan.consecutive.count = 0;
user3.purchased.plan.consecutive.offset = 3;
user3.purchased.plan.consecutive.trinkets = 1;
user3.purchased.plan.consecutive.gemCapExtra = 5;
});
it('does not increment consecutive benefits in the first month of the first paid period that they already have benefits for', async () => {
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(1, 'months')
@@ -390,6 +438,21 @@ describe('cron', async () => {
expect(user3.purchased.plan.consecutive.gemCapExtra).to.equal(10);
});
it('keeps existing plan.perkMonthCount intact when incrementing consecutive benefits', async () => {
user3.purchased.plan.perkMonthCount = 2;
user3.purchased.plan.consecutive.trinkets = 1;
user3.purchased.plan.consecutive.gemCapExtra = 5;
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(4, 'months')
.add(2, 'days')
.toDate());
await cron({
user: user3, tasksByType, daysMissed, analytics,
});
expect(user3.purchased.plan.perkMonthCount).to.equal(2);
expect(user3.purchased.plan.consecutive.trinkets).to.equal(2);
expect(user3.purchased.plan.consecutive.gemCapExtra).to.equal(10);
});
it('does not increment consecutive benefits in the second month of the second period that they already have benefits for', async () => {
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(5, 'months')
.add(2, 'days')
@@ -456,13 +519,16 @@ describe('cron', async () => {
},
});
// user6 has a 6-month recurring subscription starting today
user6.purchased.plan.customerId = 'subscribedId';
user6.purchased.plan.dateUpdated = moment().toDate();
user6.purchased.plan.planId = 'google_6mo';
user6.purchased.plan.consecutive.count = 0;
user6.purchased.plan.consecutive.offset = 6;
user6.purchased.plan.consecutive.trinkets = 2;
user6.purchased.plan.consecutive.gemCapExtra = 10;
beforeEach(async () => {
user6.purchased.plan.customerId = 'subscribedId';
user6.purchased.plan.dateUpdated = moment().toDate();
user6.purchased.plan.planId = 'google_6mo';
user6.purchased.plan.perkMonthCount = 0;
user6.purchased.plan.consecutive.count = 0;
user6.purchased.plan.consecutive.offset = 6;
user6.purchased.plan.consecutive.trinkets = 2;
user6.purchased.plan.consecutive.gemCapExtra = 10;
});
it('does not increment consecutive benefits in the first month of the first paid period that they already have benefits for', async () => {
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(1, 'months')
@@ -503,6 +569,19 @@ describe('cron', async () => {
expect(user6.purchased.plan.consecutive.gemCapExtra).to.equal(20);
});
it('keeps existing plan.perkMonthCount intact when incrementing consecutive benefits', async () => {
user6.purchased.plan.perkMonthCount = 2;
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(7, 'months')
.add(2, 'days')
.toDate());
await cron({
user: user6, tasksByType, daysMissed, analytics,
});
expect(user6.purchased.plan.perkMonthCount).to.equal(2);
expect(user6.purchased.plan.consecutive.trinkets).to.equal(4);
expect(user6.purchased.plan.consecutive.gemCapExtra).to.equal(20);
});
it('increments consecutive benefits the month after the third paid period has started', async () => {
clock = sinon.useFakeTimers(moment().utcOffset(0).startOf('month').add(13, 'months')
.add(2, 'days')
+296 -29
View File
@@ -29,8 +29,9 @@ describe('Apple Payments', () => {
.resolves();
iapValidateStub = sinon.stub(iap, 'validate')
.resolves({});
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
.returns(true);
iapIsValidatedStub = sinon.stub(iap, 'isValidated').returns(true);
sinon.stub(iap, 'isExpired').returns(false);
sinon.stub(iap, 'isCanceled').returns(false);
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
productId: 'com.habitrpg.ios.Habitica.21gems',
@@ -44,6 +45,8 @@ describe('Apple Payments', () => {
iap.setup.restore();
iap.validate.restore();
iap.isValidated.restore();
iap.isExpired.restore();
iap.isCanceled.restore();
iap.getPurchaseData.restore();
payments.buySkuItem.restore();
gems.validateGiftMessage.restore();
@@ -218,6 +221,7 @@ describe('Apple Payments', () => {
headers = {};
receipt = `{"token": "${token}"}`;
nextPaymentProcessing = moment.utc().add({ days: 2 });
user = new User();
iapSetupStub = sinon.stub(iap, 'setup')
.resolves();
@@ -228,14 +232,17 @@ describe('Apple Payments', () => {
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().subtract({ day: 1 }).toDate(),
purchaseDate: moment.utc().valueOf(),
productId: sku,
transactionId: token,
}, {
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().valueOf(),
productId: 'wrongsku',
transactionId: token,
}, {
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().valueOf(),
productId: sku,
transactionId: token,
}]);
@@ -250,21 +257,12 @@ describe('Apple Payments', () => {
if (payments.createSubscription.restore) payments.createSubscription.restore();
});
it('should throw an error if sku is empty', async () => {
await expect(applePayments.subscribe('', user, receipt, headers, nextPaymentProcessing))
.to.eventually.be.rejected.and.to.eql({
httpCode: 400,
name: 'BadRequest',
message: i18n.t('missingSubscriptionCode'),
});
});
it('should throw an error if receipt is invalid', async () => {
iap.isValidated.restore();
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
.returns(false);
await expect(applePayments.subscribe(sku, user, receipt, headers, nextPaymentProcessing))
await expect(applePayments.subscribe(user, receipt, headers, nextPaymentProcessing))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
@@ -295,13 +293,15 @@ describe('Apple Payments', () => {
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 1 }).toDate(),
expirationDate: moment.utc().add({ day: 2 }).toDate(),
purchaseDate: new Date(),
productId: option.sku,
transactionId: token,
originalTransactionId: token,
}]);
sub = common.content.subscriptionBlocks[option.subKey];
await applePayments.subscribe(option.sku, user, receipt, headers, nextPaymentProcessing);
await applePayments.subscribe(user, receipt, headers, nextPaymentProcessing);
expect(iapSetupStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledOnce;
@@ -321,21 +321,253 @@ describe('Apple Payments', () => {
nextPaymentProcessing,
});
});
if (option !== subOptions[3]) {
const newOption = subOptions[3];
it(`upgrades a subscription from ${option.sku} to ${newOption.sku}`, async () => {
const oldSub = common.content.subscriptionBlocks[option.subKey];
oldSub.logic = 'refundAndRepay';
user.profile.name = 'sender';
user.purchased.plan.paymentMethod = applePayments.constants.PAYMENT_METHOD_APPLE;
user.purchased.plan.customerId = token;
user.purchased.plan.planId = option.subKey;
user.purchased.plan.additionalData = receipt;
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 2 }).toDate(),
purchaseDate: moment.utc().valueOf(),
productId: newOption.sku,
transactionId: `${token}new`,
originalTransactionId: token,
}]);
sub = common.content.subscriptionBlocks[newOption.subKey];
await applePayments.subscribe(user,
receipt,
headers,
nextPaymentProcessing);
expect(iapSetupStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledWith(iap.APPLE, receipt);
expect(iapIsValidatedStub).to.be.calledOnce;
expect(iapIsValidatedStub).to.be.calledWith({});
expect(iapGetPurchaseDataStub).to.be.calledOnce;
expect(paymentsCreateSubscritionStub).to.be.calledOnce;
expect(paymentsCreateSubscritionStub).to.be.calledWith({
user,
customerId: token,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
sub,
headers,
additionalData: receipt,
nextPaymentProcessing,
updatedFrom: oldSub,
});
});
}
if (option !== subOptions[0]) {
const newOption = subOptions[0];
it(`downgrades a subscription from ${option.sku} to ${newOption.sku}`, async () => {
const oldSub = common.content.subscriptionBlocks[option.subKey];
user.profile.name = 'sender';
user.purchased.plan.paymentMethod = applePayments.constants.PAYMENT_METHOD_APPLE;
user.purchased.plan.customerId = token;
user.purchased.plan.planId = option.subKey;
user.purchased.plan.additionalData = receipt;
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 2 }).toDate(),
purchaseDate: moment.utc().valueOf(),
productId: newOption.sku,
transactionId: `${token}new`,
originalTransactionId: token,
}]);
sub = common.content.subscriptionBlocks[newOption.subKey];
await applePayments.subscribe(user,
receipt,
headers,
nextPaymentProcessing);
expect(iapSetupStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledWith(iap.APPLE, receipt);
expect(iapIsValidatedStub).to.be.calledOnce;
expect(iapIsValidatedStub).to.be.calledWith({});
expect(iapGetPurchaseDataStub).to.be.calledOnce;
expect(paymentsCreateSubscritionStub).to.be.calledOnce;
expect(paymentsCreateSubscritionStub).to.be.calledWith({
user,
customerId: token,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
sub,
headers,
additionalData: receipt,
nextPaymentProcessing,
updatedFrom: oldSub,
});
});
}
});
it('errors when a user is already subscribed', async () => {
payments.createSubscription.restore();
user = new User();
await user.save();
it('uses the most recent subscription data', async () => {
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 4 }).toDate(),
purchaseDate: moment.utc().subtract({ day: 5 }).toDate(),
productId: 'com.habitrpg.ios.habitica.subscription.3month',
transactionId: `${token}oldest`,
originalTransactionId: `${token}evenOlder`,
}, {
expirationDate: moment.utc().add({ day: 2 }).toDate(),
purchaseDate: moment.utc().subtract({ day: 1 }).toDate(),
productId: 'com.habitrpg.ios.habitica.subscription.12month',
transactionId: `${token}newest`,
originalTransactionId: `${token}newest`,
}, {
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().subtract({ day: 2 }).toDate(),
productId: 'com.habitrpg.ios.habitica.subscription.6month',
transactionId: token,
originalTransactionId: token,
}]);
sub = common.content.subscriptionBlocks.basic_12mo;
await applePayments.subscribe(sku, user, receipt, headers, nextPaymentProcessing);
await applePayments.subscribe(user, receipt, headers, nextPaymentProcessing);
await expect(applePayments.subscribe(sku, user, receipt, headers, nextPaymentProcessing))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: applePayments.constants.RESPONSE_ALREADY_USED,
});
expect(paymentsCreateSubscritionStub).to.be.calledOnce;
expect(paymentsCreateSubscritionStub).to.be.calledWith({
user,
customerId: `${token}newest`,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
sub,
headers,
additionalData: receipt,
nextPaymentProcessing,
});
});
describe('does not apply multiple times', async () => {
it('errors when a user is using the same subscription', async () => {
payments.createSubscription.restore();
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().toDate(),
productId: sku,
transactionId: token,
originalTransactionId: token,
}]);
await applePayments.subscribe(user, receipt, headers, nextPaymentProcessing);
await expect(applePayments.subscribe(user, receipt, headers, nextPaymentProcessing))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: applePayments.constants.RESPONSE_ALREADY_USED,
});
});
it('errors when a user is using a rebill of the same subscription', async () => {
user = new User();
await user.save();
payments.createSubscription.restore();
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().toDate(),
productId: sku,
transactionId: `${token}renew`,
originalTransactionId: token,
}]);
await applePayments.subscribe(user, receipt, headers, nextPaymentProcessing);
await expect(applePayments.subscribe(user, receipt, headers, nextPaymentProcessing))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: applePayments.constants.RESPONSE_ALREADY_USED,
});
});
it('errors when a different user is using the subscription', async () => {
user = new User();
await user.save();
payments.createSubscription.restore();
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().toDate(),
productId: sku,
transactionId: token,
originalTransactionId: token,
}]);
await applePayments.subscribe(user, receipt, headers, nextPaymentProcessing);
const secondUser = new User();
await secondUser.save();
await expect(applePayments.subscribe(
secondUser, receipt, headers, nextPaymentProcessing,
))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: applePayments.constants.RESPONSE_ALREADY_USED,
});
});
it('errors when a multiple users exist using the subscription', async () => {
user = new User();
await user.save();
payments.createSubscription.restore();
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().toDate(),
productId: sku,
transactionId: token,
originalTransactionId: token,
}]);
await applePayments.subscribe(user, receipt, headers, nextPaymentProcessing);
const secondUser = new User();
secondUser.purchased.plan = user.purchased.plan;
secondUser.purchased.plan.dateTerminate = new Date();
secondUser.save();
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{
expirationDate: moment.utc().add({ day: 1 }).toDate(),
purchaseDate: moment.utc().toDate(),
productId: sku,
transactionId: `${token}new`,
originalTransactionId: token,
}]);
const thirdUser = new User();
await thirdUser.save();
await expect(applePayments.subscribe(
thirdUser, receipt, headers, nextPaymentProcessing,
))
.to.eventually.be.rejected.and.to.eql({
httpCode: 401,
name: 'NotAuthorized',
message: applePayments.constants.RESPONSE_ALREADY_USED,
});
});
});
});
@@ -360,9 +592,9 @@ describe('Apple Payments', () => {
});
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{ expirationDate: expirationDate.toDate() }]);
iapIsValidatedStub = sinon.stub(iap, 'isValidated')
.returns(true);
iapIsValidatedStub = sinon.stub(iap, 'isValidated').returns(true);
sinon.stub(iap, 'isCanceled').returns(false);
sinon.stub(iap, 'isExpired').returns(true);
user = new User();
user.profile.name = 'sender';
user.purchased.plan.paymentMethod = applePayments.constants.PAYMENT_METHOD_APPLE;
@@ -377,6 +609,8 @@ describe('Apple Payments', () => {
iap.setup.restore();
iap.validate.restore();
iap.isValidated.restore();
iap.isExpired.restore();
iap.isCanceled.restore();
iap.getPurchaseData.restore();
payments.cancelSubscription.restore();
});
@@ -396,6 +630,8 @@ describe('Apple Payments', () => {
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{ expirationDate: expirationDate.add({ day: 1 }).toDate() }]);
iap.isExpired.restore();
sinon.stub(iap, 'isExpired').returns(false);
await expect(applePayments.cancelSubscribe(user, headers))
.to.eventually.be.rejected.and.to.eql({
@@ -418,7 +654,38 @@ describe('Apple Payments', () => {
});
});
it('should cancel a user subscription', async () => {
it('should cancel a cancelled subscription with termination date in the future', async () => {
const futureDate = expirationDate.add({ day: 1 });
iap.getPurchaseData.restore();
iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData')
.returns([{ expirationDate: futureDate }]);
iap.isExpired.restore();
sinon.stub(iap, 'isExpired').returns(false);
iap.isCanceled.restore();
sinon.stub(iap, 'isCanceled').returns(true);
await applePayments.cancelSubscribe(user, headers);
expect(iapSetupStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledOnce;
expect(iapValidateStub).to.be.calledWith(iap.APPLE, receipt);
expect(iapIsValidatedStub).to.be.calledOnce;
expect(iapIsValidatedStub).to.be.calledWith({
expirationDate: futureDate,
});
expect(iapGetPurchaseDataStub).to.be.calledOnce;
expect(paymentCancelSubscriptionSpy).to.be.calledOnce;
expect(paymentCancelSubscriptionSpy).to.be.calledWith({
user,
paymentMethod: applePayments.constants.PAYMENT_METHOD_APPLE,
nextBill: futureDate.toDate(),
headers,
});
});
it('should cancel an expired subscription', async () => {
await applePayments.cancelSubscribe(user, headers);
expect(iapSetupStub).to.be.calledOnce;
+799 -2
View File
@@ -203,6 +203,28 @@ describe('payments/index', () => {
expect(recipient.purchased.plan.dateCreated).to.exist;
});
it('sets plan.dateCurrentTypeCreated if it did not previously exist', async () => {
expect(recipient.purchased.plan.dateCurrentTypeCreated).to.not.exist;
await api.createSubscription(data);
expect(recipient.purchased.plan.dateCurrentTypeCreated).to.exist;
});
it('keeps plan.dateCreated when changing subscription type', async () => {
await api.createSubscription(data);
const initialDate = recipient.purchased.plan.dateCreated;
await api.createSubscription(data);
expect(recipient.purchased.plan.dateCreated).to.eql(initialDate);
});
it('sets plan.dateCurrentTypeCreated when changing subscription type', async () => {
await api.createSubscription(data);
const initialDate = recipient.purchased.plan.dateCurrentTypeCreated;
await api.createSubscription(data);
expect(recipient.purchased.plan.dateCurrentTypeCreated).to.not.eql(initialDate);
});
it('does not change plan.customerId if it already exists', async () => {
recipient.purchased.plan = plan;
data.customerId = 'purchaserCustomerId';
@@ -213,6 +235,116 @@ describe('payments/index', () => {
expect(recipient.purchased.plan.customerId).to.eql('customer-id');
});
it('sets plan.perkMonthCount to 1 if user is not subscribed', async () => {
recipient.purchased.plan = plan;
recipient.purchased.plan.perkMonthCount = 1;
recipient.purchased.plan.customerId = undefined;
data.sub.key = 'basic_earned';
data.gift.subscription.key = 'basic_earned';
data.gift.subscription.months = 1;
expect(recipient.purchased.plan.perkMonthCount).to.eql(1);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(1);
});
it('sets plan.perkMonthCount to 1 if field is not initialized', async () => {
recipient.purchased.plan = plan;
recipient.purchased.plan.perkMonthCount = -1;
recipient.purchased.plan.customerId = undefined;
data.sub.key = 'basic_earned';
data.gift.subscription.key = 'basic_earned';
data.gift.subscription.months = 1;
expect(recipient.purchased.plan.perkMonthCount).to.eql(-1);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(1);
});
it('sets plan.perkMonthCount to 1 if user had previous count but lapsed subscription', async () => {
recipient.purchased.plan = plan;
recipient.purchased.plan.perkMonthCount = 2;
recipient.purchased.plan.customerId = undefined;
data.sub.key = 'basic_earned';
data.gift.subscription.key = 'basic_earned';
data.gift.subscription.months = 1;
expect(recipient.purchased.plan.perkMonthCount).to.eql(2);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(1);
});
it('adds to plan.perkMonthCount if user is already subscribed', async () => {
recipient.purchased.plan = plan;
recipient.purchased.plan.perkMonthCount = 1;
data.sub.key = 'basic_earned';
data.gift.subscription.key = 'basic_earned';
data.gift.subscription.months = 1;
expect(recipient.purchased.plan.perkMonthCount).to.eql(1);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(2);
});
it('awards perks if plan.perkMonthCount reaches 3 with existing subscription', async () => {
recipient.purchased.plan = plan;
recipient.purchased.plan.perkMonthCount = 2;
data.sub.key = 'basic_earned';
data.gift.subscription.key = 'basic_earned';
data.gift.subscription.months = 1;
expect(recipient.purchased.plan.perkMonthCount).to.eql(2);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(0);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(0);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(0);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(1);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(5);
});
it('awards perks if plan.perkMonthCount reaches 3 without existing subscription', async () => {
recipient.purchased.plan.perkMonthCount = 0;
expect(recipient.purchased.plan.perkMonthCount).to.eql(0);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(0);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(0);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(0);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(1);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(5);
});
it('awards perks if plan.perkMonthCount reaches 3 without initialized field', async () => {
expect(recipient.purchased.plan.perkMonthCount).to.eql(-1);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(0);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(0);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(0);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(1);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(5);
});
it('awards perks if plan.perkMonthCount goes over 3', async () => {
recipient.purchased.plan = plan;
recipient.purchased.plan.perkMonthCount = 2;
data.sub.key = 'basic_earned';
expect(recipient.purchased.plan.perkMonthCount).to.eql(2);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(0);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(0);
await api.createSubscription(data);
expect(recipient.purchased.plan.perkMonthCount).to.eql(2);
expect(recipient.purchased.plan.consecutive.trinkets).to.eql(1);
expect(recipient.purchased.plan.consecutive.gemCapExtra).to.eql(5);
});
it('sets plan.customerId to "Gift" if it does not already exist', async () => {
expect(recipient.purchased.plan.customerId).to.not.exist;
@@ -379,6 +511,7 @@ describe('payments/index', () => {
expect(user.purchased.plan.customerId).to.eql('customer-id');
expect(user.purchased.plan.dateUpdated).to.exist;
expect(user.purchased.plan.gemsBought).to.eql(0);
expect(user.purchased.plan.perkMonthCount).to.eql(0);
expect(user.purchased.plan.paymentMethod).to.eql('Payment Method');
expect(user.purchased.plan.extraMonths).to.eql(0);
expect(user.purchased.plan.dateTerminated).to.eql(null);
@@ -386,6 +519,63 @@ describe('payments/index', () => {
expect(user.purchased.plan.dateCreated).to.exist;
});
it('sets plan.dateCreated if it did not previously exist', async () => {
expect(user.purchased.plan.dateCreated).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.dateCreated).to.exist;
});
it('sets plan.dateCurrentTypeCreated if it did not previously exist', async () => {
expect(user.purchased.plan.dateCurrentTypeCreated).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.dateCurrentTypeCreated).to.exist;
});
it('keeps plan.dateCreated when changing subscription type', async () => {
await api.createSubscription(data);
const initialDate = user.purchased.plan.dateCreated;
await api.createSubscription(data);
expect(user.purchased.plan.dateCreated).to.eql(initialDate);
});
it('sets plan.dateCurrentTypeCreated when changing subscription type', async () => {
await api.createSubscription(data);
const initialDate = user.purchased.plan.dateCurrentTypeCreated;
await api.createSubscription(data);
expect(user.purchased.plan.dateCurrentTypeCreated).to.not.eql(initialDate);
});
it('keeps plan.perkMonthCount when changing subscription type', async () => {
await api.createSubscription(data);
user.purchased.plan.perkMonthCount = 2;
await api.createSubscription(data);
expect(user.purchased.plan.perkMonthCount).to.eql(2);
});
it('sets plan.perkMonthCount to zero when creating new monthly subscription', async () => {
user.purchased.plan.perkMonthCount = 2;
await api.createSubscription(data);
expect(user.purchased.plan.perkMonthCount).to.eql(0);
});
it('sets plan.perkMonthCount to zero when creating new 3 month subscription', async () => {
user.purchased.plan.perkMonthCount = 2;
await api.createSubscription(data);
expect(user.purchased.plan.perkMonthCount).to.eql(0);
});
it('updates plan.consecutive.offset when changing subscription type', async () => {
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.offset).to.eql(3);
data.sub.key = 'basic_6mo';
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.offset).to.eql(6);
});
it('awards the Royal Purple Jackalope pet', async () => {
await api.createSubscription(data);
@@ -465,6 +655,89 @@ describe('payments/index', () => {
},
});
});
context('Upgrades subscription', () => {
it('from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.customerId).to.eql('customer-id');
const created = user.purchased.plan.dateCreated;
const updated = user.purchased.plan.dateUpdated;
data.sub.key = 'basic_6mo';
data.updatedFrom = { key: 'basic_earned' };
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.dateCreated).to.eql(created);
expect(user.purchased.plan.dateUpdated).to.not.eql(updated);
expect(user.purchased.plan.customerId).to.eql('customer-id');
});
it('from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.customerId).to.eql('customer-id');
const created = user.purchased.plan.dateCreated;
const updated = user.purchased.plan.dateUpdated;
data.sub.key = 'basic_12mo';
data.updatedFrom = { key: 'basic_3mo' };
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.dateCreated).to.eql(created);
expect(user.purchased.plan.dateUpdated).to.not.eql(updated);
expect(user.purchased.plan.customerId).to.eql('customer-id');
});
});
context('Downgrades subscription', () => {
it('from basic_6mo to basic_earned', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.customerId).to.eql('customer-id');
const created = user.purchased.plan.dateCreated;
const updated = user.purchased.plan.dateUpdated;
data.sub.key = 'basic_earned';
data.updatedFrom = { key: 'basic_6mo' };
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.dateCreated).to.eql(created);
expect(user.purchased.plan.dateUpdated).to.not.eql(updated);
expect(user.purchased.plan.customerId).to.eql('customer-id');
});
it('from basic_12mo to basic_3mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
data.sub.key = 'basic_12mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.customerId).to.eql('customer-id');
const created = user.purchased.plan.dateCreated;
const updated = user.purchased.plan.dateUpdated;
data.sub.key = 'basic_3mo';
data.updatedFrom = { key: 'basic_12mo' };
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.dateCreated).to.eql(created);
expect(user.purchased.plan.dateUpdated).to.not.eql(updated);
expect(user.purchased.plan.customerId).to.eql('customer-id');
});
});
});
context('Block subscription perks', () => {
@@ -488,7 +761,6 @@ describe('payments/index', () => {
it('adds 10 to plan.consecutive.gemCapExtra for 6 month block', async () => {
data.sub.key = 'basic_6mo';
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
@@ -496,7 +768,6 @@ describe('payments/index', () => {
it('adds 20 to plan.consecutive.gemCapExtra for 12 month block', async () => {
data.sub.key = 'basic_12mo';
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(20);
@@ -532,6 +803,532 @@ describe('payments/index', () => {
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
context('Upgrades subscription', () => {
context('Using payDifference logic', () => {
beforeEach(async () => {
data.updatedFrom = { logic: 'payDifference' };
});
it('Adds 10 to plan.consecutive.gemCapExtra from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
});
it('Adds 15 to plan.consecutive.gemCapExtra when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(5);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(20);
});
it('Adds 2 to plan.consecutive.trinkets from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('Adds 2 to plan.consecutive.trinkets when upgrading from basic_6mo to basic_12mo', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_6mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
it('Adds 3 to plan.consecutive.trinkets when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
});
context('Using payFull logic', () => {
beforeEach(async () => {
data.updatedFrom = { logic: 'payFull' };
});
it('Adds 10 to plan.consecutive.gemCapExtra from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
});
it('Adds 20 to plan.consecutive.gemCapExtra when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(5);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(25);
});
it('Adds 2 to plan.consecutive.trinkets from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('Adds 4 to plan.consecutive.trinkets when upgrading from basic_6mo to basic_12mo', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_6mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(6);
});
it('Adds 4 to plan.consecutive.trinkets when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(5);
});
});
context('Using refundAndRepay logic', () => {
let clock;
beforeEach(async () => {
clock = sinon.useFakeTimers(new Date('2022-01-01'));
data.updatedFrom = { logic: 'refundAndRepay' };
});
context('Upgrades within first half of subscription', () => {
it('Adds 10 to plan.consecutive.gemCapExtra from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-01-10'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
});
it('Adds 15 to plan.consecutive.gemCapExtra when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(5);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-02-05'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(20);
});
it('Adds 2 to plan.consecutive.trinkets from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-01-08'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('Adds 3 to plan.consecutive.trinkets when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-01-31'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
it('Adds 2 to plan.consecutive.trinkets when upgrading from basic_6mo to basic_12mo', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_6mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-01-28'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
it('Adds 2 to plan.consecutive.trinkets from basic_earned to basic_6mo after initial cycle', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
clock.restore();
clock = sinon.useFakeTimers(new Date('2024-01-08'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('Adds 2 to plan.consecutive.trinkets when upgrading from basic_6mo to basic_12mo after initial cycle', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_6mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-08-28'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
it('Adds 3 to plan.consecutive.trinkets when upgrading from basic_3mo to basic_12mo after initial cycle', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-07-31'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
});
context('Upgrades within second half of subscription', () => {
it('Adds 10 to plan.consecutive.gemCapExtra from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-01-20'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
});
it('Adds 20 to plan.consecutive.gemCapExtra when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(5);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-02-24'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(25);
});
it('Adds 2 to plan.consecutive.trinkets from basic_earned to basic_6mo', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-01-28'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('Adds 4 to plan.consecutive.trinkets when upgrading from basic_6mo to basic_12mo', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_6mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-05-28'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(6);
});
it('Adds 4 to plan.consecutive.trinkets when upgrading from basic_3mo to basic_12mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-03-03'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(5);
});
it('Adds 2 to plan.consecutive.trinkets from basic_earned to basic_6mo after initial cycle', async () => {
data.sub.key = 'basic_earned';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(0);
data.sub.key = 'basic_6mo';
data.updatedFrom.key = 'basic_earned';
clock.restore();
clock = sinon.useFakeTimers(new Date('2022-05-28'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('Adds 4 to plan.consecutive.trinkets when upgrading from basic_6mo to basic_12mo after initial cycle', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_6mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2023-05-28'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(6);
});
it('Adds 4 to plan.consecutive.trinkets when upgrading from basic_3mo to basic_12mo after initial cycle', async () => {
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_3mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(1);
data.sub.key = 'basic_12mo';
data.updatedFrom.key = 'basic_3mo';
clock.restore();
clock = sinon.useFakeTimers(new Date('2023-09-03'));
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(5);
});
});
afterEach(async () => {
if (clock !== null) clock.restore();
});
});
});
context('Downgrades subscription', () => {
it('does not remove from plan.consecutive.gemCapExtra from basic_6mo to basic_earned', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
data.sub.key = 'basic_earned';
data.updatedFrom = { key: 'basic_6mo' };
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(10);
});
it('does not remove from plan.consecutive.gemCapExtra from basic_12mo to basic_3mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
data.sub.key = 'basic_12mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(20);
data.sub.key = 'basic_3mo';
data.updatedFrom = { key: 'basic_12mo' };
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.gemCapExtra).to.eql(20);
});
it('does not remove from plan.consecutive.trinkets from basic_6mo to basic_earned', async () => {
data.sub.key = 'basic_6mo';
expect(user.purchased.plan.planId).to.not.exist;
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_6mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
data.sub.key = 'basic_earned';
data.updatedFrom = { key: 'basic_6mo' };
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_earned');
expect(user.purchased.plan.consecutive.trinkets).to.eql(2);
});
it('does not remove from plan.consecutive.trinkets from basic_12mo to basic_3mo', async () => {
expect(user.purchased.plan.planId).to.not.exist;
data.sub.key = 'basic_12mo';
await api.createSubscription(data);
expect(user.purchased.plan.planId).to.eql('basic_12mo');
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
data.sub.key = 'basic_3mo';
data.updatedFrom = { key: 'basic_12mo' };
await api.createSubscription(data);
expect(user.purchased.plan.consecutive.trinkets).to.eql(4);
});
});
});
context('Mystery Items', () => {
+7 -6
View File
@@ -1359,6 +1359,7 @@ describe('Group Model', () => {
describe('#sendChat', () => {
beforeEach(() => {
sandbox.spy(User, 'update');
sandbox.spy(User, 'updateMany');
});
it('formats message', () => {
@@ -1413,8 +1414,8 @@ describe('Group Model', () => {
it('updates users about new messages in party', () => {
party.sendChat({ message: 'message' });
expect(User.update).to.be.calledOnce;
expect(User.update).to.be.calledWithMatch({
expect(User.updateMany).to.be.calledOnce;
expect(User.updateMany).to.be.calledWithMatch({
'party._id': party._id,
_id: { $ne: '' },
});
@@ -1427,8 +1428,8 @@ describe('Group Model', () => {
group.sendChat({ message: 'message' });
expect(User.update).to.be.calledOnce;
expect(User.update).to.be.calledWithMatch({
expect(User.updateMany).to.be.calledOnce;
expect(User.updateMany).to.be.calledWithMatch({
guilds: group._id,
_id: { $ne: '' },
});
@@ -1437,8 +1438,8 @@ describe('Group Model', () => {
it('does not send update to user that sent the message', () => {
party.sendChat({ message: 'message', user: { _id: 'user-id', profile: { name: 'user' } } });
expect(User.update).to.be.calledOnce;
expect(User.update).to.be.calledWithMatch({
expect(User.updateMany).to.be.calledOnce;
expect(User.updateMany).to.be.calledWithMatch({
'party._id': party._id,
_id: { $ne: 'user-id' },
});
@@ -45,11 +45,10 @@ describe('payments : apple #subscribe', () => {
});
expect(subscribeStub).to.be.calledOnce;
expect(subscribeStub.args[0][0]).to.eql(sku);
expect(subscribeStub.args[0][1]._id).to.eql(user._id);
expect(subscribeStub.args[0][2]).to.eql('receipt');
expect(subscribeStub.args[0][3]['x-api-key']).to.eql(user.apiToken);
expect(subscribeStub.args[0][3]['x-api-user']).to.eql(user._id);
expect(subscribeStub.args[0][0]._id).to.eql(user._id);
expect(subscribeStub.args[0][1]).to.eql('receipt');
expect(subscribeStub.args[0][2]['x-api-key']).to.eql(user.apiToken);
expect(subscribeStub.args[0][2]['x-api-user']).to.eql(user._id);
});
});
});
@@ -35,13 +35,6 @@ describe('GET /world-state', () => {
});
});
it('returns a string representing the current season for NPC sprites', async () => {
const res = await requester().get('/world-state');
expect(res).to.have.nested.property('npcImageSuffix');
expect(res.npcImageSuffix).to.be.a('string');
});
context('no current event', () => {
beforeEach(async () => {
sinon.stub(worldState, 'getCurrentEvent').returns(null);
+12
View File
@@ -215,6 +215,7 @@ describe('cron utility functions', () => {
it('monthly plan, next date in 3 months', () => {
const user = baseUserData(60, 0, 'group_plan_auto');
user.purchased.plan.perkMonthCount = 0;
const planContext = getPlanContext(user, now);
@@ -224,6 +225,7 @@ describe('cron utility functions', () => {
it('monthly plan, next date in 1 month', () => {
const user = baseUserData(62, 0, 'group_plan_auto');
user.purchased.plan.perkMonthCount = 2;
const planContext = getPlanContext(user, now);
@@ -248,5 +250,15 @@ describe('cron utility functions', () => {
expect(planContext.nextHourglassDate)
.to.be.sameMoment('2022-07-10T02:00:00.144Z');
});
it('multi-month plan with perk count', () => {
const user = baseUserData(60, 1, 'basic_3mo');
user.purchased.plan.perkMonthCount = 2;
const planContext = getPlanContext(user, now);
expect(planContext.nextHourglassDate)
.to.be.sameMoment('2022-07-10T02:00:00.144Z');
});
});
});
@@ -12,8 +12,9 @@ const webhookData = {};
app.use(bodyParser.urlencoded({
extended: true,
limit: '10mb',
}));
app.use(bodyParser.json());
app.use(bodyParser.json({ limit: '10mb' }));
app.post('/webhooks/:id', (req, res) => {
const { id } = req.params;
+73 -88
View File
@@ -4979,9 +4979,9 @@
}
},
"@sideway/formula": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz",
"integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg=="
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz",
"integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg=="
},
"@sideway/pinpoint": {
"version": "2.0.0",
@@ -13318,11 +13318,34 @@
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"optional": true
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"loader-utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
"integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"optional": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -13354,6 +13377,38 @@
"ansi-regex": "^5.0.1"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
}
}
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
@@ -17903,9 +17958,9 @@
}
},
"dompurify": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.1.tgz",
"integrity": "sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA=="
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.3.tgz",
"integrity": "sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ=="
},
"domutils": {
"version": "1.7.0",
@@ -20652,9 +20707,9 @@
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"hellojs": {
"version": "1.19.5",
"resolved": "https://registry.npmjs.org/hellojs/-/hellojs-1.19.5.tgz",
"integrity": "sha512-hFlublej5rHFWjGe6MMMmj78otSIXBbrfvtWPZSSRmXKFoLMFlL41PJ1JPS8xwiSIZca2ve8uHoPZUDwU+/8gg=="
"version": "1.20.0",
"resolved": "https://registry.npmjs.org/hellojs/-/hellojs-1.20.0.tgz",
"integrity": "sha512-zfZGRt0J0OpJHnw2GJz4uh+rzMNAMWpIymiaRbSmCqCvqDMLSx2/qR5JucqnHPsZHUEjyKj5aLJ8K54kyHHjLQ=="
},
"hex-color-regex": {
"version": "1.1.0",
@@ -28120,9 +28175,9 @@
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
"stopword": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/stopword/-/stopword-2.0.5.tgz",
"integrity": "sha512-MgmxgmVs0Uo9G4mMqRc/QBXdPePZUnVNYqnNiv8QdCXTqHmGRw36mrjToCeNxhu/7Ifa7RxAtd/KR/GLZdnN9g=="
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/stopword/-/stopword-2.0.7.tgz",
"integrity": "sha512-s+uLKAxrproCLrq0Wcd3JAIjlJLx6l80b2Rzt0u8+ra5SzGkHnNG8PS3DfGmYk2TrKePDVLL4SdKYwKpgSLc+w=="
},
"store2": {
"version": "2.10.0",
@@ -29770,9 +29825,9 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
},
"ua-parser-js": {
"version": "0.7.31",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz",
"integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ=="
"version": "0.7.33",
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz",
"integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw=="
},
"uc.micro": {
"version": "1.0.6",
@@ -30240,9 +30295,9 @@
}
},
"validator": {
"version": "13.7.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
"integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
"version": "13.9.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz",
"integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA=="
},
"vary": {
"version": "1.1.2",
@@ -30574,76 +30629,6 @@
}
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"loader-utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
"integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-mugen-scroll": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/vue-mugen-scroll/-/vue-mugen-scroll-0.2.6.tgz",
+4 -4
View File
@@ -33,13 +33,13 @@
"bootstrap-vue": "^2.23.1",
"chai": "^4.3.7",
"core-js": "^3.27.2",
"dompurify": "^2.4.1",
"dompurify": "^2.4.3",
"eslint": "^6.8.0",
"eslint-config-habitrpg": "^6.2.0",
"eslint-plugin-mocha": "^5.3.0",
"eslint-plugin-vue": "^6.2.2",
"habitica-markdown": "^3.0.0",
"hellojs": "^1.19.5",
"hellojs": "^1.20.0",
"inspectpack": "^4.7.1",
"intro.js": "^6.0.0",
"jquery": "^3.6.3",
@@ -49,13 +49,13 @@
"sass": "^1.34.0",
"sass-loader": "^8.0.2",
"smartbanner.js": "^1.19.1",
"stopword": "^2.0.5",
"stopword": "^2.0.7",
"svg-inline-loader": "^0.8.2",
"svg-url-loader": "^7.1.1",
"svgo": "^1.3.2",
"svgo-loader": "^2.2.1",
"uuid": "^8.3.2",
"validator": "^13.7.0",
"validator": "^13.9.0",
"vue": "^2.7.10",
"vue-cli-plugin-storybook": "2.1.0",
"vue-mugen-scroll": "^0.2.6",
@@ -293,6 +293,11 @@
width: 48px;
height: 52px;
}
.achievement-plantParent2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-plantParent2x.png');
width: 64px;
height: 68px;
}
.achievement-polarPro2x {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/achievement-polarPro2x.png');
width: 68px;
@@ -1369,6 +1374,11 @@
width: 141px;
height: 147px;
}
.background_jungle_watering_hole {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_jungle_watering_hole.png');
width: 141px;
height: 147px;
}
.background_kelp_forest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_kelp_forest.png');
width: 141px;
@@ -1404,6 +1414,11 @@
width: 141px;
height: 147px;
}
.background_mangrove_forest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_mangrove_forest.png');
width: 141px;
height: 147px;
}
.background_marble_temple {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_marble_temple.png');
width: 141px;
@@ -1514,6 +1529,11 @@
width: 141px;
height: 147px;
}
.background_old_timey_basketball_court {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_old_timey_basketball_court.png');
width: 141px;
height: 147px;
}
.background_on_a_castle_wall {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/background_on_a_castle_wall.png');
width: 141px;
@@ -3025,6 +3045,11 @@
width: 68px;
height: 68px;
}
.icon_background_jungle_watering_hole {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_jungle_watering_hole.png');
width: 68px;
height: 68px;
}
.icon_background_kelp_forest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_kelp_forest.png');
width: 68px;
@@ -3060,6 +3085,11 @@
width: 68px;
height: 68px;
}
.icon_background_mangrove_forest {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_mangrove_forest.png');
width: 68px;
height: 68px;
}
.icon_background_marble_temple {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_marble_temple.png');
width: 68px;
@@ -3170,6 +3200,11 @@
width: 68px;
height: 68px;
}
.icon_background_old_timey_basketball_court {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_old_timey_basketball_court.png');
width: 68px;
height: 68px;
}
.icon_background_on_a_castle_wall {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/icon_background_on_a_castle_wall.png');
width: 68px;
@@ -18320,6 +18355,11 @@
width: 90px;
height: 90px;
}
.broad_armor_armoire_basketballUniform {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_basketballUniform.png');
width: 114px;
height: 90px;
}
.broad_armor_armoire_bathtub {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_armoire_bathtub.png');
width: 114px;
@@ -19205,6 +19245,11 @@
width: 114px;
height: 90px;
}
.shield_armoire_basketball {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_basketball.png');
width: 114px;
height: 90px;
}
.shield_armoire_birthdayBanner {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_armoire_birthdayBanner.png');
width: 114px;
@@ -19575,6 +19620,11 @@
width: 68px;
height: 68px;
}
.shop_armor_armoire_basketballUniform {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_basketballUniform.png');
width: 68px;
height: 68px;
}
.shop_armor_armoire_bathtub {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_armoire_bathtub.png');
width: 68px;
@@ -20475,6 +20525,11 @@
width: 68px;
height: 68px;
}
.shop_shield_armoire_basketball {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_basketball.png');
width: 68px;
height: 68px;
}
.shop_shield_armoire_birthdayBanner {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_armoire_birthdayBanner.png');
width: 68px;
@@ -21305,6 +21360,11 @@
width: 90px;
height: 90px;
}
.slim_armor_armoire_basketballUniform {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_basketballUniform.png');
width: 114px;
height: 90px;
}
.slim_armor_armoire_bathtub {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_armoire_bathtub.png');
width: 114px;
@@ -27750,6 +27810,31 @@
width: 68px;
height: 68px;
}
.eyewear_mystery_202303 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/eyewear_mystery_202303.png');
width: 114px;
height: 90px;
}
.head_mystery_202303 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_mystery_202303.png');
width: 114px;
height: 90px;
}
.shop_eyewear_mystery_202303 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_eyewear_mystery_202303.png');
width: 68px;
height: 68px;
}
.shop_head_mystery_202303 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_mystery_202303.png');
width: 68px;
height: 68px;
}
.shop_set_mystery_202303 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_set_mystery_202303.png');
width: 68px;
height: 68px;
}
.broad_armor_mystery_301404 {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_mystery_301404.png');
width: 90px;
@@ -28105,6 +28190,26 @@
width: 114px;
height: 90px;
}
.broad_armor_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Healer.png');
width: 117px;
height: 120px;
}
.broad_armor_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Mage.png');
width: 117px;
height: 120px;
}
.broad_armor_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Rogue.png');
width: 114px;
height: 90px;
}
.broad_armor_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_spring2023Warrior.png');
width: 117px;
height: 120px;
}
.broad_armor_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/broad_armor_special_springHealer.png');
width: 90px;
@@ -28365,6 +28470,26 @@
width: 114px;
height: 90px;
}
.head_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Healer.png');
width: 117px;
height: 120px;
}
.head_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Mage.png');
width: 117px;
height: 120px;
}
.head_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Rogue.png');
width: 114px;
height: 90px;
}
.head_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_spring2023Warrior.png');
width: 117px;
height: 120px;
}
.head_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/head_special_springHealer.png');
width: 90px;
@@ -28505,6 +28630,21 @@
width: 114px;
height: 90px;
}
.shield_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2023Healer.png');
width: 117px;
height: 120px;
}
.shield_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2023Rogue.png');
width: 114px;
height: 90px;
}
.shield_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_spring2023Warrior.png');
width: 117px;
height: 120px;
}
.shield_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shield_special_springHealer.png');
width: 90px;
@@ -28680,6 +28820,26 @@
width: 68px;
height: 68px;
}
.shop_armor_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Healer.png');
width: 68px;
height: 68px;
}
.shop_armor_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Mage.png');
width: 68px;
height: 68px;
}
.shop_armor_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_armor_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_spring2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_armor_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_armor_special_springHealer.png');
width: 68px;
@@ -28940,6 +29100,26 @@
width: 68px;
height: 68px;
}
.shop_head_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Healer.png');
width: 68px;
height: 68px;
}
.shop_head_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Mage.png');
width: 68px;
height: 68px;
}
.shop_head_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_head_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_spring2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_head_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_head_special_springHealer.png');
width: 68px;
@@ -29080,6 +29260,21 @@
width: 68px;
height: 68px;
}
.shop_shield_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2023Healer.png');
width: 68px;
height: 68px;
}
.shop_shield_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_shield_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_spring2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_shield_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_shield_special_springHealer.png');
width: 68px;
@@ -29255,6 +29450,26 @@
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Healer.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Mage.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Rogue.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_spring2023Warrior.png');
width: 68px;
height: 68px;
}
.shop_weapon_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/shop_weapon_special_springHealer.png');
width: 68px;
@@ -29435,6 +29650,26 @@
width: 114px;
height: 90px;
}
.slim_armor_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Healer.png');
width: 117px;
height: 120px;
}
.slim_armor_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Mage.png');
width: 117px;
height: 120px;
}
.slim_armor_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Rogue.png');
width: 114px;
height: 90px;
}
.slim_armor_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_spring2023Warrior.png');
width: 117px;
height: 120px;
}
.slim_armor_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/slim_armor_special_springHealer.png');
width: 90px;
@@ -29615,6 +29850,26 @@
width: 114px;
height: 90px;
}
.weapon_special_spring2023Healer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Healer.png');
width: 117px;
height: 120px;
}
.weapon_special_spring2023Mage {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Mage.png');
width: 117px;
height: 120px;
}
.weapon_special_spring2023Rogue {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Rogue.png');
width: 114px;
height: 90px;
}
.weapon_special_spring2023Warrior {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_spring2023Warrior.png');
width: 117px;
height: 120px;
}
.weapon_special_springHealer {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/weapon_special_springHealer.png');
width: 90px;
@@ -35473,6 +35728,11 @@
width: 190px;
height: 183px;
}
.quest_pinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_pinkMarble.png');
width: 219px;
height: 219px;
}
.quest_pterodactyl {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/quest_pterodactyl.png');
width: 219px;
@@ -36253,6 +36513,11 @@
width: 68px;
height: 68px;
}
.inventory_quest_scroll_pinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_pinkMarble.png');
width: 68px;
height: 68px;
}
.inventory_quest_scroll_pterodactyl {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/inventory_quest_scroll_pterodactyl.png');
width: 68px;
@@ -37603,6 +37868,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_BearCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_BearCub-Polar.png');
width: 105px;
@@ -38028,6 +38298,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cactus-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Cactus-PolkaDot.png');
width: 105px;
@@ -38548,6 +38823,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dragon-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Dragon-PolkaDot.png');
width: 105px;
@@ -38968,6 +39248,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_FlyingPig-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_FlyingPig-PolkaDot.png');
width: 105px;
@@ -39238,6 +39523,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Fox-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Fox-PolkaDot.png');
width: 105px;
@@ -39898,6 +40188,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_LionCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_LionCub-PolkaDot.png');
width: 105px;
@@ -40388,6 +40683,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_PandaCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_PandaCub-PolkaDot.png');
width: 105px;
@@ -41613,6 +41913,11 @@
width: 105px;
height: 105px;
}
.Mount_Body_TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_TigerCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Body_TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_TigerCub-PolkaDot.png');
width: 105px;
@@ -42193,6 +42498,11 @@
width: 135px;
height: 135px;
}
.Mount_Body_Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Wolf-PinkMarble.png');
width: 135px;
height: 135px;
}
.Mount_Body_Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Body_Wolf-PolkaDot.png');
width: 135px;
@@ -42713,6 +43023,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_BearCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_BearCub-Polar.png');
width: 105px;
@@ -43138,6 +43453,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cactus-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Cactus-PolkaDot.png');
width: 105px;
@@ -43658,6 +43978,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dragon-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Dragon-PolkaDot.png');
width: 105px;
@@ -44078,6 +44403,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_FlyingPig-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_FlyingPig-PolkaDot.png');
width: 105px;
@@ -44348,6 +44678,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Fox-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Fox-PolkaDot.png');
width: 105px;
@@ -45008,6 +45343,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_LionCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_LionCub-PolkaDot.png');
width: 105px;
@@ -45498,6 +45838,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_PandaCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_PandaCub-PolkaDot.png');
width: 105px;
@@ -46723,6 +47068,11 @@
width: 105px;
height: 105px;
}
.Mount_Head_TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_TigerCub-PinkMarble.png');
width: 105px;
height: 105px;
}
.Mount_Head_TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_TigerCub-PolkaDot.png');
width: 105px;
@@ -47303,6 +47653,11 @@
width: 135px;
height: 135px;
}
.Mount_Head_Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Wolf-PinkMarble.png');
width: 135px;
height: 135px;
}
.Mount_Head_Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Head_Wolf-PolkaDot.png');
width: 135px;
@@ -47828,6 +48183,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_BearCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_BearCub-Polar.png');
width: 81px;
@@ -48253,6 +48613,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Cactus-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Cactus-PolkaDot.png');
width: 81px;
@@ -48773,6 +49138,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Dragon-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Dragon-PolkaDot.png');
width: 81px;
@@ -49193,6 +49563,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_FlyingPig-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_FlyingPig-PolkaDot.png');
width: 81px;
@@ -49463,6 +49838,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Fox-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Fox-PolkaDot.png');
width: 81px;
@@ -50128,6 +50508,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_LionCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_LionCub-PolkaDot.png');
width: 81px;
@@ -50618,6 +51003,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_PandaCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_PandaCub-PolkaDot.png');
width: 81px;
@@ -51843,6 +52233,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_TigerCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_TigerCub-PolkaDot.png');
width: 81px;
@@ -52423,6 +52818,11 @@
width: 81px;
height: 99px;
}
.Mount_Icon_Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Wolf-PinkMarble.png');
width: 81px;
height: 99px;
}
.Mount_Icon_Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Mount_Icon_Wolf-PolkaDot.png');
width: 81px;
@@ -52953,6 +53353,11 @@
width: 81px;
height: 99px;
}
.Pet-BearCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-BearCub-Polar {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-Polar.png');
width: 81px;
@@ -53053,6 +53458,11 @@
width: 81px;
height: 99px;
}
.Pet-BearCub-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-BearCub-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-BearCub-Thunderstorm.png');
width: 81px;
@@ -53393,6 +53803,11 @@
width: 81px;
height: 99px;
}
.Pet-Cactus-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Cactus-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-PolkaDot.png');
width: 81px;
@@ -53488,6 +53903,11 @@
width: 81px;
height: 99px;
}
.Pet-Cactus-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-Cactus-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Cactus-Thunderstorm.png');
width: 81px;
@@ -53933,6 +54353,11 @@
width: 81px;
height: 99px;
}
.Pet-Dragon-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Dragon-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-PolkaDot.png');
width: 81px;
@@ -54028,6 +54453,11 @@
width: 81px;
height: 99px;
}
.Pet-Dragon-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-Dragon-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Dragon-Thunderstorm.png');
width: 81px;
@@ -54368,6 +54798,11 @@
width: 81px;
height: 99px;
}
.Pet-FlyingPig-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-FlyingPig-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-PolkaDot.png');
width: 81px;
@@ -54463,6 +54898,11 @@
width: 81px;
height: 99px;
}
.Pet-FlyingPig-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-FlyingPig-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-FlyingPig-Thunderstorm.png');
width: 81px;
@@ -54653,6 +55093,11 @@
width: 81px;
height: 99px;
}
.Pet-Fox-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Fox-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-PolkaDot.png');
width: 81px;
@@ -54748,6 +55193,11 @@
width: 81px;
height: 99px;
}
.Pet-Fox-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-Fox-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Fox-Thunderstorm.png');
width: 81px;
@@ -55333,6 +55783,11 @@
width: 81px;
height: 99px;
}
.Pet-LionCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-LionCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-PolkaDot.png');
width: 81px;
@@ -55428,6 +55883,11 @@
width: 81px;
height: 99px;
}
.Pet-LionCub-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-LionCub-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-LionCub-Thunderstorm.png');
width: 81px;
@@ -55838,6 +56298,11 @@
width: 81px;
height: 99px;
}
.Pet-PandaCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-PandaCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-PolkaDot.png');
width: 81px;
@@ -55933,6 +56398,11 @@
width: 81px;
height: 99px;
}
.Pet-PandaCub-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-PandaCub-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-PandaCub-Thunderstorm.png');
width: 81px;
@@ -57088,6 +57558,11 @@
width: 81px;
height: 99px;
}
.Pet-TigerCub-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-TigerCub-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-PolkaDot.png');
width: 81px;
@@ -57183,6 +57658,11 @@
width: 81px;
height: 99px;
}
.Pet-TigerCub-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-TigerCub-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-TigerCub-Thunderstorm.png');
width: 81px;
@@ -57688,6 +58168,11 @@
width: 81px;
height: 99px;
}
.Pet-Wolf-PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-PinkMarble.png');
width: 81px;
height: 99px;
}
.Pet-Wolf-PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-PolkaDot.png');
width: 81px;
@@ -57783,6 +58268,11 @@
width: 81px;
height: 99px;
}
.Pet-Wolf-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-TeaShop.png');
width: 81px;
height: 99px;
}
.Pet-Wolf-Thunderstorm {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-Wolf-Thunderstorm.png');
width: 81px;
@@ -57883,6 +58373,11 @@
width: 81px;
height: 99px;
}
.Pet-HatchingPotion-TeaShop {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet-HatchingPotion-TeaShop.png');
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_Amber {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_Amber.png');
width: 68px;
@@ -58023,6 +58518,11 @@
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_PinkMarble {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_PinkMarble.png');
width: 68px;
height: 68px;
}
.Pet_HatchingPotion_PolkaDot {
background-image: url('https://habitica-assets.s3.amazonaws.com/mobileApp/images/Pet_HatchingPotion_PolkaDot.png');
width: 68px;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

@@ -50,10 +50,7 @@ h3.markdown {
}
a {
color: $blue-10;
&:hover, &:active, &:focus {
color: $blue-10;
text-decoration: underline;
}
}
+9 -11
View File
@@ -26,19 +26,17 @@ a:not([href]), a:not([href]):hover {
a, a:not([href]):not([tabindex]) {
cursor: pointer;
color: $purple-300;
&.standard-link {
color: $blue-10;
&:hover, &:active, &:focus {
text-decoration: underline;
color: $purple-300;
}
&:hover, &:active, &:focus {
text-decoration: underline;
}
&[disabled="disabled"] {
color: $gray-300;
text-decoration: none;
cursor: default;
}
&[disabled="disabled"] {
color: $gray-300;
text-decoration: none;
cursor: default;
}
&.small-link {
@@ -46,6 +46,10 @@
Perk offset months:
<strong>{{ hero.purchased.plan.consecutive.offset }}</strong>
</div>
<div>
Perk month count:
<strong>{{ hero.purchased.plan.perkMonthCount }}</strong>
</div>
<div>
Next Mystic Hourglass:
<strong>{{ nextHourglassDate }}</strong>
@@ -149,7 +153,7 @@ export default {
nextHourglassDate () {
const currentPlanContext = getPlanContext(this.hero, new Date());
return currentPlanContext.nextHourglassDate.format('MMMM');
return currentPlanContext.nextHourglassDate.format('MMMM YYYY');
},
},
methods: {
+9 -14
View File
@@ -86,6 +86,13 @@
>{{ $t('companyContribute') }}
</a>
</li>
<li>
<a
href="https://translate.habitica.com/"
target="_blank"
>{{ $t('translateHabitica') }}
</a>
</li>
</ul>
</div>
<!-- Support -->
@@ -101,6 +108,7 @@
v-if="user"
>
<a
href=""
target="_blank"
@click.prevent="openBugReportModal()"
>
@@ -472,10 +480,6 @@ footer {
color: $purple-300;
text-decoration: underline;
}
a:not([href]):not([class]):hover { // needed to make "report a bug"'s hover state correct
color: $purple-300;
text-decoration: underline;
}
column-gap: 1.5rem;
display: grid;
@@ -675,11 +679,6 @@ h3 {
footer {
padding: 24px 16px;
a:not([href]):not([class]):hover { // needed to make "report a bug"'s hover state correct
color: $purple-300;
text-decoration: underline;
}
column-gap: 1.5rem;
display: grid;
grid-template-areas:
@@ -719,10 +718,6 @@ h3 {
@media (max-width: 1024px) and (min-width: 768px) {
footer {
padding: 24px 24px;
a:not([href]):not([class]):hover { // needed to make "report a bug"'s hover state correct
color: $purple-300;
text-decoration: underline;
}
}
.desktop {
@@ -815,7 +810,7 @@ export default {
...mapState({ user: 'user.data' }),
...mapState(['isUserLoaded']),
getDataDisplayToolUrl () {
const base = 'https://oldgods.net/habitrpg/habitrpg_user_data_display.html';
const base = 'https://tools.habitica.com/';
if (!this.user) return null;
return `${base}?uuid=${this.user._id}`;
},
@@ -159,7 +159,6 @@ label {
}
.cancel-link {
color: $blue-10;
line-height: 1.71;
}
@@ -107,7 +107,6 @@ label {
}
.cancel-link {
color: $blue-10;
line-height: 1.71;
}
@@ -77,7 +77,6 @@
}
a.cancel-link {
color: $blue-10;
margin-right: .5em;
}
@@ -78,7 +78,6 @@
@import '~@/assets/scss/colors.scss';
a:not([href]) {
color: $blue-10;
font-size: 16px;
}
@@ -245,10 +245,6 @@
text-align: center;
color: $gray-100;
a {
color: $blue-10;
}
}
#quest-detail-modal {
@@ -377,11 +377,9 @@
.members-invited {
min-height: 1rem;
color: $blue-10;
margin: 0;
&:hover, &:focus {
color: $blue-10;
text-decoration: underline;
}
}
@@ -340,12 +340,13 @@
<li>
<a
v-once
href="https://oldgods.net/habitrpg/habitrpg_user_data_display.html"
href="https://tools.habitica.com/"
target="_blank"
>{{ $t('dataDisplayTool') }}</a>
</li>
<li>
<a
href=""
target="_blank"
@click.prevent="openBugReportModal()"
>
@@ -521,21 +522,6 @@
margin-left: .5em;
}
// formats the report a bug link to match the others
a:not([href]) {
&:not([role=button]) {
color: #007bff;
text-decoration: none;
}
}
a:not([href]):hover {
&:not([role=button]) {
color: #0056b3;
text-decoration: underline;
}
}
.tier1-icon, .tier2-icon {
width: 11px;
}
@@ -759,6 +745,7 @@
</style>
<script>
import find from 'lodash/find';
import { mapState } from '@/libs/store';
import { goToModForm } from '@/libs/modform';
@@ -835,22 +822,23 @@ export default {
computed: {
...mapState({
user: 'user.data',
currentEvent: 'worldState.data.currentEvent',
currentEventList: 'worldState.data.currentEventList',
}),
questData () {
if (!this.group.quest) return {};
return quests.quests[this.group.quest.key];
},
imageURLs () {
if (!this.currentEvent || !this.currentEvent.season) {
const currentEvent = find(this.currentEventList, event => Boolean(event.season));
if (!currentEvent) {
return {
background: 'url(/static/npc/normal/tavern_background.png)',
npc: 'url(/static/npc/normal/tavern_npc.png)',
};
}
return {
background: `url(/static/npc/${this.currentEvent.season}/tavern_background.png)`,
npc: `url(/static/npc/${this.currentEvent.season}/tavern_npc.png)`,
background: `url(/static/npc/${currentEvent.season}/tavern_background.png)`,
npc: `url(/static/npc/${currentEvent.season}/tavern_npc.png)`,
};
},
},
@@ -5,7 +5,14 @@
:notification="notification"
>
<div slot="content">
<div v-html="$t('invitedToParty', {party: notification.data.name})"></div>
<div
v-html="$t('invitedToPartyBy', {
userId: notification.data.inviter,
userName: invitingUser.auth ? invitingUser.auth.local.username : null,
party: notification.data.name,
})"
>
</div>
<div class="notifications-buttons">
<div
class="btn btn-small btn-success"
@@ -32,10 +39,31 @@ export default {
components: {
BaseNotification,
},
props: ['notification', 'canRemove'],
props: {
notification: {
type: Object,
default (data) {
return data;
},
},
canRemove: {
type: Boolean,
default: true,
},
},
data () {
return {
invitingUser: {},
};
},
computed: {
...mapState({ user: 'user.data' }),
},
async mounted () {
this.invitingUser = await this.$store.dispatch('members:fetchMember', {
memberId: this.notification.data.inviter,
});
},
methods: {
async accept () {
const group = this.notification.data;
@@ -39,7 +39,7 @@
{{ $t('notifications') }}
</h4>
<a
class="small-link standard-link"
class="small-link"
:disabled="notificationsCount === 0"
@click="dismissAll"
>{{ $t('dismissAll') }}</a>
@@ -879,7 +879,7 @@ export default {
return;
}
if (this.user.preferences.suppressModals.raisePet) {
if (this.user.preferences.suppressModals.hatchPet) {
this.hatchPet(pet);
return;
}
@@ -31,7 +31,6 @@
</button>
<a
v-once
class="standard-link"
@click="close()"
>{{ $t('neverMind') }}</a>
</div>
@@ -180,7 +180,6 @@
@import '~@/assets/scss/colors.scss';
a:not([href]) {
color: $blue-10;
font-size: 0.875rem;
line-height: 1.71;
}
@@ -7,6 +7,38 @@
{{ $t('settings') }}
</h1>
<div class="col-sm-6">
<div class="sleep">
<h5>{{ $t('pauseDailies') }}</h5>
<h4>{{ $t('sleepDescription') }}</h4>
<ul>
<li v-once>
{{ $t('sleepBullet1') }}
</li>
<li v-once>
{{ $t('sleepBullet2') }}
</li>
<li v-once>
{{ $t('sleepBullet3') }}
</li>
</ul>
<button
v-if="!user.preferences.sleep"
v-once
class="sleep btn btn-primary btn-block pause-button"
@click="toggleSleep()"
>
{{ $t('pauseDailies') }}
</button>
<button
v-if="user.preferences.sleep"
v-once
class="btn btn-secondary btn-block pause-button"
@click="toggleSleep()"
>
{{ $t('unpauseDailies') }}
</button>
</div>
<hr>
<div class="form-horizontal">
<h5>{{ $t('language') }}</h5>
<select
@@ -517,6 +549,10 @@
width: 100%;
margin-top: 5px;
}
.sleep {
margin-bottom: 16px;
}
</style>
<script>
@@ -651,6 +687,9 @@ export default {
}
},
methods: {
toggleSleep () {
this.$store.dispatch('user:sleep');
},
validateDisplayName: debounce(function checkName (displayName) {
if (displayName.length <= 1 || displayName === this.user.profile.name) {
this.displayNameIssues = [];
@@ -804,7 +804,7 @@ export default {
return currentPlanContext.nextHourglassDate;
},
nextHourGlass () {
const nextHourglassMonth = this.nextHourGlassDate.format('MMM');
const nextHourglassMonth = this.nextHourGlassDate.format('MMM YYYY');
return nextHourglassMonth;
},
@@ -146,6 +146,7 @@
</style>
<script>
import find from 'lodash/find';
import _filter from 'lodash/filter';
import _map from 'lodash/map';
import _throttle from 'lodash/throttle';
@@ -225,7 +226,7 @@ export default {
user: 'user.data',
userStats: 'user.data.stats',
userItems: 'user.data.items',
currentEvent: 'worldState.data.currentEvent',
currentEventList: 'worldState.data.currentEventList',
}),
market () {
return shops.getMarketShop(this.user);
@@ -292,15 +293,16 @@ export default {
return Object.values(this.viewOptions).some(g => g.selected);
},
imageURLs () {
if (!this.currentEvent || !this.currentEvent.season) {
const currentEvent = find(this.currentEventList, event => Boolean(event.season));
if (!currentEvent) {
return {
background: 'url(/static/npc/normal/market_background.png)',
npc: 'url(/static/npc/normal/market_banner_npc.png)',
};
}
return {
background: `url(/static/npc/${this.currentEvent.season}/market_background.png)`,
npc: `url(/static/npc/${this.currentEvent.season}/market_banner_npc.png)`,
background: `url(/static/npc/${currentEvent.season}/market_background.png)`,
npc: `url(/static/npc/${currentEvent.season}/market_banner_npc.png)`,
};
},
},
@@ -397,6 +397,7 @@
</style>
<script>
import find from 'lodash/find';
import _filter from 'lodash/filter';
import _sortBy from 'lodash/sortBy';
import _throttle from 'lodash/throttle';
@@ -512,7 +513,7 @@ export default {
user: 'user.data',
userStats: 'user.data.stats',
userItems: 'user.data.items',
currentEvent: 'worldState.data.currentEvent',
currentEventList: 'worldState.data.currentEventList',
}),
shop () {
return shops.getQuestShop(this.user);
@@ -536,15 +537,16 @@ export default {
return Object.values(this.viewOptions).some(g => g.selected);
},
imageURLs () {
if (!this.currentEvent || !this.currentEvent.season) {
const currentEvent = find(this.currentEventList, event => Boolean(event.season));
if (!currentEvent) {
return {
background: 'url(/static/npc/normal/quest_shop_background.png)',
npc: 'url(/static/npc/normal/quest_shop_npc.png)',
};
}
return {
background: `url(/static/npc/${this.currentEvent.season}/quest_shop_background.png)`,
npc: `url(/static/npc/${this.currentEvent.season}/quest_shop_npc.png)`,
background: `url(/static/npc/${currentEvent.season}/quest_shop_background.png)`,
npc: `url(/static/npc/${currentEvent.season}/quest_shop_npc.png)`,
};
},
},
@@ -2,7 +2,7 @@
<div class="container-fluid">
<h1>{{ $t('communityGuidelines') }}</h1>
<hr>
<p>{{ $t('lastUpdated') }} July 28, 2021</p>
<p>{{ $t('lastUpdated') }} February 8, 2023</p>
<h2 id="welcome">
{{ $t('commGuideHeadingWelcome') }}
</h2>
@@ -21,6 +21,7 @@
<p v-html="$t('commGuidePara016')"></p>
<p v-html="$t('commGuidePara017')"></p>
<ul>
<li v-html="$t('commGuideList01F')"></li>
<li v-html="$t('commGuideList01A')"></li>
<li v-html="$t('commGuideList01B')"></li>
<li v-html="$t('commGuideList01C')"></li>
@@ -32,6 +33,7 @@
<img src="~@/assets/images/community-guidelines/publicSpaces.png">
</div>
<ul>
<li v-html="$t('commGuideList02N')"></li>
<li v-html="$t('commGuideList02A')"></li>
<li v-html="$t('commGuideList02B')"></li>
<li v-html="$t('commGuideList02G')"></li>
@@ -147,10 +149,9 @@
<li>
{{ $t('commGuideList10A') }}
<ul>
<li>{{ $t('commGuideList10A1') }}</li>
<li v-html="$t('commGuideList10A1')"></li>
</ul>
</li>
<li v-html="$t('commGuideList10C')"></li>
<li v-html="$t('commGuideList10D')"></li>
<li v-html="$t('commGuideList10F')"></li>
</ul>
@@ -176,50 +177,53 @@
<h2 id="meet-the-mods">
{{ $t('commGuideHeadingMeet') }}
</h2>
<p v-html="$t('commGuidePara006')"></p>
<p v-html="$t('commGuidePara007')"></p>
<p v-html="$t('commGuidePara008')"></p>
<p v-html="$t('commGuidePara009')"></p>
<div class="media align-items-center">
<img src="~@/assets/images/community-guidelines/staff.png">
<div class="media-body">
<ul>
<li>{{ $t('commGuideAKA', {habitName: 'Viirus', realName: 'Phillip'}) }}</li>
<li>
{{ $t('commGuideAKA', {habitName: 'heyeilatan', realName: 'Natalie'}) }}
({{ $t('commGuideOnGitHub', {gitHubName: 'CuriousMagpie'}) }})
- Web Developer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Viirus', realName: 'Phillip'}) }}
- Mobile Developer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'redphoenix', realName: 'Vicky'}) }}
({{ $t('commGuideOnGitHub', {gitHubName: 'veeeeeee'}) }})
- Co-Founder
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Beffymaroo', realName: 'Beth'}) }}
- Art, Community Management, Many Hats
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'SabreCat', realName: 'Sabe'}) }}
- Web Developer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Apollo', realName: 'Tressley'}) }}
- Designer
</li>
<li>
{{ $t('commGuideAKA', {habitName: 'Piyo', realName: 'Sara'}) }}
- Mobile Designer
</li>
<li>{{ $t('commGuideAKA', {habitName: 'Beffymaroo', realName: 'Beth'}) }}</li>
<li>{{ $t('commGuideAKA', {habitName: 'SabreCat', realName: 'Sabe'}) }}</li>
<li>{{ $t('commGuideAKA', {habitName: 'Apollo', realName: 'Tressley'}) }}</li>
<li>{{ $t('commGuideAKA', {habitName: 'Piyo', realName: 'Sara'}) }}</li>
</ul>
</div>
</div>
<p v-html="$t('commGuidePara010')"></p>
<div class="media align-items-center">
<img src="~@/assets/images/community-guidelines/moderators.png">
<div class="media-body">
<p v-html="$t('commGuidePara011')"></p>
<ul>
<li>Dewines</li>
<li>Nakonana</li>
<li>Cantras</li>
<li>Alys (LadyAlys {{ $t('commGuidePara011c') }})</li>
<li>Fox_town</li>
<li>MaybeSteveRogers</li>
<li>shanaqui</li>
<li>deilann (not yet pictured)</li>
</ul>
</div>
</div>
<p v-html="$t('commGuidePara012')"></p>
<p v-html="$t('commGuidePara013')"></p>
<p>
{{ $t('commGuidePara014') }}<br>
<em>
Lemoness, lefnire, Slappybag, litenull, Shaner, Bobbyroberts99, wc8,
Breadstrings, Megan, Blade, and Daniel the Bard
Breadstrings, Megan, Blade, Daniel the Bard, deilann, shanaqui, Nakonana,
Dewines, Alys, Fox_town, MaybeSteveRogers, and Cantras.
</em>
</p>
<h2 id="final">
@@ -240,6 +244,7 @@
</ul>
<p v-html="$t('commGuidePara069')"></p>
<ul class="list-2col list-unstyled">
<li>Beffymaroo</li>
<li>Breadstrings</li>
<li>Draayder</li>
<li>Kiwibot</li>
@@ -354,6 +354,9 @@
<style lang='scss'>
@import '~@/assets/scss/static.scss';
#front .form-text a {
color: $white !important;
}
</style>
<style lang="scss" scoped>
@@ -362,10 +365,6 @@
@import url('https://fonts.googleapis.com/css?family=Varela+Round');
#front {
.form-text a {
color: $white !important;
}
.container-fluid {
margin: 0;
}
@@ -81,7 +81,6 @@
</span>
<a
v-if="assignedUsersCount > 1 && !showStatus"
class="blue-10"
@click="showStatus = !showStatus"
>
{{ $t('viewStatus') }}
@@ -128,10 +127,6 @@
padding-top: 0.25rem;
z-index: 9;
height: 24px;
.blue-10 {
color: $blue-10;
}
}
.completion-row {
@@ -593,7 +593,6 @@
a:not(.dropdown-item) {
font-size: 12px;
line-height: 1.33;
color: $blue-10;
}
.modal-dialog.modal-sm {
@@ -276,7 +276,6 @@
a {
font-size: 12px;
line-height: 1.33;
color: $blue-10;
margin-top: 4px;
&:focus, &:hover, &:active {
+1 -1
View File
@@ -133,7 +133,7 @@
font-size: 12px;
font-weight: bold;
text-align: center;
color: $gray-400;
color: $white !important;
text-decoration: none !important;
border-bottom: 2px solid transparent;
padding: 0.5rem;
@@ -182,7 +182,6 @@
</table>
</div>
</div>
</div>
</template>
@@ -296,10 +295,6 @@
width: 50%;
}
.challenge-link, .user-link {
color: $blue-10 !important;
}
.entry-action {
b {
text-transform: uppercase;
+5 -5
View File
@@ -272,6 +272,11 @@ const router = new VueRouter({
name: 'transactions',
path: 'transactions',
component: Transactions,
meta: {
privilegeNeeded: [
'userSupport',
],
},
},
{
name: 'notifications',
@@ -316,11 +321,6 @@ const router = new VueRouter({
{
name: 'front', path: 'front', component: HomePage, meta: { requiresLogin: false },
},
// Commenting out merch page see
// https://github.com/HabitRPG/habitica/issues/12039
// {
// name: 'merch', path: 'merch', component: MerchPage, meta: { requiresLogin: false },
// },
{
name: 'news', path: 'new-stuff', component: NewsPage, meta: { requiresLogin: false },
},
@@ -1,8 +1,5 @@
import axios from 'axios';
// import omit from 'lodash/omit';
// import findIndex from 'lodash/findIndex';
const apiv4Prefix = '/api/v4';
export async function getGroupMembers (store, payload) {
@@ -117,38 +114,3 @@ export async function getPurchaseHistory (store, payload) {
const response = await axios.get(`${apiv4Prefix}/members/${payload.memberId}/purchase-history`);
return response.data.data;
}
// export async function selectMember (uid) {
// let memberIsReady = _checkIfMemberIsReady(members[uid]);
//
// if (memberIsReady) {
// _prepareMember(members[uid], self);
// return
// } else {
// fetchMember(uid)
// .then(function (response) {
// var member = response.data.data;
// addToMembersList(member); // lazy load for later
// _prepareMember(member, self);
// deferred.resolve();
// });
// }
// }
// function addToMembersList (member) {
// if (member._id) {
// members[member._id] = member;
// }
// }
// function _checkIfMemberIsReady (member) {
// return member && member.items && member.items.weapon;
// }
//
// function _prepareMember(member, self) {
// self.selectedMember = members[member._id];
// }
//
// $rootScope.$on('userUpdated', function(event, user){
// addToMembersList(user);
// })
+1 -1
View File
@@ -140,7 +140,7 @@
"achievementWoodlandWizardText": "لقد فقس جميع الألوان القياسية لمخلوقات الغابة: الغرير، الدب، الغزال، الثعلب، الضفدع، القنفذ، البومة، الأفعى، السنجاب والشجيرة!",
"achievementWoodlandWizardModalText": "لقد جمعت كل حيوانات الغابة الأليفة!",
"achievementPolarPro": "المحترف القطبي",
"achievementPolarProText": "فقست جميع الحيوانات الأليفة القطبية: الدب ، الثعلب ، البطريق ، الحوت ، والذئب!",
"achievementPolarProText": "فقست جميع الحيوانات الأليفة القطبية في الألوان القياسية: الدب ، الثعلب ، البطريق ، الحوت ، والذئب!",
"achievementPolarProModalText": "لقد جمعت كل الحيوانات الأليفة القطبية!",
"achievementBoneToPick": "جامع العظام",
"achievementBoneToPickText": "فقست جميع الحيوانات الأليفة الهيكلية المغامرة والكلاسيكية!",
+202 -2
View File
@@ -411,7 +411,7 @@
"backgroundScribesWorkshopNotes": "Write your next great scroll in a Scribe's Workshop.",
"backgrounds022019": "مجموعة 57: تم إصدارها في فبراير 2019",
"backgroundBirthdayPartyText": "حفلة عيد ميلاد",
"backgrounds012020": "مجموعة 68: تم طرحه في يناير 2020",
"backgrounds012020": "المجموعة 68: صدرت في يناير 2020",
"backgroundMedievalKitchenText": "مطبخ القرون الوسطى",
"backgroundMedievalKitchenNotes": "اطبخ العاصفة في مطبخ القرون الوسطى.",
"backgroundBirthdayPartyNotes": "احتفل بعيد ميلاد ال Habitican المفضل لديك.",
@@ -448,5 +448,205 @@
"backgroundDojoNotes": "تعلم حركات جديدة في دوجو.",
"backgroundSchoolOfFishText": "سرب من الأسماك",
"backgrounds072019": "المجموعة 62: صدرت في يوليو 2019",
"backgroundParkWithStatueNotes": "اتبع مسارًا تصطف على جانبيه الأزهار عبر حديقة بها تمثال."
"backgroundParkWithStatueNotes": "اتبع مسارًا تصطف على جانبيه الأزهار عبر حديقة بها تمثال.",
"backgroundFlyingOverTropicalIslandsText": "التحليق فوق الجزر الاستوائية",
"backgroundFlyingOverTropicalIslandsNotes": "دع المنظر يذهلك وأنت تحلق فوق الجزر الاستوائية.",
"backgrounds082019": "المجموعة 63: صدرت في أغسطس 2019",
"backgroundLakeWithFloatingLanternsNotes": "شاهد النجوم من بحيرة احتفالية عليها فوانيس عائمة.",
"backgroundLakeWithFloatingLanternsText": "بحيرة عليها فوانيس عائمة",
"backgroundTreehouseNotes": "استرخ بمفردك في منزل الشجرة الخاص بك.",
"backgrounds092019": "المجموعة 64: صدرت في سبتمبر 2019",
"backgroundAutumnFlowerGardenText": "حديقة الزهور الخريفية",
"backgroundInAnAncientTombText": "قبر قديم",
"backgroundAmidAncientRuinsNotes": "قف بوقار لماضٍ غامض بين الآثار القديمة.",
"backgroundGiantDandelionsText": "الهندباء العملاقة",
"backgroundAmongGiantAnemonesText": "بين شقائق النعمان العملاقة",
"backgroundInAnAncientTombNotes": "واجه الأسرار من قبر قديم.",
"backgroundAutumnFlowerGardenNotes": "تشمس في دفء حديقة الزهور الخريفية.",
"backgroundTreehouseText": "منزل الشجرة",
"backgroundAmongGiantAnemonesNotes": "استكشف الشعاب المرجانية بينما أنت محمي\\ة من الحيوانات المفترسة البحرية بين شقائق النعمان العملاقة.",
"backgroundAmidAncientRuinsText": "بين الأطلال القديمة",
"backgroundGiantDandelionsNotes": "اقضِ بعض الوقت بين الهندباء العملاقة.",
"backgroundInAClassroomText": "صف",
"backgroundInAClassroomNotes": "اكتسب المعرفة من معلميك في صف.",
"backgrounds102019": "المجموعة 65: صدرت في اكتوبر 2019",
"backgroundFoggyMoorText": "مستنقع ضبابي",
"backgroundFoggyMoorNotes": "كن حذرًا أثناء عبور المستنقع الضبابي.",
"backgroundPumpkinCarriageText": "عربة اليقطين",
"backgroundPumpkinCarriageNotes": "اركب في عربة اليقطين المسحورة قبل وصول منتصف الليل.",
"backgroundMonsterMakersWorkshopText": "ورشة عمل صانع الوحش",
"backgroundMonsterMakersWorkshopNotes": "تجربة مع علوم مشوهة في ورشة عمل صانع الوحش.",
"backgrounds112019": "المجموعة 66: صدرت في نوفمبر 2019",
"backgroundFarmersMarketText": "سوق المزارعين",
"backgroundFarmersMarketNotes": "تسوق للحصول على الطعام الطازج في سوق المزارعين.",
"backgroundFlyingInAThunderstormText": "عاصفة رعدية مضطربة",
"backgroundFlyingInAThunderstormNotes": "تابع عاصفة رعدية مضطربة إذا كنت تجرؤ.",
"backgroundPotionShopNotes": "اعثر على إكسير لأي مرض في متجر الجرعات السحرية.",
"backgroundPotionShopText": "متجر الجرعات السحرية",
"backgrounds122019": "المجموعة 67: صدرت في ديسمبر 2019",
"backgroundWinterNocturneText": "ليلة شتاء",
"backgroundWinterNocturneNotes": "تشمس في ضوء النجوم في ليلة شتاء.",
"backgroundElegantBallroomText": "قاعة رقص أنيقة",
"backgroundDesertWithSnowText": "صحراء ثلجية",
"backgrounds022020": "المجموعة 69: صدرت في فبراير 2020",
"backgroundHallOfHeroesText": "قاعة الأبطال",
"backgrounds032020": "المجموعة 70: صدرت في مارس 2020",
"backgroundButterflyGardenText": "حديقة الفراشات",
"backgroundSnowglobeNotes": "هز كرة ثلجية واستقر في صورة مصغرة لمنظر طبيعي شتوي.",
"backgroundAmongGiantFlowersText": "بين الزهور العملاقة",
"backgroundHallOfHeroesNotes": "اقترب من قاعة الأبطال بتقدير وتقديس.",
"backgroundDesertWithSnowNotes": "شاهد الجمال النادر والهادئ للصحراء الثلجية.",
"backgroundTeaPartyNotes": "شارك في حفلة شاي فاخرة.",
"backgroundAnimalCloudsText": "غيوم على شكل حيوانات",
"backgrounds042020": "المجموعة 71: صدرت في أبريل 2020",
"backgroundAnimalCloudsNotes": "مارس خيالك بالعثور على أشكال حيوانات في الغيوم.",
"backgroundHolidayMarketText": "سوق العطلات",
"backgroundTeaPartyText": "حفلة شاي",
"backgroundElegantBallroomNotes": "ارقص طوال الليل في قاعة رقص أنيقة.",
"backgroundHolidayMarketNotes": "اعثر على الهدايا والزخارف المثالية في سوق العطلات.",
"backgroundSnowglobeText": "كرة الثلج",
"backgroundSucculentGardenNotes": "قدّر جمال حديقة النباتات النضرة.",
"backgroundButterflyGardenNotes": "احتفل مع الملقحات في حديقة الفراشات.",
"backgroundSucculentGardenText": "حديقة النباتات النضرة",
"backgroundHolidayWreathText": "إكليل الصنوبر",
"backgroundHolidayWreathNotes": "تزيين صورتك الرمزية مع إكليل عطر من الصنوبر.",
"backgroundAmongGiantFlowersNotes": "اقض بعض الوقت بين الزهور العملاقة.",
"backgroundHotAirBalloonText": "منطاد الهواء الساخن",
"backgroundRelaxationRiverText": "نهر الاسترخاء",
"backgroundHotAirBalloonNotes": "احلق فوق الأرض في منطاد الهواء الساخن.",
"backgroundStrawberryPatchText": "حقل الفراولة",
"backgroundHeatherFieldNotes": "استمتع برائحة حقل الخلنج.",
"backgroundHabitCityRooftopsText": "أسطح المنازل في مدينة حابيت",
"backgroundHabitCityRooftopsNotes": "خذ قفزات جريئة بين أسطح المنازل في مدينة حابيت.",
"backgroundHeatherFieldText": "حقل الخلنج",
"backgroundRainyBarnyardNotes": "تجول في مزرعة ممطرة.",
"backgroundRainyBarnyardText": "مزرعة ممطرة",
"backgrounds052020": "المجموعة 72: صدرت في مايو 2020",
"backgroundStrawberryPatchNotes": "جمع التوت الطازج من حقل الفراولة.",
"backgrounds062020": "المجموعة 73: صدرت في يونيو 2020",
"backgroundRelaxationRiverNotes": "انجرف ببطء على طول نهر الاسترخاء.",
"backgroundSaltLakeText": "بحيرة مالحة",
"backgroundVikingShipText": "سفينة فايكنغ",
"backgroundSaltLakeNotes": "شاهد التموجات الحمراء المذهلة لبحيرة مالحة.",
"backgroundBeachCabanaNotes": "استرخِ في ظل كوخ الشاطئ.",
"backgroundSwimmingAmongJellyfishText": "السباحة بين قناديل البحر",
"backgrounds072020": "المجموعة 74: صدرت في يوليو 2020",
"backgroundBeachCabanaText": "كوخ الشاطئ",
"backgroundVikingShipNotes": "أبحر على متن سفينة فايكنغ بحثًا عن المغامرة.",
"backgrounds082020": "المجموعة 75: صدرت في أغسطس 2020",
"backgroundSwimmingAmongJellyfishNotes": "اشعر بالجمال والخطر وأنت تسبح بين قناديل البحر.",
"backgroundUnderwaterRuinsText": "أطلال تحت الماء",
"backgroundCampingOutNotes": "استمتع بالهواء الطلق أثناء رحلة التخييم.",
"backgroundUnderwaterRuinsNotes": "اِسْتَكْشِفْ الأطلال تحت الماء التي غرقت منذ فترة طويلة.",
"backgroundCampingOutText": "رحلة تخييم",
"backgroundProductivityPlazaText": "ساحة الإنتاجية",
"backgroundJungleCanopyText": "رؤوس الأشجار الاستوائية",
"backgroundJungleCanopyNotes": "تشمس في الروعة الساخنة في رؤوس الأشجار الاستوائية.",
"backgroundProductivityPlazaNotes": "قم بنزهة ملهمة في ساحة الإنتاجية في مدينة حابيت.",
"backgroundFlyingOverAnAutumnForestNotes": "انظر إلى الألوان الرائعة أسفلك أثناء التحليق فوق الغابة الخريفية.",
"backgroundFlyingOverAnAutumnForestText": "التحليق فوق الغابة الخريفية",
"backgrounds092020": "المجموعة 76: صدرت في سبتمبر 2020",
"backgroundGiantAutumnLeafNotes": "اجثم على ورقة عملاقة قبل أن تسقط.",
"backgroundGiantAutumnLeafText": "ورقة عملاقة",
"backgroundHerdingSheepInAutumnNotes": "اختلط بالقطيع من الأغنام.",
"backgroundHerdingSheepInAutumnText": "قطيع من الأغنام",
"backgrounds102020": "المجموعة 77: صدرت في اكتوبر 2020",
"backgroundGingerbreadHouseText": "بيت كعك الزنجبيل",
"backgroundSpookyScarecrowFieldText": "حقل الفزاعة المخيفة",
"backgroundRiverOfLavaText": "نهر من الحمم البركانية",
"backgroundMysticalObservatoryText": "مرصد باطني",
"backgroundCrescentMoonNotes": "قم بعمل الأحلام وأنت جالس على الهلال.",
"backgroundHauntedForestText": "غابة مسكونة",
"backgroundRiverOfLavaNotes": "تحدى الحمل الحراري وتجول على طول نهر الحمم البركانية.",
"backgroundHauntedForestNotes": "حاول ألا تضيع في الغابة المسكونة.",
"backgroundCrescentMoonText": "هلال",
"backgroundSpookyScarecrowFieldNotes": "أثبت أنك أكثر شجاعة من الطائر بالذهاب إلى حقل الفزاعة المخيفة.",
"backgrounds112020": "المجموعة 78: صدرت في نوفمبر 2020",
"backgroundMysticalObservatoryNotes": "اقرأ مصيرك في النجوم من المرصد الباطني.",
"backgroundRestingInTheInnNotes": "اعمل براحة وأمان في غرفتك أثناء الراحة في النزل.",
"backgroundRestingInTheInnText": "الراحة في النزل",
"backgrounds122020": "المجموعة 79: صدرت في ديسمبر 2020",
"backgroundGingerbreadHouseNotes": "تحيط علما بالمشاهد والروائح و(إن كنت تجرؤ) النكهات بيت كعك الزنجبيل.",
"backgroundIcicleBridgeNotes": "اعبر الجسر الجليدي بحذر.",
"backgroundIcicleBridgeText": "جسر جليدي",
"backgroundInsideAnOrnamentText": "داخل حلية العطلة",
"backgroundWintryCastleNotes": "انظر إلى القلعة الشتوية التي تقع داخل الضباب البارد.",
"backgroundHolidayHearthText": "مدفأة احتفالية",
"backgrounds022021": "المجموعة 81: صدرت في فبراير 2021",
"backgroundFlyingOverGlacierText": "تحلق فوق نهر جليدي",
"backgrounds012021": "المجموعة 80: صدرت في يناير 2021",
"backgroundWintryCastleText": "قلعة شتوية",
"backgroundHotSpringNotes": "تخلص من همومك عن طريق الراحة في ينبوع حار.",
"backgroundHotSpringText": "ينبوع حار",
"backgroundHolidayHearthNotes": "استرخ ، دفئ نفسكَ وجفف نفسك بجانب مدفأة احتفالية.",
"backgroundInsideAnOrnamentNotes": "دع روح العطلة الخاصة بك تتألق من داخل حلية العطلة.",
"backgroundFlyingOverGlacierNotes": "شاهد المشهد المهيب وأنت تحلق فوق نهر جليدي.",
"backgroundHeartShapedBubblesText": "فقاعات على شكل قلب",
"backgroundHeartShapedBubblesNotes": "اطف بمرح بين الفقاعات على شكل قلب.",
"backgrounds032021": "المجموعة 82: صدرت في مارس 2021",
"backgroundThroneRoomText": "غرفة العرش",
"backgroundThroneRoomNotes": "امنح جمهورًا في غرفة العرش الفاخرة الخاصة بك.",
"backgroundInTheArmoryText": "في مستودع الأسلحة",
"backgroundSplashInAPuddleNotes": "استمتع بآثار العاصفة بالرش في بركة.",
"backgroundSpringThawText": "ذوبـان الثلوج في فصل الربيع",
"backgroundSpringThawNotes": "شاهد الشتاء يختفي مع ذوبان الثلوج في فصل الربيع.",
"backgrounds042021": "المجموعة 83: صدرت في أبريل 2021",
"backgroundInTheArmoryNotes": "جهز نفسك في مستودع الأسلحة.",
"backgroundSplashInAPuddleText": "الرش في بركة",
"backgroundAmongCattailsText": "بين القصب",
"backgroundElegantGardenText": "حديقة أنيقة",
"backgroundAmongCattailsNotes": "انظر إلى الحياة البرية في الأراضي الرطبة بين القصب.",
"backgroundCottageConstructionNotes": "ساعد في, أو على الأقل الإشراف على كوخ قيد الإنشاء.",
"backgroundCottageConstructionText": "كوخ قيد الانشاء",
"backgroundForestedLakeshoreText": "شاطئ البحيرة الحرجي",
"backgroundDragonsLairText": "عرين التنين",
"backgroundWaterMillNotes": "شاهد عجلة الطاحونة المائية تدور.",
"backgroundGhostShipText": "سفينة الأشباح",
"backgrounds062021": "المجموعة 85: صدرت في يونيو 2021",
"backgroundWindmillsText": "طواحين الهواء",
"backgroundAfternoonPicnicNotes": "استمتع بنزهة بعد الظهر بمفردك أو مع حيوانك الأليف.",
"backgroundClotheslineText": "حبل الغسيل",
"backgroundUnderwaterAmongKoiNotes": "أبهر وانبهر بالمخلوقات المتلألئة تحت الماء بين أسماك كوي.",
"backgrounds052021": "المجموعة 84: صدرت في مايو 2021",
"backgrounds072021": "المجموعة 86: صدرت في يوليو 2021",
"backgroundGhostShipNotes": "أثبت صحة القصص والأساطير عندما تصعد على متن سفينة الأشباح.",
"backgroundElegantGardenNotes": "تجول على طول المسارات المشذبة الجميلة لحديقة أنيقة.",
"backgroundForestedLakeshoreNotes": "كن موضع حسد فريقك من خلال موقعك المتميز على شاطئ البحيرة الحرجي.",
"backgroundDragonsLairNotes": "حاول ألا تزعج ساكن عرين التنين.",
"backgroundAfternoonPicnicText": "نزهة بعد الظهر",
"backgroundWaterMillText": "طاحونة مائية",
"backgroundClotheslineNotes": "استرخِ بينما تجف الملابس على حبل الغسيل.",
"backgroundWindmillsNotes": "استعد لمحاربة أعداء غير مرئيين في طواحين الهواء.",
"backgroundUnderwaterAmongKoiText": "تحت الماء بين أسماك كوي",
"backgroundRagingRiverText": "نهر هائج",
"backgroundRagingRiverNotes": "قف وسط التيار العظيم لنهر هائج.",
"backgrounds082021": "المجموعة 87: صدرت في أغسطس 2021",
"backgroundStoneTowerText": "برج حجري",
"backgroundStoneTowerNotes": "انظر من حاجز البرج الحجري إلى آخر.",
"backgroundRopeBridgeText": "جسر الحبل",
"backgroundDaytimeMistyForestText": "غابة ضبابية",
"backgroundRopeBridgeNotes": "أظهر للمشككين أن جسر الحبل هذا آمن تمامًا.",
"backgrounds092021": "المجموعة 88: صدرت في سبتمبر 2021",
"backgroundVineyardText": "مزرعة العنب",
"backgroundAutumnPoplarsText": "غابة الحور الخريفية",
"backgroundDaytimeMistyForestNotes": "تشمس بأشعة الضوء المشرقة من خلال الغابة الضبابية.",
"backgroundVineyardNotes": "استكشف مساحة من مزرعة العنب المثمرة.",
"backgroundAutumnLakeshoreText": "شاطئ البحيرة الخريفية",
"backgrounds102021": "المجموعة 89: صدرت في اكتوبر 2021",
"backgroundAutumnLakeshoreNotes": "توقف عند شاطئ البحيرة الخريفية لتقدير انعكاس الغابة على الماء.",
"backgroundAutumnPoplarsNotes": "استمتع بالدرجات اللامعة من اللون البني والذهبي في غابة الحور الخريفية.",
"backgrounds122021": "المجموعة 91: صدرت في ديسمبر 2021",
"backgrounds112021": "المجموعة 90: صدرت في نوفمبر 2021",
"backgroundFortuneTellersShopText": "محل العرافة",
"backgroundFortuneTellersShopNotes": "ابحث عن تلميحات مغرية لمستقبلك في محل العرافة.",
"backgroundInsideAPotionBottleText": "داخل زجاجة الجرعة السحرية",
"backgroundInsideAPotionBottleNotes": "انظر عبر الزجاج بينما تأمل في الإنقاذ من داخل زجاجة الجرعة السحرية.",
"backgroundSpiralStaircaseText": "درج حلزوني",
"backgroundSpiralStaircaseNotes": "اصعد ، انزل ، واذهب حول الدرج الحلزوني.",
"backgroundCrypticCandlesText": "شموع خفية",
"backgroundCrypticCandlesNotes": "استدع قوى غامضة بين الشموع الخفية.",
"backgroundHauntedPhotoText": "صورة مسكونة",
"backgroundHauntedPhotoNotes": "تجد نفسك محاصرًا في عالم أحادي اللون لصورة مسكونة.",
"backgroundUndeadHandsText": "أيدي الزومبي",
"backgroundUndeadHandsNotes": "حاول الهروب من براثن أيدي الزومبي."
}
+9 -8
View File
@@ -1,14 +1,14 @@
{
"quests": "التناقيب",
"quest": "تنقيب",
"petQuests": "Pet and Mount Quests",
"unlockableQuests": "Unlockable Quests",
"goldQuests": "Masterclasser Quest Lines",
"quests": "مغامرات",
"quest": "مغامرة",
"petQuests": "مغامرات للحصول على حيوانات الأليفة ومطايا",
"unlockableQuests": "مغامرات غير قابلة للفتح",
"goldQuests": "مغامرات ماستركلاسر",
"questDetails": "تفاصيل المغامرة",
"questDetailsTitle": "Quest Details",
"questDetailsTitle": "تفاصيل المغامرة",
"questDescription": "Quests allow players to focus on long-term, in-game goals with the members of their party.",
"invitations": "الدعوات",
"completed": "\t\nمنتهى!",
"completed": "اكتملت المغامرة!",
"rewardsAllParticipants": "Rewards for all Quest Participants",
"rewardsQuestOwner": "Additional Rewards for Quest Owner",
"inviteParty": "Invite Party to Quest",
@@ -71,5 +71,6 @@
"bossHealth": "<%= currentHealth %> / <%= maxHealth %> Health",
"rageAttack": "Rage Attack:",
"bossRage": "<%= currentRage %> / <%= maxRage %> Rage",
"rageStrikes": "Rage Strikes"
"rageStrikes": "Rage Strikes",
"hatchingPotionQuests": "مغامرات للحصول على جرعات سحرية"
}
+14 -1
View File
@@ -93,5 +93,18 @@
"achievementFreshwaterFriendsText": "Завършили сте мисиите за домашни любимци за аксолотъла, жабата и хипопотама.",
"achievementFreshwaterFriends": "Сладководни приятели",
"yourRewards": "Вашите Награди",
"achievementBoneCollectorModalText": "Събрали сте всичките Скелетни Любимци!"
"achievementBoneCollectorModalText": "Събрали сте всичките Скелетни Любимци!",
"achievementRedLetterDay": "Червен Празник",
"achievementLegendaryBestiary": "Легендарен Бестиарий",
"achievementLegendaryBestiaryText": "Излюпили са всички стандартни цветови разновидности на Митичните животни: Дракон, Летящо прасе, Грифон, Водна змия и Еднорог!",
"achievementLegendaryBestiaryModalText": "Събрали сте всички Митичн любимци!",
"achievementSkeletonCrewModalText": "Събрали сте всички Скелетни животни!",
"achievementSeeingRed": "Виждам червено",
"achievementSkeletonCrew": "Скелетен екипаж",
"achievementSeeingRedText": "Събрали са всичк Червени любимци.",
"achievementRedLetterDayModalText": "Събрали сте всички Червени животни!",
"achievementSeasonalSpecialist": "Сезонен експерт",
"achievementRedLetterDayText": "Са събрали всички Червени животни.",
"achievementSeeingRedModalText": "Събрали сте всички Червени любимци!",
"achievementSkeletonCrewText": "Събрали са всички Скелетни животни."
}
+7 -1
View File
@@ -1 +1,7 @@
{}
{
"achievement": "Kadaugan",
"onwards": "Padayon!",
"levelup": "Sa pagbuhat sa imong tumong sa kinabuhi, mitaas ang imong nibel ug nahanaw ang imong sakit nga gibati.",
"reachedLevel": "Nakamtan mo ang Nibel <%= level %>",
"yourRewards": "Imong Daog"
}
+10 -1
View File
@@ -106,5 +106,14 @@
"achievementLegendaryBestiaryModalText": "Posbíral/a jsi všechny mytické mazlíčky!",
"achievementLegendaryBestiaryText": "Posbíral/a všechny mytické mazlíčky: draka, létající prase, gryfona, mořského hada a jednorožce!",
"achievementLegendaryBestiary": "Legendární bestiář",
"achievementSeasonalSpecialist": "Sezónní specialista"
"achievementSeasonalSpecialist": "Sezónní specialista",
"achievementVioletsAreBlueText": "Posbíral/a všechny mazlíčky z Modré Cukrové Vaty.",
"achievementVioletsAreBlue": "Fialky jsou Modré",
"achievementVioletsAreBlueModalText": "Posbíral/a jsi všechny mazlíčky z Modré Cukrové Vaty.",
"achievementSeasonalSpecialistModalText": "Dokončl/a jsi všechny sezónní úkoly!",
"achievementDomesticatedModalText": "Sesbíral/a jsi všechna domácí zvířata!",
"achievementSeasonalSpecialistText": "Dokončil/a jsi všechny Jarní a Zimní sezónní úkoly: Honba za vajíčky, Pastičkář Santa, a najdi Cuba!",
"achievementWildBlueYonderText": "Ochočil/a všechny zvířata z Modré Cukrové Vaty.",
"achievementWildBlueYonderModalText": "Ochočil/a jsi všechny mazlíčky z Modré Cukrové Vaty!",
"achievementDomesticatedText": "Vylíhl/a všechna standardní zbarvení domácích zvířat: Fretka, morče, kohout, létající prasátko, krysa, králík, kůň a kráva!"
}
+4 -1
View File
@@ -141,5 +141,8 @@
"achievementWoodlandWizardText": "Du hast alle Standard-Farben der Waldkreaturen ausgebrütet: Dachs, Bär, Hirsch, Fuchs, Frosch, Igel, Eule, Schnecke, Eichhörnchen und Bäumling!",
"achievementBoneToPickModalText": "Du hast alle klassischen und Quest-Skeletthaustiere gesammelt!",
"achievementBoneToPick": "Ein harter Knochen",
"achievementBoneToPickText": "Hat alle klassischen und Quest-Skeletthaustiere ausgebrütet!"
"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!"
}
+12 -1
View File
@@ -745,5 +745,16 @@
"backgroundAutumnBridgeNotes": "Bewundere die Schönheit einer Brücke im Herbst.",
"backgrounds122022": "Set 103: Veröffentlicht im Dezember 2022",
"backgroundBranchesOfAHolidayTreeText": "Äste eines Festtagsbaums",
"backgroundBranchesOfAHolidayTreeNotes": "Baumle auf den Ästen eines Festtagsbaums."
"backgroundBranchesOfAHolidayTreeNotes": "Baumle auf den Ästen eines Festtagsbaums.",
"backgrounds032023": "SET 106: Veröffentlicht im März 2023",
"backgrounds022023": "SET 195: Veröffentlicht im Februar 2023",
"backgroundGoldenBirdcageText": "Goldener Vogelkäfig",
"backgroundGoldenBirdcageNotes": "Verstecken in einem goldenen Vogelkäfig.",
"backgrounds012023": "SET 104: Veröffentlicht Januar 2023",
"backgroundRimeIceText": "Raureif",
"backgroundRimeIceNotes": "Bewundere funkelnden Raureif.",
"backgroundSnowyTempleText": "Verschneiter Tempel",
"backgroundSnowyTempleNotes": "Einen ruhigen verschneiten Tempel anschauen.",
"backgroundSnowyVillageText": "Verschneites Dorf",
"backgroundSnowyVillageNotes": "Ein verschneites Dorf bewundern."
}
@@ -129,5 +129,6 @@
"commGuidePara017": "Hier ist die Kurzfassung, aber wir möchten Dich ermutigen, weiter unten mehr Details zu erfahren:",
"commGuideList02M": "Frage nicht nach oder bettle nicht um Edelsteine, Abonnements oder die Mitgliedschaft in Gruppenplänen. Nachrichten dieser Art sind weder in der Taverne, noch in öffentlichen oder privaten Chaträumen, und auch nicht in Privatnachrichten erlaubt. Wenn Du Nachrichten erhältst, in denen man Dich um bezahlte Artikel fragt, melde sie bitte über das Fähnchen. Wiederholte oder extreme Betteleien nach Edelsteinen oder Abonnements, vor allem nachdem bereits eine Warnung ausgesprochen wurde, können zu einer Kontosperre führen.",
"commGuideList09D": "Entfernung oder Herabstufung des Mitwirkenden-Ranges",
"commGuideList05H": "Schwerwiegende oder wiederholte Versuche, andere Spielende zu betrügen oder zu bedrängen, um an Gegenstände zu kommen, die echtes Geld kosten"
"commGuideList05H": "Schwerwiegende oder wiederholte Versuche, andere Spielende zu betrügen oder zu bedrängen, um an Gegenstände zu kommen, die echtes Geld kosten",
"commGuideList02N": "<strong>Markiere und melde Nachrichten, in denen diese Richtlinien oder die Nutzungsbedingungen nicht eingehalten werden.</strong> Wir werden uns so schnell wie möglich darum kümmern. Alternativ kannst du Mitarbeiter:innen über <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> benachrichtigen, doch die Markierung ist der schnellste Weg, um Hilfe zu erhalten."
}
+1 -1
View File
@@ -166,7 +166,7 @@
"assignedToUser": "Zugewiesen: <strong>@<%- userName %></strong>",
"assignedToMembers": "<%= userCount %> Mitgliedern",
"assignedToYouAndMembers": "<strong>Dir</strong>, <%= userCount %> Mitgliedern",
"youAreAssigned": "Dir zugewiesen",
"youAreAssigned": "Zugewiesen: <strong>Dir<strong>",
"taskIsUnassigned": "Diese Aufgabe ist niemandem zugewiesen",
"confirmUnClaim": "Bist Du sicher, dass Du diese Aufgabe abgeben möchtest?",
"confirmNeedsWork": "Bist Du sicher, dass Du diese Aufgabe auf \"Benötigt Arbeit\" setzen möchtest?",
+8 -1
View File
@@ -235,5 +235,12 @@
"fall2022HarpyMageSet": "Harpyie (Magier)",
"fall2022WatcherHealerSet": "Beobachter (Heiler)",
"gemSaleHow": "Kauf einfach zwischen <%= eventStartMonth %> <%= eventStartOrdinal %>und <%= eventEndOrdinal %> eines der Edelstein-Pakete wie normal und Deinem Konto werden automatisch die zusätzlichen Edelsteine gutgeschrieben. Das heißt insgesamt mehr Edelsteine zum ausgeben, teilen oder ansparen für zukünftige Veröffentlichungen!",
"gemSaleLimitations": "Dieses Sonderangebot gilt nur während der zeitlich beschränkten Aktion. Die Aktion startet am <%= eventStartOrdinal %>. <%= eventStartMonth %> um 8:00 EDT (12:00 UTC) und endet am <%= eventEndOrdinal %>. <%= eventStartMonth %> um 20:00 PM EDT (00:00 UTC). Das Sonderangebot ist nur verfügbar, wenn Du Edelsteine für Dich selbst kaufst."
"gemSaleLimitations": "Dieses Sonderangebot gilt nur während der zeitlich beschränkten Aktion. Die Aktion startet am <%= eventStartOrdinal %>. <%= eventStartMonth %> um 8:00 EDT (12:00 UTC) und endet am <%= eventEndOrdinal %>. <%= eventStartMonth %> um 20:00 PM EDT (00:00 UTC). Das Sonderangebot ist nur verfügbar, wenn Du Edelsteine für Dich selbst kaufst.",
"winter2023WalrusWarriorSet": "Walross (Krieger)",
"winter2023FairyLightsMageSet": "Feenlichter (Magier)",
"winter2023CardinalHealerSet": "Kardinal (Heiler)",
"dateStartFebruary": "8. Februar",
"anniversaryLimitedDates": "30. Januar bis 8. Februar",
"limitedEvent": "Limitiertes Event",
"winter2023RibbonRogueSet": "Schleife (Schurke)"
}
+2 -1
View File
@@ -113,5 +113,6 @@
"gryphatrice": "Greifatrice",
"tooMuchFood": "Du versuchst zu viel Futter an Dein Haustier zu verfüttern, Aktion abgebrochen",
"notEnoughFood": "Du hast nicht genug Futter",
"invalidAmount": "Ungültige Menge Futter, positiver Integer benötigt"
"invalidAmount": "Ungültige Menge Futter, positiver Integer benötigt",
"jubilantGryphatrice": "Jubelnder Greifatrice"
}
+4 -1
View File
@@ -144,5 +144,8 @@
"achievementBoneToPickModalText": "You collected all the Classic and Quest Skeleton Pets!",
"achievementPolarPro": "Polar Pro",
"achievementPolarProText": "Has hatched all standard colors of Polar pets: Bear, Fox, Penguin, Whale, and Wolf!",
"achievementPolarProModalText": "You collected all the Polar Pets!"
"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!"
}
+12 -4
View File
@@ -845,13 +845,13 @@
"backgrounds012023": "SET 104: Released January 2023",
"backgroundRimeIceText": "Rime Ice",
"backgroundRimeIceNotes": "Admire Sparkly Rime Ice.",
"backgroundRimeIceNotes": "Admire sparkly Rime Ice.",
"backgroundSnowyTempleText": "Snowy Temple",
"backgroundSnowyTempleNotes": "View a Serene Snowy Temple.",
"backgroundSnowyTempleNotes": "View a serene Snowy Temple.",
"backgroundWinterLakeWithSwansText": "Winter Lake With Swans",
"backgroundWinterLakeWithSwansNotes": "Enjoy Nature at a Winter Lake With Swans.",
"backgroundWinterLakeWithSwansNotes": "Enjoy nature at a Winter Lake With Swans.",
"backgrounds022023": " SET 105: Released February 2022",
"backgrounds022023": "SET 105: Released February 2023",
"backgroundInFrontOfFountainText": "In Front of a Fountain",
"backgroundInFrontOfFountainNotes": "Stroll In Front of a Fountain.",
"backgroundGoldenBirdcageText": "Golden Birdcage",
@@ -859,6 +859,14 @@
"backgroundFancyBedroomText": "Fancy Bedroom",
"backgroundFancyBedroomNotes": "Luxuriate in a Fancy Bedroom.",
"backgrounds032023": "SET 106: Released March 2023",
"backgroundOldTimeyBasketballCourtText": "Old Timey Basketball Court",
"backgroundOldTimeyBasketballCourtNotes": "Shoot hoops on an Old Timey BasketBall Court.",
"backgroundJungleWateringHoleText": "Jungle Watering Hole",
"backgroundJungleWateringHoleNotes": "Stop for a sip at a Jungle Watering Hole.",
"backgroundMangroveForestText": "Mangrove Forest",
"backgroundMangroveForestNotes": "Explore the edge of the Mangrove Forest.",
"timeTravelBackgrounds": "Steampunk Backgrounds",
"backgroundAirshipText": "Airship",
"backgroundAirshipNotes": "Become a sky sailor on board your very own Airship.",
@@ -5,53 +5,55 @@
"commGuideHeadingWelcome": "Welcome to Habitica!",
"commGuidePara001": "Greetings, adventurer! Welcome to Habitica, the land of productivity, healthy living, and the occasional rampaging gryphon. We have a cheerful community full of helpful people supporting each other on their way to self-improvement. To fit in, all it takes is a positive attitude, a respectful manner, and the understanding that everyone has different skills and limitations -- including you! Habiticans are patient with one another and try to help whenever they can.",
"commGuidePara002": "To help keep everyone safe, happy, and productive in the community, we do have some guidelines. We have carefully crafted them to make them as friendly and easy-to-read as possible. Please take the time to read them before you start chatting.",
"commGuidePara003": "These rules apply to all of the social spaces we use, including (but not necessarily limited to) Trello, GitHub, Weblate, and the Habitica Wiki on Fandom. As communities grow and change, their rules may adapt from time to time. When there are substantive changes to these Guidelines, you'll hear about it in a Bailey announcement and/or our social media!",
"commGuidePara003": "These rules apply to all of the social spaces we use, including (but not necessarily limited to) Trello, GitHub, Weblate, and the Habitica Wiki on Fandom. As communities grow and change, their rules may adapt from time to time. When there are substantive changes to the community rules listed here, you'll hear about it in a Bailey announcement and/or our social media!",
"commGuideHeadingInteractions": "Interactions in Habitica",
"commGuidePara015": "Habitica has two kinds of social spaces: public, and private. Public spaces include the Tavern, Public Guilds, GitHub, Trello, and the Wiki. Private spaces are Private Guilds, Party chat, and Private Messages. All Display Names and @usernames must comply with the public space guidelines. To change your Display Name and/or @username, on mobile go to Menu > Settings > Profile. On web, go to User > Settings.",
"commGuidePara016": "When navigating the public spaces in Habitica, there are some general rules to keep everyone safe and happy.",
"commGuidePara017": "Here's the quick version, but we encourage you to read in more detail below:",
"commGuideList01F": "Please flag posts that break our Community Guidelines or TOS.",
"commGuideList01A": "Terms & Conditions apply across all spaces, including private guilds, party chat, and messages.",
"commGuideList01B": "Prohibited: Any communication that is violent, threatening, promoting of discrimination etc. including memes, images, and jokes.",
"commGuideList01C": "All discussions must be appropriate for all ages and be free of profanity.",
"commGuideList01D": "Please comply with mod requests.",
"commGuideList01E": "Do not instigate or engage in contentious conversation in the Tavern.",
"commGuideList01D": "Please comply with staff requests.",
"commGuideList01E": "<strong>Do not instigate or engage in contentious conversation in the Tavern.</strong>",
"commGuideList01F": "No begging for paid items, spamming, or large header text/all caps.",
"commGuideList02N": "<strong>Flag and report posts that break these Guidelines or the Terms of Service.</strong> We will handle them as quickly as possible. You may also notify staff via <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> but flags are the fastest way to get help.",
"commGuideList02A": "<strong>Respect each other</strong>. Be courteous, kind, friendly, and helpful. Remember: Habiticans come from all backgrounds and have had wildly divergent experiences. This is part of what makes Habitica so cool! Building a community means respecting and celebrating our differences as well as our similarities.",
"commGuideList02B": "<strong>Obey all of the <a href='/static/terms' target='_blank'>Terms and Conditions</a></strong> in both public and private spaces.",
"commGuideList02G": "<strong>Comply immediately with any Mod request.</strong> This could include, but is not limited to, requesting you limit your posts in a particular space, editing your profile to remove unsuitable content, asking you to move your discussion to a more suitable space, etc. Do not argue with moderators. If you have concerns or comments about moderation, email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> to contact our community manager.",
"commGuideList02B": "<strong>Obey all of the <a href='https://habitica.com/static/terms' target='_blank'>Terms and Conditions</a></strong> in both public and private spaces.",
"commGuideList02G": "<strong>Comply immediately with any Staff request.</strong> This could include, but is not limited to, requesting you limit your posts in a particular space, editing your profile to remove unsuitable content, asking you to move your discussion to a more suitable space, etc. Do not argue with staff. If you have concerns or comments about staff actions, email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> to contact our community manager.",
"commGuideList02C": "<strong>Do not post images or text that are violent, threatening, or sexually explicit/suggestive, or that promote discrimination, bigotry, racism, sexism, hatred, harassment or harm against any individual or group</strong>. Not even as a joke or meme. This includes slurs as well as statements. Not everyone has the same sense of humor, and so something that you consider a joke may be hurtful to another.",
"commGuideList02D": "<strong>Keep discussions appropriate for all ages</strong>. This means avoiding adult topics in public spaces. We have many young Habiticans who use the site, and people come from all walks of life. We want our community to be as comfortable and inclusive as possible.",
"commGuideList02E": "<strong>Avoid profanity. This includes milder, religious-based oaths that may be acceptable elsewhere and abbreviated or obscured profanity.</strong> We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a moderator or staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final.</strong> Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic. If someone mentions something that is allowed by the guidelines but which is hurtful to you, it's okay to politely let them know that. If someone tells you you've made them uncomfortable, take time to reflect instead of responding in anger. But if you feel that a conversation is getting heated, overly emotional, or hurtful, <strong>cease to engage. Instead, report the posts to let us know about it.</strong> Moderators will respond as quickly as possible. You may also email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and include screenshots if they may be helpful.",
"commGuideList02E": "<strong>Avoid profanity. This includes abbreviated or obscured profanity.</strong> We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final.</strong> Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic. If someone mentions something that is allowed by the guidelines but which is hurtful to you, it's okay to politely let them know that. If someone tells you you've made them uncomfortable, take time to reflect instead of responding in anger. But if you feel that a conversation is getting heated, overly emotional, or hurtful, <strong>cease to engage. Instead, report the posts to let us know about it. </strong>Staff will respond as quickly as possible. You may also email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and include screenshots if they may be helpful.",
"commGuideList02M": "Do not ask or beg for gems, subscriptions or membership in Group Plans. This is not allowed in the Tavern, public or private chat spaces, or in PMs. If you receive messages asking for paid items, please report them by flagging. Repeated or severe gem or subscription begging, especially after a warning, may result in an account ban.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, <strong>posting links without explanation or context</strong>, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam. Mods may decide what constitutes spam at their discretion.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, <strong>posting links without explanation or context</strong>, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam. Staff may decide what constitutes spam at their discretion.",
"commGuideList02K": "<strong>Avoid posting large header text in the public chat spaces, particularly the Tavern</strong>. Much like ALL CAPS, it reads as if you were yelling, and interferes with the comfortable atmosphere.",
"commGuideList02L": "<strong>We highly discourage the exchange of personal information -- particularly information that can be used to identify you -- in public chat spaces</strong>. Identifying information can include but is not limited to: your address, your email address, and your API token/password. This is for your safety! Staff or moderators may remove such posts at their discretion. If you are asked for personal information in a private Guild, Party, or PM, we highly recommend that you politely refuse and alert the staff and moderators by either 1) flagging the message, or 2) emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and including screenshots.",
"commGuideList02L": "<strong>We highly discourage the exchange of personal information -- particularly information that can be used to identify you -- in public chat spaces</strong>. Identifying information can include but is not limited to: your address, your email address, and your API token/password. This is for your safety! Staff may remove such posts at their discretion. If you are asked for personal information in a private Guild, Party, or PM, we highly recommend that you politely refuse and alert the staff by either 1) flagging the message, or 2) emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> and including screenshots.",
"commGuidePara019": "<strong>In private spaces</strong>, users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting slurs or any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
"commGuidePara020": "<strong>Private Messages (PMs)</strong> have some additional guidelines. If someone has blocked you, do not contact them elsewhere to ask them to unblock you. Additionally, you should not send PMs to someone asking for support (since public answers to support questions are helpful to the community). Finally, do not send anyone PMs begging for paid content of any kind.",
"commGuidePara020A": "<strong>If you see a post or private message that you believe is in violation of the public space guidelines outlined above, or if you see a post or private message that concerns you or makes you uncomfortable, you can bring it to the attention of Moderators and Staff by clicking the flag icon to report it</strong>. A Staff member or Moderator will respond to the situation as soon as possible. Please note that intentionally reporting innocent posts is an infraction of these Guidelines (see below in \"Infractions\"). You can also contact the Mods by emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> You may want to do this if there are multiple problematic posts by the same person in different Guilds, or if the situation requires some explanation. You may contact us in your native language if that is easier for you: we may have to use Google Translate, but we want you to feel comfortable about contacting us if you have a problem.",
"commGuidePara020A": "<strong>If you see a post or private message that you believe is in violation of the public space guidelines outlined above, or if you see a post or private message that concerns you or makes you uncomfortable, you can bring it to the attention of Staff by clicking the flag icon to report it</strong>. A Staff member will respond to the situation as soon as possible. Please note that intentionally reporting innocent posts is an infraction of these Guidelines (see below in \"Infractions\"). You can also contact the Staff by emailing <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> You may want to do this if there are multiple problematic posts by the same person in different Guilds, or if the situation requires some explanation. You may contact us in your native language if that is easier for you: we may have to use Google Translate, but we want you to feel comfortable about contacting us if you have a problem.",
"commGuidePara021": "Furthermore, some public spaces in Habitica have additional guidelines.",
"commGuideHeadingTavern": "The Tavern",
"commGuidePara022": "The Tavern is the main spot for Habiticans to mingle. Daniel the Innkeeper keeps the place spic-and-span, and Lemoness will happily conjure up some lemonade while you sit and chat. Just keep in mind…",
"commGuidePara023": "<strong>Conversation tends to revolve around casual chatting and productivity or life improvement tips</strong>. Because the Tavern chat can only hold 200 messages, <strong>it isn't a good place for prolonged conversations on topics, especially sensitive ones</strong> (ex. politics, religion, depression, whether or not goblin-hunting should be banned, etc.). These conversations should be taken to an applicable Guild. A Mod may direct you to a suitable Guild, but it is ultimately your responsibility to find and post in the appropriate place.",
"commGuidePara023": "<strong>Conversation tends to revolve around casual chatting and productivity or life improvement tips</strong>. Because the Tavern chat can only hold 200 messages, <strong>it isn't a good place for prolonged conversations on topics, especially sensitive or contentious ones</strong> (ex. politics, religion, depression, whether or not goblin-hunting should be banned, etc.). These conversations should be taken to an applicable Guild. Staff may direct you to a suitable Guild, but it is ultimately your responsibility to find and post in the appropriate place.",
"commGuidePara024": "<strong>Don't discuss anything addictive in the Tavern</strong>. Many people use Habitica to try to quit their bad Habits. Hearing people talk about addictive/illegal substances may make this much harder for them! Respect your fellow Tavern-goers and take this into consideration. This includes, but is not exclusive to: smoking, alcohol, pornography, gambling, and drug use/abuse.",
"commGuideHeadingPublicGuilds": "Public Guilds",
"commGuidePara029": "<strong>Public Guilds are much like the Tavern, except that instead of being centered around general conversation, they have a focused theme</strong>. Public Guild chat should focus on this theme. For example, members of the Wordsmiths Guild might be cross if the conversation is suddenly focusing on gardening instead of writing, and a Dragon-Fanciers Guild might not have any interest in deciphering ancient runes. Some Guilds are more lax about this than others, but in general, <strong>try to stay on topic</strong>!",
"commGuidePara031": "Some public Guilds will contain sensitive topics such as depression, religion, politics, etc. This is fine as long as the conversations therein do not violate any of the Terms and Conditions or Public Space Rules, and as long as they stay on topic.",
"commGuidePara033": "<strong>Public Guilds may NOT contain 18+ content. If they plan to regularly discuss sensitive content, they should say so in the Guild description</strong>. This is to keep Habitica safe and comfortable for everyone.",
"commGuidePara035": "<strong>If the Guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to place your comment behind a warning (ex. \"Warning: references self-harm\")</strong>. These may be characterized as trigger warnings and/or content notes, and Guilds may have their own rules in addition to those given here. If possible, please use <a href='https://habitica.fandom.com/wiki/Markdown_Cheat_Sheet' target='_blank'>markdown</a> to hide the potentially sensitive content below line breaks so that those who may wish to avoid reading it can scroll past it without seeing the content. Habitica staff and moderators may still remove this material at their discretion.",
"commGuidePara035": "<strong>If the Guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to include a warning (ex. \"Warning: references self-harm\")</strong>. These may be characterized as trigger warnings and/or content notes, and Guilds may have their own rules in addition to those given here. Habitica staff may still remove this material at their discretion.",
"commGuidePara036": "Additionally, the sensitive material should be topical -- bringing up self-harm in a Guild focused on fighting depression may make sense, but is probably less appropriate in a music Guild. If you see someone who is repeatedly violating this guideline, especially after several requests, please report the posts.",
"commGuidePara037": "<strong>No Guilds, Public or Private, should be created for the purpose of attacking any group or individual</strong>. Creating such a Guild is grounds for an instant ban. Fight bad habits, not your fellow adventurers!",
"commGuidePara038": "<strong>All Tavern Challenges and Public Guild Challenges must comply with these rules as well</strong>.",
"commGuideHeadingInfractionsEtc": "Infractions, Consequences, and Restoration",
"commGuideHeadingInfractions": "Infractions",
"commGuidePara050": "Overwhelmingly, Habiticans assist each other, are respectful, and work to make the whole community fun and friendly. However, once in a blue moon, something that a Habitican does may violate one of the above guidelines. When this happens, the Mods will take whatever actions they deem necessary to keep Habitica safe and comfortable for everyone.",
"commGuidePara051": "<strong>There are a variety of infractions, and they are dealt with depending on their severity</strong>. These are not comprehensive lists, and the Mods can make decisions on topics not covered here at their own discretion. The Mods will take context into account when evaluating infractions.",
"commGuidePara050": "Overwhelmingly, Habiticans assist each other, are respectful, and work to make the whole community fun and friendly. However, once in a blue moon, something that a Habitican does may violate one of the above guidelines. When this happens, the Staff will take whatever actions they deem necessary to keep Habitica safe and comfortable for everyone.",
"commGuidePara051": "<strong>There are a variety of infractions, and they are dealt with depending on their severity</strong>. These are not comprehensive lists, and the Staff can make decisions on topics not covered here at their own discretion. The Staff will take context into account when evaluating infractions.",
"commGuideHeadingSevereInfractions": "Severe Infractions",
"commGuidePara052": "Severe infractions greatly harm the safety of Habitica's community and users, and therefore have severe consequences as a result.",
@@ -59,16 +61,16 @@
"commGuideList05A": "Violation of Terms and Conditions",
"commGuideList05B": "Hate Speech/Images, Harassment/Stalking, Cyber-Bullying, Flaming, and Trolling",
"commGuideList05C": "Violation of Probation",
"commGuideList05D": "Impersonation of Staff or Moderators - this includes claiming user-created spaces not affiliated with Habitica are official and/or moderated by Habitica or its Mods/staff",
"commGuideList05D": "Impersonation of Staff - this includes claiming user-created spaces not affiliated with Habitica are official and/or moderated by Habitica or its Staff",
"commGuideList05E": "Repeated Moderate Infractions",
"commGuideList05F": "Creation of a duplicate account to avoid consequences (for example, making a new account to chat after having chat privileges revoked)",
"commGuideList05G": "Intentional deception of Staff or Moderators in order to avoid consequences or to get another user in trouble",
"commGuideList05G": "Intentional deception of Staff in order to avoid consequences or to get another user in trouble",
"commGuideList05H": "Severe or repeated attempts to defraud or pressure other players for real-money items",
"commGuideHeadingModerateInfractions": "Moderate Infractions",
"commGuidePara054": "Moderate infractions do not make our community unsafe, but they do make it unpleasant. These infractions will have moderate consequences. When in conjunction with multiple infractions, the consequences may grow more severe.",
"commGuidePara055": "The following are some examples of Moderate Infractions. This is not a comprehensive list.",
"commGuideList06A": "Ignoring, disrespecting or arguing with a Mod. This includes publicly complaining about moderators or other users, publicly glorifying or defending banned users, or debating whether or not a moderator action was appropriate. If you are concerned about one of the rules or the behaviour of the Mods, please contact the staff via email (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06A": "<strong>Ignoring, disrespecting or arguing with Staff.</strong> This includes publicly complaining about staff or other users, publicly glorifying or defending banned users, or debating whether or not a staff action was appropriate. If you are concerned about one of the rules or the behavior of the Staff, please contact us via email (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06B": "Backseat Modding. To quickly clarify a relevant point: A friendly mention of the rules is fine. Backseat modding consists of telling, demanding, and/or strongly implying that someone must take an action that you describe to correct a mistake. You can alert someone to the fact that they have committed a transgression, but please do not demand an action -- for example, saying, \"Just so you know, profanity is discouraged in the Tavern, so you may want to delete that,\" would be better than saying, \"I'm going to have to ask you to delete that post.\"",
"commGuideList06C": "Intentionally flagging innocent posts.",
"commGuideList06D": "Repeatedly Violating Public Space Guidelines",
@@ -78,14 +80,14 @@
"commGuidePara056": "Minor Infractions, while discouraged, still have minor consequences. If they continue to occur, they can lead to more severe consequences over time.",
"commGuidePara057": "The following are some examples of Minor Infractions. This is not a comprehensive list.",
"commGuideList07A": "First-time violation of Public Space Guidelines",
"commGuideList07B": "Any statements or actions that trigger a \"Please Don't\" from a Mod. When you are asked not to do something publicly, this in itself can be a consequence. If Mods have to issue many of these corrections to the same person, it may count as a larger infraction",
"commGuideList07B": "Any statements or actions that trigger a \"Please Don't\" from a Staff member. When you are asked not to do something publicly, this in itself can be a consequence. If Staff have to issue many of these corrections to the same person, it may count as a larger infraction",
"commGuidePara057A": "Some posts may be hidden because they contain sensitive information or might give people the wrong idea. Typically this does not count as an infraction, particularly not the first time it happens!",
"commGuideHeadingConsequences": "Consequences",
"commGuidePara058": "In Habitica -- as in real life -- every action has a consequence, whether it is getting fit because you've been running, getting cavities because you've been eating too much sugar, or passing a class because you've been studying.",
"commGuidePara059": "<strong>Similarly, all infractions have direct consequences.</strong> Some sample consequences are outlined below.",
"commGuidePara060": "<strong>If your infraction has a moderate or severe consequence, there will be a post from a staff member or moderator in the forum in which the infraction occurred explaining</strong>:",
"commGuidePara060": "<strong>If your infraction has a moderate or severe consequence, if appropriate for the circumstances, there will be a post from a staff member in the forum in which the infraction occurred explaining</strong>:",
"commGuideList08A": "what your infraction was",
"commGuideList08B": "what the consequence is",
"commGuideList08C": "what to do to correct the situation and restore your status, if possible.",
@@ -97,35 +99,29 @@
"commGuideList09D": "Removal or demotion of Contributor Tiers",
"commGuideHeadingModerateConsequences": "Examples of Moderate Consequences",
"commGuideList10A": "Restricted public and/or private chat privileges",
"commGuideList10A1": "If your actions result in revocation of your chat privileges, a Moderator or Staff member will PM you and/or post in the forum in which you were muted to notify you of the reason for your muting and the length of time for which you will be muted and/or the action required for reinstatement. You will be reinstated if you comply politely with the actions required and agree to abide by the Community Guidelines and ToS",
"commGuideList10C": "Restricted Guild/Challenge creation privileges",
"commGuideList10A1": "If your actions result in revocation of your chat privileges, you must email <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. You may be reinstated at staff discretion if you comply politely with the actions required and agree to abide by the Community Guidelines and ToS",
"commGuideList10D": "Temporarily disabling (\"freezing\") progression through Contributor Tiers",
"commGuideList10F": "Putting users on \"Probation\"",
"commGuideHeadingMinorConsequences": "Examples of Minor Consequences",
"commGuideList11A": "Reminders of Public Space Guidelines",
"commGuideList11B": "Warnings",
"commGuideList11C": "Requests",
"commGuideList11D": "Deletions (Mods/Staff may delete problematic content)",
"commGuideList11E": "Edits (Mods/Staff may edit problematic content)",
"commGuideList11D": "Deletions (Staff may delete problematic content)",
"commGuideList11E": "Edits (Staff may edit problematic content)",
"commGuideHeadingRestoration": "Restoration",
"commGuidePara061": "Habitica is a land devoted to self-improvement, and we believe in second chances. <strong>If you commit an infraction and receive a consequence, view it as a chance to evaluate your actions and strive to be a better member of the community</strong>.",
"commGuidePara062": "The announcement, message, and/or email that you receive explaining the consequences of your actions is a good source of information. Cooperate with any restrictions which have been imposed, and endeavor to meet the requirements to have any penalties lifted.",
"commGuidePara063": "If you do not understand your consequences, or the nature of your infraction, ask the Staff/Moderators for help so you can avoid committing infractions in the future. If you feel a particular decision was unfair, you can contact the staff to discuss it at <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>.",
"commGuidePara063": "If you do not understand your consequences, or the nature of your infraction, ask the Staff for help so you can avoid committing infractions in the future. If you feel a particular decision was unfair, you can contact the staff to discuss it at <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>.",
"commGuideHeadingMeet": "Meet the Staff and Mods!",
"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": "Staff have purple tags marked with crowns. Their title is \"Heroic\".",
"commGuidePara008": "Mods have dark blue tags marked with stars. Their title is \"Guardian\".",
"commGuideHeadingMeet": "Meet the Staff",
"commGuidePara007": "The Habitica Staff keep the app and sites running and can act as chat moderators. They have purple tags marked with crowns. Their title is \"Heroic\".",
"commGuidePara009": "The current Staff Members are (from left to right):",
"commGuideAKA": "<%= habitName %> aka <%= realName %>",
"commGuideOnGitHub": "<%= gitHubName %> on GitHub",
"commGuidePara010": "There are also several Moderators who assist the staff members. They were selected carefully, so please give them your respect and listen to their suggestions.",
"commGuidePara011": "The current Moderators are (from left to right):",
"commGuidePara011b": "on GitHub/Fandom",
"commGuidePara011c": "on the Wiki",
"commGuidePara011d": "on GitHub",
"commGuidePara012": "If you have an issue or concern about a particular Mod, please send an email to our Staff (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuidePara013": "In a community as big as Habitica, users come and go, and sometimes a staff member or moderator needs to lay down their noble mantle and relax. The following are Staff and Moderators Emeritus. They no longer act with the power of a Staff member or Moderator, but we would still like to honor their work!",
"commGuidePara014": "Staff and Moderators Emeritus:",
+1
View File
@@ -310,6 +310,7 @@
"hatchingPotionOnyx": "Onyx",
"hatchingPotionVirtualPet": "Virtual Pet",
"hatchingPotionPorcelain": "Porcelain",
"hatchingPotionPinkMarble": "Pink Marble",
"hatchingPotionNotes": "Pour this on an egg, and it will hatch as a <%= potText(locale) %> pet.",
"premiumPotionAddlNotes": "Not usable on quest pet eggs. Available for purchase until <%= date(locale) %>.",
+2 -1
View File
@@ -179,5 +179,6 @@
"signup": "Sign Up",
"getStarted": "Get Started!",
"mobileApps": "Mobile Apps",
"learnMore": "Learn More"
"learnMore": "Learn More",
"translateHabitica": "Translate Habitica"
}
+41 -1
View File
@@ -460,7 +460,7 @@
"weaponSpecialFall2022HealerNotes": "To claim victory, hold it forth and utter the words of command: 'Eye One!' Increases Intelligence by <%= int %>. Limited Edition 2022 Fall Gear.",
"weaponSpecialWinter2023RogueText": "Green Satin Sash",
"weaponSpecialWinter2023RogueNotes": "Legends tell of Rogues who snare their opponents' weapons, disarm them, then gift the item back just to be cute. Incrases Strength by <%= str %>. Limited Edition 2022-2023 Winter Gear.",
"weaponSpecialWinter2023RogueNotes": "Legends tell of Rogues who snare their opponents' weapons, disarm them, then gift the item back just to be cute. Increases Strength by <%= str %>. Limited Edition 2022-2023 Winter Gear.",
"weaponSpecialWinter2023WarriorText": "Tusk Spear",
"weaponSpecialWinter2023WarriorNotes": "The two prongs of this spear are shaped like walrus tusks but are twice as powerful. Jab at doubts and at silly poems until they back off! Increases Strength by <%= str %>. Limited Edition 2022-2023 Winter Gear.",
"weaponSpecialWinter2023MageText": "Foxfire",
@@ -468,6 +468,15 @@
"weaponSpecialWinter2023HealerText": "Throwing Wreath",
"weaponSpecialWinter2023HealerNotes": "Watch this festive, prickly wreath spin through the air toward your enemy or obstacles and return to you like a boomerang for another throw. Increases Intelligence by <%= int %>. Limited Edition 2022-2023 Winter Gear.",
"weaponSpecialSpring2023RogueText": "Nibbled Leaf",
"weaponSpecialSpring2023RogueNotes": "Slash! Swat! Snack! Get strong and ready for your coming metamorphosis. Increases Strength by <%= str %>. Limited Edition 2023 Spring Gear.",
"weaponSpecialSpring2023WarriorText": "Hummingbird Foil",
"weaponSpecialSpring2023WarriorNotes": "En garde! Fend off foes from your flowers with this foil! Increases Strength by <%= str %>. Limited Edition 2023 Spring Gear.",
"weaponSpecialSpring2023MageText": "Moonstone Magic",
"weaponSpecialSpring2023MageNotes": "The greater their glow, the more potent is their power. Increases Intelligence by <%= int %>. Limited Edition 2023 Spring Gear.",
"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.",
"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",
@@ -1131,6 +1140,15 @@
"armorSpecialWinter2023HealerText": "Cardinal Suit",
"armorSpecialWinter2023HealerNotes": "This bright cardinal suit is perfect for flying high above your problems. Increases Constitution by <%= con %>. Limited Edition 2022-2023 Winter Gear.",
"armorSpecialSpring2023RogueText": "Caterpillar Cape",
"armorSpecialSpring2023RogueNotes": "You may only have four limbs to work with, but you can climb and crawl with the greatest of grubs. Increases Perception by <%= per %>. Limited Edition 2023 Spring Gear.",
"armorSpecialSpring2023WarriorText": "Hummingbird Armor",
"armorSpecialSpring2023WarriorNotes": "That humming sound you hear is your wings beating faster than you can imagine. Increases Constitution by <%= con %>. Limited Edition 2023 Spring Gear.",
"armorSpecialSpring2023MageText": "Moonstone Suit",
"armorSpecialSpring2023MageNotes": "This snazzy spring suit magnifies moonstone magic. Increases Intelligence by <%= int %>. Limited Edition 2023 Spring Gear.",
"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.",
"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",
@@ -1430,6 +1448,8 @@
"armorArmoireShawlCollarCoatNotes": "A wise wizard once said theres nothing better than being both cozy and productive! Wear this warm and stylish coat as you conquer the years challenges. Increases Constitution by <%= con %>. Enchanted Armoire: Independent Item.",
"armorArmoireTeaGownText": "Tea Party Gown",
"armorArmoireTeaGownNotes": "Youre resilient, creative, brilliant, and so fashionable! Increases Strength and Intelligence by <%= attrs %> each. Enchanted Armoire: Tea Party Set (Item 1 of 3).",
"armorArmoireBasketballUniformText": "Basketball Uniform",
"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).",
"headgear": "helm",
"headgearCapitalized": "Headgear",
@@ -1871,6 +1891,15 @@
"headSpecialWinter2023HealerText": "Cardinal Helm",
"headSpecialWinter2023HealerNotes": "This cardinal helm is perfect for whistling and singing to herald the winter season. Increases Intelligence by <%= int %>. Limited Edition 2022-2023 Winter Gear.",
"headSpecialSpring2023RogueText": "Caterpillar Cowl",
"headSpecialSpring2023RogueNotes": "Be sure to tuck in those tempting antennae when birds are hunting overhead! Increases Perception by <%= per %>. Limited Edition 2023 Spring Gear.",
"headSpecialSpring2023WarriorText": "Hummingbird Helmet",
"headSpecialSpring2023WarriorNotes": "Cover your visage in iridescent feathers when you fly into battle. Increases Strength by <%= str %>. Limited Edition 2023 Spring Gear.",
"headSpecialSpring2023MageText": "Moonstone Visor",
"headSpecialSpring2023MageNotes": "Youll want to wear these glasses at night so you can see clearly by the light of the moon. Increases Perception by <%= per %>. Limited Edition 2023 Spring Gear.",
"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.",
"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.",
@@ -2016,6 +2045,8 @@
"headMystery202211Notes": "Be careful with this powerful hat, its effect on admirers can be quite shocking! Confers no benefit. November 2022 Subscriber Item.",
"headMystery202301Text": "Valiant Vulpine Ears",
"headMystery202301Notes": "Your hearing will be so sharp you'll hear the dawn breaking and the dew sparkling. Confers no benefit. January 2023 Subscriber Item.",
"headMystery202303Text": "Mane Character Hair",
"headMystery202303Notes": "What better way to let everyone know youre the star of this tale than to have blue and improbably spiky hair? Confers no benefit. March 2023 Subscriber Item.",
"headMystery301404Text": "Fancy Top Hat",
"headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.",
"headMystery301405Text": "Basic Top Hat",
@@ -2440,6 +2471,11 @@
"shieldSpecialWinter2023HealerText": "Cool Jams",
"shieldSpecialWinter2023HealerNotes": "Your song of frost and snow will soothe the spirits of all who hear. Increases Constitution by <%= con %>. Limited Edition 2022-2023 Winter Gear.",
"shieldSpecialSpring2023WarriorText": "Flower Bunch",
"shieldSpecialSpring2023WarriorNotes": "Collect the springs best flowers into this brightly colored floral bunch. Increases Constitution by <%= con %>. Limited Edition 2023 Spring Gear.",
"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.",
"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",
@@ -2601,6 +2637,8 @@
"shieldArmoireJewelersPliersNotes": "They cut, twist, pinch, and more. This tool can help you create whatever you can imagine. Increases Strength by <%= str %>. Enchanted Armoire: Jeweler Set (Item 3 of 4).",
"shieldArmoireTeaKettleText": "Tea Kettle",
"shieldArmoireTeaKettleNotes": "All your favorite, flavorful teas can be brewed in this kettle. Are you in the mood for black tea, green tea, oolong, or perhaps an herbal infusion? Increases Constitution by <%= con %>. Enchanted Armoire: Tea Party Set (Item 3 of 3).",
"shieldArmoireBasketballText": "Basketball",
"shieldArmoireBasketballNotes": "Swish! Whenever you shoot this magic basketball, there will be nothing but net. Increases Constitution and Strength by <%= attrs %> each. Enchanted Armoire: Old Timey Basketball Set (Item 2 of 2).",
"back": "Back Accessory",
"backBase0Text": "No Back Accessory",
@@ -2970,6 +3008,8 @@
"eyewearMystery202204BNotes": "What's your mood today? Express yourself with these fun screens. Confers no benefit. April 2022 Subscriber Item.",
"eyewearMystery202208Text": "Sparkly Eyes",
"eyewearMystery202208Notes": "Lull your enemies into a false sense of security with these terrifyingly cute peepers. Confers no benefit. August 2022 Subscriber Item.",
"eyewearMystery202303Text": "Dreamy Eyes",
"eyewearMystery202303Notes": "Let your nonchalant expression lure your enemies into a false sense of security. Confers no benefit. March 2023 Subscriber Item.",
"eyewearMystery301404Text": "Eyewear Goggles",
"eyewearMystery301404Notes": "No eyewear could be fancier than a pair of goggles - except, perhaps, for a monocle. Confers no benefit. April 3015 Subscriber Item.",
"eyewearMystery301405Text": "Monocle",
+2 -1
View File
@@ -25,6 +25,7 @@
"invite": "Invite",
"leave": "Leave",
"invitedToParty": "You were invited to join the Party <span class=\"notification-bold\"><%- party %></span>",
"invitedToPartyBy": "<a href=\"/profile/<%- userId %>\" target=\"_blank\">@<%- userName %></a> has invited you to join the Party <span class=\"notification-bold\"><%- party %></span>",
"invitedToPrivateGuild": "You were invited to join the private Guild <span class=\"notification-bold\"><%- guild %></span>",
"invitedToPublicGuild": "You were invited to join the Guild <span class=\"notification-bold-blue\"><%- guild %></span>",
"invitationAcceptedHeader": "Your Invitation has been Accepted",
@@ -334,7 +335,7 @@
"teamBasedTasksList": "Team-Based Task List",
"teamBasedTasksListDesc": "Set up an easily-viewed shared task list for the group. Assign tasks to your fellow group members, or let them claim their own tasks to make it clear what everyone is working on!",
"groupManagementControls": "Group Management Controls",
"groupManagementControlsDesc": "Use task approvals to verify that a task that was really completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.",
"groupManagementControlsDesc": "View task status to verify that a task that was completed, add Group Managers to share responsibilities, and enjoy a private group chat for all team members.",
"inGameBenefits": "In-Game Benefits",
"inGameBenefitsDesc": "Group members get an exclusive Jackalope Mount, as well as full subscription benefits, including special monthly equipment sets and the ability to buy gems with gold.",
"inspireYourParty": "Inspire your party, gamify life together.",
+5 -1
View File
@@ -194,7 +194,11 @@
"winter2023WalrusWarriorSet": "Walrus (Warrior)",
"winter2023FairyLightsMageSet": "Fairy Lights (Mage)",
"winter2023CardinalHealerSet": "Cardinal (Healer)",
"winter2023RibbonRogueSet": "Ribbon (Rogue)",
"winter2023RibbonRogueSet": "Ribbon (Rogue)",
"spring2023CaterpillarRogueSet": "Caterpillar (Rogue)",
"spring2023HummingbirdWarriorSet": "Hummingbird (Warrior)",
"spring2023MoonstoneMageSet": "Moonstone (Mage)",
"spring2023LilyHealerSet": "Lily (Healer)",
"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",
+11 -1
View File
@@ -877,5 +877,15 @@
"questVirtualPetRageDescription": "This bar fills when you don't complete your Dailies. When it is full, the Wotchimon will take away some of your party's pending damage!",
"questVirtualPetRageEffect": "`Wotchimon uses Bothersome Beep!` Wotchimon sounds a bothersome beep, and its happiness bar suddenly disappears! Pending damage reduced.",
"questVirtualPetDropVirtualPetPotion": "Virtual Pet Hatching Potion",
"questVirtualPetUnlockText": "Unlocks Virtual Pet Hatching Potion for purchase in the Market"
"questVirtualPetUnlockText": "Unlocks Virtual Pet Hatching Potion for purchase in the Market",
"questPinkMarbleText": "Calm the Corrupted Cupid",
"questPinkMarbleNotes": "After hearing rumors about a cave in the Meandering Mountains that has pink rocks and dust shooting out of it, your party starts to investigate. As you approach the cave, there is indeed a huge pink dust cloud and strangely, you hear a tiny voice's battle cry, followed by the sound of shattering rock.<br><br>@Empress42 accidentally inhales some of the dust and suddenly feels dreamy and less productive. “Same here!” says @QuartzFox, “I'm suddenly fantasizing about a person that I barely know!”<br><br>@a_diamond peeks into the cave and finds a little being zipping around and smashing pink marbled rock to dust. “Take cover! This Cupid has been corrupted and is using his magic to cause limerence and unrealistic infatuations! We have to subdue him!”",
"questPinkMarbleCompletion": "You manage to pin the little guy down at last he was much tougher and faster than expected. Before he stirs again, you take away his quiver of glowing arrows. He blinks and suddenly looks around in surprise. “To escape my own sorrow and heartbreak for a while I pricked myself with one of my arrows… I don't remember anything after that!”<br><br>He is just about to flee the cave, notices that @Loremi has taken a sample of the marble dust and grins. “Try using some of this pink marble dust in a potion! Nurture the pets that hatch from it and you will find that real relationships are born from communication, mutual trust and care. I wish you luck, and I wish you love!”",
"questPinkMarbleBoss": "Cupido",
"questPinkMarbleRageTitle": "Pink Punch",
"questPinkMarbleRageDescription": "This bar fills when you don't complete your Dailies. When it is full, Cupido will take away some of your party's pending damage!",
"questPinkMarbleRageEffect": "`Cupido uses Pink Punch!` That wasn't affectionate at all! Your partymates are taken aback. Pending damage reduced.",
"questPinkMarbleDropPinkMarblePotion": "Pink Marble Hatching Potion",
"QuestPinkMarbleUnlockText": "Unlocks Pink Marble Hatching Potions for purchase in the Market."
}
@@ -147,6 +147,7 @@
"mysterySet202212": "Glacial Guardian Set",
"mysterySet202301": "Valiant Vulpine Set",
"mysterySet202302": "Trickster Tabby Set",
"mysterySet202303": "Mane Character Set",
"mysterySet301404": "Steampunk Standard Set",
"mysterySet301405": "Steampunk Accessories Set",
"mysterySet301703": "Peacock Steampunk Set",
+7 -1
View File
@@ -138,5 +138,11 @@
"achievementReptacularRumble": "Rumble reptacular",
"achievementWoodlandWizard": "Mago del bosque",
"achievementWoodlandWizardModalText": "¡Has recogido todas las mascotas del bosque!",
"achievementWoodlandWizardText": "Ha incubado todos los colores estándar de las criaturas del bosque: Tejón, Oso, Ciervo, Zorro, Rana, Erizo, Búho, Caracol, Ardilla y Treeling!"
"achievementWoodlandWizardText": "Ha incubado todos los colores estándar de las criaturas del bosque: Tejón, Oso, Ciervo, Zorro, Rana, Erizo, Búho, Caracol, Ardilla y Treeling!",
"achievementBoneToPick": "Hueso para recoger",
"achievementBoneToPickText": "¡Ha eclosionado todas las mascotas Clásicas y de Misión Esqueléticas!",
"achievementPolarPro": "Experto Polar",
"achievementPolarProModalText": "¡Has coleccionado todas las mascotas Polares!",
"achievementBoneToPickModalText": "¡Has coleccionado todas las mascotas clásicas y de misiones esqueléticas!",
"achievementPolarProText": "¡Ha eclosionado todos los colores estándar para mascotas Polares: Osos, Zorros, Pinguinos, Ballenas y Lobos!"
}
+44 -6
View File
@@ -7,8 +7,8 @@
"backgrounds062014": "1.ª serie: publicada en junio de 2014",
"backgroundBeachText": "Playa",
"backgroundBeachNotes": "Relájate en una cálida playa.",
"backgroundFairyRingText": "Anillo de hada",
"backgroundFairyRingNotes": "Baila en un anillo de hada.",
"backgroundFairyRingText": "Anillo de hadas",
"backgroundFairyRingNotes": "Baila en un anillo de hadas.",
"backgroundForestText": "Bosque",
"backgroundForestNotes": "Pasea por un bosque estival.",
"backgrounds072014": "2.ª serie: publicada en julio de 2014",
@@ -17,7 +17,7 @@
"backgroundOpenWatersText": "Aguas abiertas",
"backgroundOpenWatersNotes": "Disfruta de las aguas abiertas.",
"backgroundSeafarerShipText": "Bajel de marineros",
"backgroundSeafarerShipNotes": "Navega a bordo de un barco de marineros.",
"backgroundSeafarerShipNotes": "Navega a bordo de un barco marinero.",
"backgrounds082014": "3.ª serie: publicada en agosto de 2014",
"backgroundCloudsText": "Nubes",
"backgroundCloudsNotes": "Planea entre las nubes.",
@@ -27,7 +27,7 @@
"backgroundVolcanoNotes": "Entra en calor dentro de un volcán.",
"backgrounds092014": "4.ª serie: publicada en septiembre de 2014",
"backgroundThunderstormText": "Tormenta eléctrica",
"backgroundThunderstormNotes": "Dirige un rayo en la tormenta eléctrica.",
"backgroundThunderstormNotes": "Conduce rayos en la tormenta eléctrica.",
"backgroundAutumnForestText": "Bosque otoñal",
"backgroundAutumnForestNotes": "Pasea por un bosque otoñal.",
"backgroundHarvestFieldsText": "Campos de cultivo",
@@ -689,7 +689,7 @@
"backgroundFloweringPrairieText": "Pradera floreciente",
"backgroundSpringtimeLakeText": "Lago de Primavera",
"backgroundSpringtimeLakeNotes": "Disfruta las vistas a orillas de un Lago de Primavera.",
"hideLockedBackgrounds": "Esconde fondos cerrados",
"hideLockedBackgrounds": "Ocultar fondos bloqueados",
"backgroundBioluminescentWavesText": "Olas Bioluminiscentes",
"backgroundBioluminescentWavesNotes": "Admira el resplandor de Olas Bioluminiscentes.",
"backgroundUnderwaterCaveNotes": "Explora una Cueva Subacuática.",
@@ -724,5 +724,43 @@
"backgroundAutumnPicnicText": "Picnic otoñal",
"backgroundAutumnPicnicNotes": "Disfruta un picnic otoñal.",
"backgroundOldPhotoText": "Foto antigua",
"backgroundOldPhotoNotes": "Posa en una foto antigua."
"backgroundOldPhotoNotes": "Posa en una foto antigua.",
"backgrounds022023": "105ª serie: publicada en febrero del 2023",
"backgroundInFrontOfFountainText": "Frente a una fuente",
"backgroundInFrontOfFountainNotes": "Pasea frente a una fuente.",
"backgroundGoldenBirdcageText": "Jaula de pájaros dorada",
"backgroundFancyBedroomText": "Dormitorio elegante",
"backgroundFancyBedroomNotes": "Deléitate con un dormitorio elegante.",
"backgroundGoldenBirdcageNotes": "Escóndete en una jaula de pájaros dorada.",
"backgrounds012023": "104ª serie: publicada en enero del 2023",
"backgroundRimeIceText": "Hielo escarchado",
"backgroundRimeIceNotes": "Admira el brillante hielo escarchado.",
"backgroundSnowyTempleText": "Templo nevado",
"backgroundSnowyTempleNotes": "Contempla un sereno templo nevado.",
"backgroundWinterLakeWithSwansText": "Lago invernal con cisnes",
"backgroundWinterLakeWithSwansNotes": "Disfruta de la naturaleza en un lago invernal con cisnes.",
"eventBackgrounds": "Fondos de Evento",
"backgroundBirthdayBashText": "Fiesta de cumpleaños",
"backgroundBirthdayBashNotes": "Habitica está celebrando una fiesta de cumpleaños, ¡y todos están invitados!",
"backgroundMistyAutumnForestText": "Bosque otoñal brumoso",
"backgroundMistyAutumnForestNotes": "Camina a través de un brumoso bosque otoñal.",
"backgroundAutumnBridgeText": "Puente en otoño",
"backgroundAutumnBridgeNotes": "Admira la belleza de un puente en otoño.",
"backgrounds102022": "101ª serie: publicada en octubre de 2022",
"backgroundSpookyRuinsText": "Ruinas espeluznantes",
"backgroundMaskMakersWorkshopNotes": "Prueba una nueva cara en el taller del fabricante de máscaras.",
"backgroundMaskMakersWorkshopText": "Taller del fabricante de máscaras",
"backgroundCemeteryGateText": "Puerta del cementerio",
"backgroundCemeteryGateNotes": "Ronda la puerta del cementerio.",
"backgrounds122022": "103ª serie: publicada en diciembre del 2022",
"backgroundBranchesOfAHolidayTreeText": "Ramas de un árbol navideño",
"backgroundBranchesOfAHolidayTreeNotes": "Retoza en las ramas de un árbol navideño.",
"backgroundInsideACrystalText": "Dentro de un cristal",
"backgroundInsideACrystalNotes": "Asómate desde el interior desde un cristal.",
"backgroundSnowyVillageText": "Pueblo nevado",
"backgroundSpookyRuinsNotes": "Explora unas ruinas espeluznantes.",
"backgrounds112022": "102ª serie: publicada en noviembre del 2022",
"backgroundAmongGiantMushroomsText": "Entre setas gigantes",
"backgroundAmongGiantMushroomsNotes": "Maravillate con las setas gigantes.",
"backgroundSnowyVillageNotes": "Admira un pueblo nevado."
}
@@ -1,5 +1,5 @@
{
"tavernCommunityGuidelinesPlaceholder": "Recordatorio amistoso: este es un chat para todas las edades así que, por favor, ¡mantén un lenguaje apropiado! Consulta las Guías de la Comunidad en la barra lateral si tienes alguna duda.",
"tavernCommunityGuidelinesPlaceholder": "Recordatorio: este es un chat para todas las edades, así que, por favor, ¡mantén un lenguaje apropiado! Consulta las Reglas de la Comunidad en la barra lateral si tienes alguna duda.",
"lastUpdated": "Última actualización:",
"commGuideHeadingWelcome": "¡Bienvenido a Habitica!",
"commGuidePara001": "¡Saludos, aventurero! Bienvenido a Habitica, la tierra de la productividad, vida sana y algún que otro grifo desmadrado ocasional. Tenemos una alegre comunidad llena de gente apoyándose los unos a los otros en su camino hacia la mejora personal. Para encajar, todo lo que se necesita es una actitud positiva, formas respetuosas y la comprensión de que todos tienen diferentes habilidades y limitaciones, ¡lo que te incluye a ti! Los Habiticanos son pacientes los unos con los otros y tratan de ayudar cuando pueden.",
@@ -9,13 +9,13 @@
"commGuidePara015": "En Habitica hay dos tipos de espacios para socializar: públicos y privados. Los públicos incluyen la Taberna, los gremios públicos, GitHub, Trello y la Wiki. Los espacios privados incluyen los gremios privados, el chat de grupo y los mensajes privados. Todos los nombres de usuario y nombres públicos deben cumplir con las normas de uso de foros públicos. Si quieres cambiar tu nombre de usuario o nombre público, puedes hacerlo desde el submenú \"Usuario > Perfil\".",
"commGuidePara016": "Al recorrer los espacios públicos de Habitica, hay algunas reglas generales para mantener a todo el mundo seguro y feliz.",
"commGuideList02A": "<strong>Respetaos los unos a los otros</strong>. Se cortés, amable, amigable y útil. Recuerda: Los Habiticanos vienen de todo tipo de entornos y han tenido multitud de experiencias diferentes. ¡Eso es parte de lo que hace Habitica tan sensacional! Formar una comunidad significa respetar y celebrar nuestras diferencias tanto como nuestras similitudes.",
"commGuideList02B": "<strong>Obedece todos los <a href='/static/terms' target='_blank'>términos y condiciones</a></strong> tanto en espacios públicos como privados.",
"commGuideList02B": "<strong>Obedece todos los <a href='https://habitica.com/static/terms' target='_blank'> Términos y Condiciones</a></strong> tanto en espacios públicos como privados.",
"commGuideList02C": "<strong>No publiques imágenes o texto que sean violentos, amenazantes, o sexualmente explícitos/insinuantes, o que promuevan discriminación, intolerancia, racismo, sexismo, odio, abuso o daño contra cualquier persona o grupo</strong>. Ni siquiera como broma o meme. Esto incluye tanto insultos como cualquier tipo de declaración. No todo el mundo tiene el mismo sentido del humor, así que algo que tú consideras un chiste puede herir a otra persona.",
"commGuideList02D": "<strong>Mantened únicamente discusiones aptas para todas las edades</strong>. Deben evitarse los temas de conversación para adultos en todos los espacios públicos. Contamos con muchos habiticanos menores de edad que usan la página y personas con todo tipo de sensibilidades. Por ello, queremos que nuestra comunidad sea lo más confortable e inclusiva posible para todos.",
"commGuideList02E": "<strong>Evita blasfemar. Esto incluye difamaciones leves, abreviadas, camufladas en los mensajes o comentarios basados en la religión que pueden ser aceptables en otras circunstancias</strong>. Sin embargo, aquí hay gente con trasfondos culturales y religiosos de todo tipo y queremos asegurarnos de que todos ellos puedan sentirse cómodos en los espacios públicos. <strong>Si un moderador o miembro del personal te dice que un término no está aceptado en Habitica, incluso si no te habías dado cuenta de que es un término controvertido, esa decisión es definitiva </strong>. Además, las faltas de respeto serán tratadas con severidad, ya que son una violación de los términos de servicio.",
"commGuideList02F": "Evita las discusiones extensas de temas divisivos en la Taberna y allí donde estén fuera de lugar. Si alguien menciona algo que está permitido por las pautas, pero que te ha resultado hiriente, está bien comunicárselo educadamente. Si alguien te dice que les has hecho sentir incomodo, tómate un tiempo para reflexionar en lugar de responder airadamente. Pero si crees que la conversación se está caldeando, volviendose demasiado emotiva o dañina, <strong> deja de participar. En su lugar, reporta la publicación para hacernosla llegar.</strong> Los moderadores responderan tan rápidamente como sea posible. También puedes envíar un email a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e incluir capturas de pantalla si fuesen de ayuda.",
"commGuideList02G": "<strong>Cumple inmediatamente con cualquier solicitud de un mod</strong>. Esto podría incluir, entre otras cosas, que te pida limitar tus publicaciones en un espacio en particular, editar tu perfil para eliminar contenido inadecuado, pedirte que traslades un debate a un espacio más adecuado, etc. No discutas con los moderadores. Si tienes alguna preocupación o comentario sobre la moderación, envía un email a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> para contactar con nuestro community manager.",
"commGuideList02J": "<strong>No mandes correo no deseado</strong>. Esto puede incluir, entre otros: publicar el mismo comentario o consulta en varios lugares, <strong>publicar enlaces sin explicación ni contexto</strong>, publicar mensajes sin sentido, publicar varios mensajes promocionales sobre un Gremio, Equipo o Desafío, o publicar muchos mensajes seguidos. Si te beneficias de que la gente haga clic en un enlace, debes explicarlo en el texto del mensaje o también se considerará correo no deseado. Los mods pueden decidir qué constituye correo no deseado a su discreción.",
"commGuideList02E": "<strong>Evita lenguaje vulgar. Esto incluye abreviaciones o vulgaridad camuflada</strong>. Tenemos personas de todos los transfondos religiosos y culturales, y queremos asegurarnos de que todos ellos puedan sentirse cómodos en los espacios públicos. <strong>Si un moderador o miembro del personal te dice que un término no está aceptado en Habitica, incluso si no te habías dado cuenta de que es un término controvertido, esa decisión es definitiva </strong>. Además, las faltas de respeto serán tratadas con severidad, ya que son una violación de los términos de servicio.",
"commGuideList02F": "Evita las discusiones extensas de temas divisivos en la Taberna y donde estén fuera de lugar. Si alguien menciona algo que está permitido por las pautas, pero que te ha resultado hiriente, está bien comunicárselo educadamente. Si alguien te dice que les has hecho sentir incomodo, tómate un tiempo para reflexionar en lugar de responder de manera agresiva. Pero si crees que la conversación se está caldeando, volviéndose demasiado emotiva o dañina, <strong> deja de participar. En su lugar, reporta la publicación para hacérnosla llegar.</strong> Los moderadores responderán tan rápido como sea posible. También puedes enviar un email a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e incluir capturas de pantalla si fuesen de ayuda.",
"commGuideList02G": "<strong>Cumple inmediatamente con cualquier solicitud de un mod</strong>. Esto podría incluir, entre otras cosas, que te pida limitar tus publicaciones en un espacio en particular, editar tu perfil para eliminar contenido inadecuado, pedirte que traslades un debate a un espacio más adecuado, etc. No discutas con la Administración. Si tienes alguna preocupación o comentario sobre la moderación, envía un email a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> para contactar con nuestro community manager.",
"commGuideList02J": "<strong>No mandes correo no deseados</strong>. Esto puede incluir, entre otros: publicar el mismo comentario o consulta en varios lugares, <strong>publicar enlaces sin explicación ni contexto</strong>, publicar mensajes sin sentido, publicar varios mensajes promocionales sobre un Gremio, Grupo o Desafío, o publicar muchos mensajes seguidos. Si te beneficias de que la gente haga clic en un enlace, debes explicarlo en el texto del mensaje o también se considerará correo no deseado. Los mods pueden decidir qué constituye correo no deseado a su discreción.",
"commGuideList02K": "<strong>Evita publicar encabezados grandes en los espacios públicos, especialmente en la Taberna</strong>. Al igual que TODO EN MAYÚSCULA, se lee como si estuvieras gritando, e interfiere con un ambiente cómodo.",
"commGuideList02L": "<strong>Desaconsejamos encarecidamente el intercambio de información personal, en particular, información que pueda utilizarse para identificarte, en espacios públicos</strong>. La información identificadora puede incluir, entre otros: tu dirección personal, tu dirección de correo electrónico y tu token de API/contraseña. ¡Esto es por tu seguridad! El personal o los moderadores pueden eliminar tales publicaciones a su discreción. Si se te solicita información personal en un Gremio, Equipo o MP, recomendamos encarecidamente que lo rechaces educadamente y avises al personal y a los moderadores de alguna de las siguientes maneras: 1) marcando el mensaje, o 2) enviando un correo a <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> e incluyendo capturas de pantalla.",
"commGuidePara019": "<strong>En espacios privados</strong>, los usuarios tienen más libertada para debatir los temas que deseen, pero aun así no deben violar los Términos y Condiciones, incluyendo colgar insultos o cualquier contenido discriminatorio, violento o amenazante. Tened en cuenta que, dado que los nombres de los Desafíos aparecen en el perfil público del ganador, TODOS los desafíos deben obedecer las Normas de Espacios Públicos, incluso si aparecen en espacios privados.",
@@ -124,10 +124,11 @@
"commGuideList01A": "Los términos y condiciones se aplican en todos los espacios, incluyendo gremios privados, chats de grupo y mensajes.",
"commGuideList01B": "Prohibido: mensajes amenazantes, violentos, que promocionen la discriminación, etc. incluyendo memes, imágenes y bromas.",
"commGuideList01C": "Todas las discusiones deben ser aptas para todas las edades y estar libres de palabras ofensivas.",
"commGuideList01D": "Por favor, cumple con las indicaciones de los moderadores.",
"commGuideList01E": "No inicies o te unas a conversaciones polémicas en la Taberna.",
"commGuideList01D": "Por favor, cumple con las indicaciones de la administración.",
"commGuideList01E": "<strong> No inicies o te unas a conversaciones polémicas/acaloradas en la Taberna. </strong>",
"commGuideList01F": "No mendigues objetos de pago, hagas spam o escribas mensajes kilométricos/completamente en mayúsculas.",
"commGuideList02M": "No pidas o mendigues gemas, suscripciones o membresía en Planes de Grupo. No está permitido en la Taberna, chats públicos ni privados, ni en mensajes privados. Si observas mensajes de este tipo, repórtalos con el icono de la bandera. Comportamientos reiterados del tipo de los citados, especialmente después de una advertencia, podrán suponer la suspensión de tu cuenta.",
"commGuideList05H": "Intentos de fraude severos o repetidos a otros jugadores con la intención de cambiar objetos por dinero real",
"commGuideList09D": "Degradación o eliminación de los rangos de colaborador"
"commGuideList09D": "Degradación o eliminación de los rangos de colaborador",
"commGuideList02N": "<strong> Marca y reporta publicaciones que rompan con los términos de servicio. </strong> Nosotros nos encargaremos de ellos lo más rápido posible. También puedes notificar a la Administración a través de <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> pero marcar/señalar una publicación es la manera más rapida de obtener ayuda."
}
+3 -2
View File
@@ -56,7 +56,7 @@
"mobileAndroid": "Aplicación de Android",
"mobileIOS": "Aplicación de iOS",
"oldNews": "Noticias",
"newsArchive": "Archivo de noticias en Wikia (multilingüe)",
"newsArchive": "Archivo de noticias en Fandom(multilenguaje)",
"setNewPass": "Establecer nueva contraseña",
"password": "Contraseña",
"playButton": "Jugar",
@@ -188,5 +188,6 @@
"enterHabitica": "Adéntrate en Habitica",
"emailUsernamePlaceholder": "p.e., habitrabbit o gryphon@example.com",
"socialAlreadyExists": "Esta identificación social ya está vinculado a una cuenta Habitica existente.",
"footerProduct": "Producto"
"footerProduct": "Producto",
"translateHabitica": "Traduce Habitica"
}
+94 -88
View File
@@ -1543,63 +1543,63 @@
"backMystery201812Notes": "Tu lujosa cola resplandce como un carámbano, moviéndose feliz mientras caminas suavemente sobre los montículos de nieve. No otorga ningún beneficio. Artículo de Suscriptor de diciembre de 2018.",
"backMystery201805Text": "Cola de pavo real fenómeno",
"backMystery201805Notes": "¡Esta hermosa cola emplumada es perfecta para pasear por un hermoso sendero en el jardín! No otorga ningún beneficio. Artículo del suscriptor de mayo del 2018.",
"backSpecialWonderconRedText": "Capa del poder",
"backSpecialWonderconRedNotes": "Castañea con fuerza y belleza. No confiere beneficio. Artículo Edición Especial Convención.",
"backSpecialWonderconRedText": "Capa Poderosa",
"backSpecialWonderconRedNotes": "Castañea con fuerza y belleza. No otorga ningún beneficio. Artículo de edición especial de convención.",
"backSpecialWonderconBlackText": "Capa Sigilosa",
"backSpecialWonderconBlackNotes": "Hilada de sombras y suspiros. No otorga ningún beneficio. Artículo de Convención Edición especial.",
"backSpecialWonderconBlackNotes": "Hilada de sombras y suspiros. No otorga ningún beneficio. Artículo de edición especial de convención.",
"backSpecialTakeThisText": "Alas 'Take This'",
"backSpecialTakeThisNotes": "Estas alas se consiguieron al participar en un Desafío patrocinado por \"Take This\". ¡Felicidades! Aumenta todos los Atributos en <%= attrs %>.",
"backSpecialSnowdriftVeilText": "Velo Derrapanieves",
"backSpecialSnowdriftVeilNotes": "¡Este translúcido velo te hará parecer que estás rodeado por una elegante ráfaga de nieve! No proporciona ningún beneficio.",
"backSpecialSnowdriftVeilNotes": "¡Este translúcido velo te hará parecer que estás rodeado por una elegante ráfaga de nieve! No otorga ningún beneficio.",
"backSpecialAetherCloakText": "Capa Etérea",
"backSpecialAetherCloakNotes": "Esta capa perteneció una vez a la mismísima \"Lost Masterclasser\". Aumenta la Percepción en <%= per %>.",
"backSpecialTurkeyTailBaseText": "Cola de Pavo",
"backSpecialTurkeyTailBaseNotes": "¡Viste tu honorable Cola de Pavo con orgullo mientras lo celebras! No otorga ningún beneficio.",
"backSpecialTurkeyTailGildedText": "Cola de Pavo Dorado",
"backSpecialTurkeyTailGildedNotes": "!Este plumaje es perfecto para desfilar! No otorga ningún beneficio.",
"backBearTailText": "Cola de oso",
"backBearTailNotes": "¡Esta cola hace que parezcas un valiente oso! No confiere beneficio.",
"backCactusTailText": "Cola de cactus",
"backCactusTailNotes": "¡Esta cola hace que parezcas un puntiagudo cactus! No confiere beneficio.",
"backFoxTailText": "Cola de zorro",
"backFoxTailNotes": "¡Esta cola hace que parezcas un astuto zorro! No confiere beneficio.",
"backLionTailText": "Cola de león",
"backLionTailNotes": "¡Esta cola hace que parezcas un majestuoso león! No confiere beneficio.",
"backPandaTailText": "Cola de panda",
"backPandaTailNotes": "¡Esta cola hace que parezcas un agradable panda! No confiere beneficio.",
"backPigTailText": "Cola de cerdo",
"backPigTailNotes": "¡Esta cola hace que parezcas un extravagante cerdo! No confiere beneficio.",
"backTigerTailText": "Cola de tigre",
"backTigerTailNotes": "¡Esta cola hace que parezcas un fiero tigre! No confiere beneficio.",
"backWolfTailText": "Cola de lobo",
"backWolfTailNotes": "¡Esta cola hace que parezcas un leal lobo! No confiere beneficio.",
"body": "Accesorio para el cuerpo",
"backBearTailText": "Cola de Oso",
"backBearTailNotes": "¡Esta cola hace que parezcas un valiente oso! No otorga ningún beneficio.",
"backCactusTailText": "Cola de Cactus",
"backCactusTailNotes": "¡Esta cola hace que parezcas un puntiagudo cactus! No otorga ningún beneficio.",
"backFoxTailText": "Cola de Zorro",
"backFoxTailNotes": "¡Esta cola hace que parezcas un astuto zorro! No otorga ningún beneficio.",
"backLionTailText": "Cola de León",
"backLionTailNotes": "¡Esta cola hace que parezcas un majestuoso león! No otorga ningún beneficio.",
"backPandaTailText": "Cola de Panda",
"backPandaTailNotes": "¡Esta cola hace que parezcas un agradable panda! No otorga ningún beneficio.",
"backPigTailText": "Cola de Cerdo",
"backPigTailNotes": "¡Esta cola hace que parezcas un extravagante cerdo! No otorga ningún beneficio.",
"backTigerTailText": "Cola de Tigre",
"backTigerTailNotes": "¡Esta cola hace que parezcas un fiero tigre! No otorga ningún beneficio.",
"backWolfTailText": "Cola de Lobo",
"backWolfTailNotes": "¡Esta cola hace que parezcas un leal lobo! No otorga ningún beneficio.",
"body": "Accesorio del Cuerpo",
"bodyCapitalized": "Accesorio para el Cuerpo",
"bodyBase0Text": "Sin accesorio en el cuerpo",
"bodyBase0Notes": "Sin accesorio en el cuerpo.",
"bodySpecialWonderconRedText": "Collar de rubí",
"bodySpecialWonderconRedNotes": "¡Un precioso collar de Rubí! No otorga ningún beneficio. Artículo de Congreso Edición Especial.",
"bodySpecialWonderconGoldText": "Collar de oro",
"bodySpecialWonderconGoldNotes": "¡Un precioso collar de Oro! No otorga ningún beneficio. Artículo de Congreso Edición Especial.",
"bodySpecialWonderconBlackText": "Collar de ébano",
"bodySpecialWonderconBlackNotes": "¡Un precioso collar de Ébano! No otorga ningún beneficio. Artículo de Congreso Edición Especial.",
"bodyBase0Text": "Sin Accesorio del Cuerpo",
"bodyBase0Notes": "Sin Accesorio del Cuerpo.",
"bodySpecialWonderconRedText": "Collar de Rubí",
"bodySpecialWonderconRedNotes": "¡Un precioso collar de rubí! No otorga ningún beneficio. Artículo de edición especial de convención.",
"bodySpecialWonderconGoldText": "Collar de Oro",
"bodySpecialWonderconGoldNotes": "¡Un precioso collar de oro! No otorga ningún beneficio. Artículo de edición especial de convención.",
"bodySpecialWonderconBlackText": "Collar de Ébano",
"bodySpecialWonderconBlackNotes": "¡Un precioso collar de ébano! No otorga ningún beneficio. Artículo de edición especial de convención.",
"bodySpecialTakeThisText": "Hombreras 'Take This'",
"bodySpecialTakeThisNotes": "Estas hombreras se consiguieron al participar en un Desafío patrocinado por \"Take This\". ¡Felicidades! Aumenta todos los Atributos en <%= attrs %>.",
"bodySpecialAetherAmuletText": "Amuleto Etéreo",
"bodySpecialAetherAmuletNotes": "Este amuleto tiene una historia misteriosa. Aumenta la Constitución y la Fuerza en <%= attrs %> cada uno.",
"bodySpecialSummerMageText": "Poncho Reluciente",
"bodySpecialSummerMageNotes": "Ni el agua salada ni el agua fresca pueden deslustrar este metálico poncho. No otorga ningún beneficio. Equipamiento de Primavera 2014, Edición Limitada.",
"bodySpecialSummerHealerText": "Collar de coral",
"bodySpecialSummerHealerNotes": "¡Un elegante collar de Coral vivo! No otorga ningún beneficio. Equipo de Verano, Edición Limitada del 2014.",
"bodySpecialSummer2015RogueText": "Banda de rebelde",
"bodySpecialSummer2015RogueNotes": "No se puede ser rebelde si no se tiene garbo... ni una banda. No otorga ningún beneficio. Equipo de edición limitada, verano de 2015.",
"bodySpecialSummer2015WarriorText": "Espinas oceánicas",
"bodySpecialSummer2015WarriorNotes": "Cada espina despide veneno de medusa para proteger a quien las lleva. No otorga ningún beneficio. Artículo de Edición Limitada, verano del 2015.",
"bodySpecialSummer2015MageText": "Hebilla dorada",
"bodySpecialSummer2015MageNotes": "Esta hebilla no ofrece ningún poder: solo brilla. No otorga ningún beneficio. Artículo de Edición Limitada, verano de 2015.",
"bodySpecialSummer2015HealerText": "Pañoleta de marinero",
"bodySpecialSummer2015HealerNotes": "Arr... digo ¡ay! No otorga ningún beneficio. Equipo de edición limitada, verano de 2015.",
"bodySpecialNamingDay2018Text": "Capa de Grifo púrpura real",
"bodySpecialSummerMageNotes": "Ni el agua salada ni el agua fresca pueden deslustrar este metálico poncho. No otorga ningún beneficio. Equipamiento de edición limitada de primavera 2014.",
"bodySpecialSummerHealerText": "Collar de Coral",
"bodySpecialSummerHealerNotes": "¡Un elegante collar de coral vivo! No otorga ningún beneficio. Equipamiento de edición limitada de verano 2014.",
"bodySpecialSummer2015RogueText": "Banda de Rebelde",
"bodySpecialSummer2015RogueNotes": "No se puede ser rebelde si no se tiene garbo... ni una banda. No otorga ningún beneficio. Equipamiento de edición limitada de verano 2015.",
"bodySpecialSummer2015WarriorText": "Espinas Oceánicas",
"bodySpecialSummer2015WarriorNotes": "Cada espina despide veneno de medusa para proteger a quien las lleva. No otorga ningún beneficio. Equipamiento de edición limitada de verano 2015.",
"bodySpecialSummer2015MageText": "Hebilla Dorada",
"bodySpecialSummer2015MageNotes": "Esta hebilla no ofrece ningún poder: solo brilla. No otorga ningún beneficio. Equipamiento de edición limitada de verano 2015.",
"bodySpecialSummer2015HealerText": "Pañoleta de Marinero",
"bodySpecialSummer2015HealerNotes": "Arr... digo ¡ay! No otorga ningún beneficio. Equipamiento de edición limitada de verano 2015.",
"bodySpecialNamingDay2018Text": "Capa de Grifo Púrpura Real",
"bodySpecialNamingDay2018Notes": "¡Feliz día del nombramiento! Viste esta capa elegante y emplumada mientras celebras Habitica. No otorga ningún beneficio.",
"bodyMystery201705Text": "Alas Plumosas Plegadas de Combate",
"bodyMystery201705Notes": "Estas alas plegadas no solo lucen elegantes: ¡te concederán la velocidad y agilidad de un grifo! No proporciona ningún beneficio. Artículo del suscriptor Mayo 2017.",
@@ -1618,27 +1618,27 @@
"headAccessoryBase0Text": "Sin accesorio en la cabeza",
"headAccessoryBase0Notes": "Sin accesorio en la cabeza.",
"headAccessorySpecialSpringRogueText": "Orejas de Gato Moradas",
"headAccessorySpecialSpringRogueNotes": "Estas orejas felinas se retuercen para detectar amenzas. No otorga ningún beneficio. Equipo de Primavera Edición Limitada 2014.",
"headAccessorySpecialSpringRogueNotes": "Estas orejas felinas se retuercen para detectar amenzas. No otorga ningún beneficio. Equipamiento de edición limitada de primavera 2014.",
"headAccessorySpecialSpringWarriorText": "Orejas de Conejito Verde",
"headAccessorySpecialSpringWarriorNotes": "Orejas de conejito que detectan eficazmente cada crujido de zanahoria. No otorga ningún beneficio. Equipamiento de Primavera 2014, Edición Limitada.",
"headAccessorySpecialSpringWarriorNotes": "Orejas de conejito que detectan eficazmente cada crujido de zanahoria. No otorga ningún beneficio. Equipamiento de edición limitada de primavera 2014.",
"headAccessorySpecialSpringMageText": "Orejas de Ratón Azul",
"headAccessorySpecialSpringMageNotes": "Estás redondas orejas de ratón son suaves como la seda. No otorgan ningún beneficio. Equipo de Primavera Edición Limitada 2014.",
"headAccessorySpecialSpringMageNotes": "Estás redondas orejas de ratón son suaves como la seda. No otorgan ningún beneficio. Equipamiento de edición limitada de primavera 2014.",
"headAccessorySpecialSpringHealerText": "Orejas de Perro Amarillas",
"headAccessorySpecialSpringHealerNotes": "Flexible pero adorable. ¿Quieres jugar? No otorgan ningún beneficio. Equipo de Primavera Edición Limitada 2014.",
"headAccessorySpecialSpring2015RogueText": "Orejas de Ratón Amarillas",
"headAccessorySpecialSpring2015RogueNotes": "Estás orejas son de acero contra el sonido de explosivos. No confieren ningún beneficio. Equipo de Primavera Edición Limitada 2015.",
"headAccessorySpecialSpring2015RogueNotes": "Estás orejas son de acero contra el sonido de explosivos. No confieren ningún beneficio. Equipamiento de edición limitada de primavera 2015.",
"headAccessorySpecialSpring2015WarriorText": "Orejas de Perro Morado",
"headAccessorySpecialSpring2015WarriorNotes": "Son moradas, son orejas de perro. No pierdas el tiempo con mas insensateces. No otorgan ningún beneficio. Equipo de Primavera Edición Especial 2015.",
"headAccessorySpecialSpring2015WarriorNotes": "Son moradas, son orejas de perro. No pierdas el tiempo con mas insensateces. No otorgan ningún beneficio. Equipamiento de edición limitada de primavera 2015.",
"headAccessorySpecialSpring2015MageText": "Orejas de Conejito Azul",
"headAccessorySpecialSpring2015MageNotes": "Estas orejas escuchan atentamente, en el caso de que algún mago esté revelando algún secreto. No confieren ningún beneficio. Equipamiento de Primavera 2015 Edición limitada.",
"headAccessorySpecialSpring2015MageNotes": "Estas orejas escuchan atentamente, en el caso de que algún mago esté revelando algún secreto. No confieren ningún beneficio. Equipamiento de edición limitada de primavera 2015.",
"headAccessorySpecialSpring2015HealerText": "Orejas de Gatito Verdes",
"headAccessorySpecialSpring2015HealerNotes": "Estas adorables orejas harán que los demás se pongan verdes de envidia. No otorga ningún beneficio. Equipamiento de Verano Edición Limitada del 2015.",
"headAccessorySpecialSpring2016RogueText": "Orejas de Perro Verdes",
"headAccessorySpecialSpring2016RogueNotes": "¡Con éstas podrás mantener a astutos magos en la mira aunque se vuelvan invisibles! No otorgan ningún beneficio. Equipamiento de Edición Limitada de Primavera 2016.",
"headAccessorySpecialSpring2016RogueNotes": "¡Con éstas podrás mantener a astutos magos en la mira aunque se vuelvan invisibles! No otorgan ningún beneficio. Equipamiento de edición limitada de primavera 2016.",
"headAccessorySpecialSpring2016WarriorText": "Orejas de Ratón Rojas",
"headAccessorySpecialSpring2016WarriorNotes": "Para que puedas escuchar mejor tu banda sonora en los ruidosos campos de batalla. No confieren ningún beneficio. Equipamiento de Edición Limitada de Primavera 2016.",
"headAccessorySpecialSpring2016WarriorNotes": "Para que puedas escuchar mejor tu banda sonora en los ruidosos campos de batalla. No confieren ningún beneficio. Equipamiento de edición limitada de primavera 2016.",
"headAccessorySpecialSpring2016MageText": "Orejas de Gato Amarillas",
"headAccessorySpecialSpring2016MageNotes": "Estas puntiagudas orejas pueden detectar el insignificante zumbido del Mana ambiente, o las silenciosas pisadas de un Pícaro. No otorga ningún beneficio. Equipamiento Edición Limitada de Primavera 2016.",
"headAccessorySpecialSpring2016MageNotes": "Estas puntiagudas orejas pueden detectar el insignificante zumbido del Mana ambiente, o las silenciosas pisadas de un Pícaro. No otorga ningún beneficio. Equipamiento de edición limitada de primavera 2016.",
"headAccessorySpecialSpring2016HealerText": "Orejas de Conejito Moradas",
"headAccessorySpecialSpring2016HealerNotes": "Altas como banderas en una batalla, permiten a otros ver dónde conseguir ayuda. No confieren ningún beneficio. Equipamiento de Edición Limitada de Primavera 2016.",
"headAccessorySpecialSpring2017RogueText": "Orejas de Conejito Rojas",
@@ -1951,7 +1951,7 @@
"weaponSpecialSummer2020MageText": "Remo Poderoso",
"weaponSpecialSummer2020WarriorNotes": "Si tus enemigos se mofan de tu elección de armamento, no piques. ¡Este anzuelo es atrautentico! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de verano 2020.",
"weaponSpecialSummer2020RogueNotes": "¡Tus enemigos no te ven venir, pero tus garras son ineludibles! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de verano 2020.",
"backSpecialNamingDay2020Text": "Cola de Grifo púrpura real",
"backSpecialNamingDay2020Text": "Cola de Grifo Púrpura Real",
"armorSpecialSpring2019MageNotes": "Este atuendo acumula poder de la resina mágica embebida en las fibras de corteza antigua que componen el tejido. Aumenta la Inteligencia en <%= int %>. Equipamiento de edición limitada de primavera 2019.",
"armorSpecialSummer2019HealerNotes": "Deslízate impecablemente por cálidas aguas costeras con esta elegante cola. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de verano 2019.",
"armorSpecialFall2019RogueNotes": "Este atuendo viene completo con guantes blancos, y es ideal para pavonearte en tu palco privado sobre el escenario o hacer entradas impactantes bajando por grandes escalinatas. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de otoño 2019.",
@@ -2069,7 +2069,7 @@
"shieldArmoireBirthdayBannerText": "Banner de cumpleaños",
"shieldArmoireMasteredShadowText": "Sombra dominada",
"shieldMystery202011Text": "Bastón foliado",
"shieldSpecialWinter2021HealerText": "Guardabrazos árticos",
"shieldSpecialWinter2021HealerText": "Guardabrazos Árticos",
"shieldSpecialKS2019Notes": "Brillando como la cáscara de un huevo de grifo, este magnífico escudo te muestra cómo estar listo para ayudar cuando tus propias cargas son ligeras. Aumenta la Percepción en <%= per %>.",
"shieldSpecialKS2019Text": "Escudo de Grifo Mítico",
"shieldSpecialPiDayNotes": "¡Te desafiamos a que calcules la relación entre la circunferencia de este escudo y su delicia! No otorga ningún beneficio.",
@@ -2093,7 +2093,7 @@
"weaponArmoireJadeGlaiveText": "Guja de Jade",
"shieldSpecialWinter2021WarriorText": "Pez Gordo",
"shieldArmoirePolishedPocketwatchText": "Reloj de bolsillo pulido",
"shieldSpecialFall2020WarriorText": "Escudo del espíritu",
"shieldSpecialFall2020WarriorText": "Escudo del Espíritu",
"weaponSpecialSpring2021RogueNotes": "¿Sabes que es mejor que dos flores? ¡CUATRO flores! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de primavera 2021.",
"weaponSpecialSpring2021RogueText": "Brote de Flores Gemelas",
"weaponSpecialSpring2021WarriorNotes": "Aprovecha el poder del sol hacia tus enemigos, ¡Y que la piedra solar te de suerte! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de primavera 2021.",
@@ -2313,46 +2313,46 @@
"headArmoireClownsWigText": "Peluca de payaso",
"headArmoireMedievalLaundryCapNotes": "No es que sea un gorro muy elaborado, pero para lavar la ropa... servirá. Aumenta la inteligencia en <%= int %>. Armario Encantado: Conjunto de lavanderos medievales (artículo 3 de 6).",
"headArmoireClownsWigNotes": "¡Ninguna mala tarea podrá morderte ahora! Sabrás raro. Aumenta la constitución en <%= con %>. Armario Encantado: Conjunto de payaso (artículo 3 de 5).",
"shieldSpecialSpring2021HealerNotes": "Un bulto de hojas verdes que presagia refugio y compasión. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de primavera 2021.",
"shieldSpecialFall2019HealerText": "Grimorio grotesco",
"shieldSpecialFall2020RogueNotes": "Será mejor que seas rápido con tu juego de pies mientras usas este katar... Esta daga te servirá bien si eres rápido golpeando, ¡pero no te sobresfuerces! Aumenta la fuerza en <%= str %>. Equipamiento de edición limitada de otoño 2020.",
"shieldSpecialFall2020HealerNotes": "¿Otra de tus polillas sigue en proceso de metamorfosis? ¿O es simplemente un bolso de seda que contiene tus herramientas de sanación y profecía? Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de otoño 2020.",
"shieldSpecialWinter2020HealerNotes": "¿Sientes que eres demasiado bueno para este mundo, demasiado puro? Si es así, solo estará a tu altura la belleza de este elemento. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de invierno 2019-2020.",
"shieldSpecialSpring2021WarriorNotes": "La belleza de esta piedra solar de forma tosca brillará incluso en las cuevas más profundas y las mazmorras más oscuras. ¡Mantenlo bien alto! Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de primavera 2021.",
"shieldSpecialSummer2019MageNotes": "¿Sudando bajo el sol de verano? ¡No! Realiza un simple conjuro elementar para el estanque de nenúfares. Aumenta la percepción en <%= per %>. Equipamiento de edición limitada de verano 2019.",
"shieldSpecialSummer2020HealerText": "Égida de vidrio caído",
"shieldSpecialWinter2021HealerNotes": "Detén las armas con tus propias manos con estos poderosos guantes. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de invierno 2020-2021.",
"shieldSpecialSpring2020WarriorText": "Escudo iridiscente",
"shieldSpecialFall2020RogueText": "Katar veloz",
"shieldSpecialSpring2020HealerNotes": "Protégete de esos mustiamente viejas tareas pendientes con este perfumadamente dulce escudo. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de primavera 2020.",
"shieldSpecialSpring2021HealerText": "Escudo salicílico",
"shieldSpecialFall2020WarriorNotes": "Puede parecer insustancial, pero este escudo espectral puede mantenerte a salvo de todo tipo de daños. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de otoño 2020.",
"shieldSpecialSpring2020WarriorNotes": "¡No dejes que sus brillantes colores te engañen!¡Este escudo te dará gran protección! Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de primavera 2020.",
"shieldSpecialSpring2020HealerText": "Escudo perfumado",
"shieldSpecialFall2020HealerText": "Capullo llevatodo",
"shieldSpecialFall2019WarriorNotes": "El oscuro brillo de la pluma de un cuervo solidificada, este escudo frustrará todos los ataques. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de otoño 2019.",
"shieldSpecialSummer2020WarriorNotes": "Aquel pez que pescaste era TAN GRANDE, ¡que una sola de sus escama fue suficiente para fabricar este imponente escudo! Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de verano 2020.",
"shieldSpecialSummer2020HealerNotes": "Así como el movimiento de la arena y el agua convierte la basura en un tesoro, tu magia convertirá las heridas en fuerza. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de verano 2020.",
"shieldSpecialSummer2020WarriorText": "Escama de trucha enorme",
"shieldSpecialSummer2021WarriorNotes": "Esta gota de agua encantada absorbe magia y resiste los golpes de las tareas diarias más rojas. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de verano 2021.",
"shieldSpecialSummer2021WarriorText": "Escudo acuático",
"shieldSpecialWinter2020WarriorText": "Cono conífero redondo",
"shieldSpecialWinter2020WarriorNotes": "Úselo como un escudo hasta que se le caigan las semillas, ¡y luego puedes ponerlo en una corona! Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de invierno 2019-2020.",
"shieldSpecialSpring2021WarriorText": "Escudo solar",
"shieldSpecialWinter2021WarriorNotes": "¡Cuéntales a todos tus amigos el pez EXTREMADAMENTE grande que has cogido! Ahora bien, el contarles que en realidad está hecho de plástico y te canta canciones ya depende de ti. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de invierno 2020-2021.",
"shieldSpecialFall2019HealerNotes": "¡Haz uso del lado oscuro de las artes del sanador con este grimorio! Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de otoño 2019.",
"shieldSpecialSpring2021HealerNotes": "Un bulto de hojas verdes que presagia refugio y compasión. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de primavera 2021.",
"shieldSpecialFall2019HealerText": "Grimorio Grotesco",
"shieldSpecialFall2020RogueNotes": "Será mejor que seas rápido con tu juego de pies mientras usas este katar... Esta daga te servirá bien si eres rápido golpeando, ¡pero no te sobresfuerces! Aumenta la Fuerza en <%= str %>. Equipamiento de edición limitada de otoño 2020.",
"shieldSpecialFall2020HealerNotes": "¿Otra de tus polillas sigue en proceso de metamorfosis? ¿O es simplemente un bolso de seda que contiene tus herramientas de sanación y profecía? Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de otoño 2020.",
"shieldSpecialWinter2020HealerNotes": "¿Sientes que eres demasiado bueno para este mundo, demasiado puro? Si es así, solo estará a tu altura la belleza de este elemento. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de invierno 2019-2020.",
"shieldSpecialSpring2021WarriorNotes": "La belleza de esta piedra solar de forma tosca brillará incluso en las cuevas más profundas y las mazmorras más oscuras. ¡Mantenlo bien alto! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de primavera 2021.",
"shieldSpecialSummer2019MageNotes": "¿Sudando bajo el sol de verano? ¡No! Realiza un simple conjuro elementar para el estanque de nenúfares. Aumenta la Percepción en <%= per %>. Equipamiento de edición limitada de verano 2019.",
"shieldSpecialSummer2020HealerText": "Égida de Vidrio Caído",
"shieldSpecialWinter2021HealerNotes": "Detén las armas con tus propias manos con estos poderosos guantes. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de invierno 2020-2021.",
"shieldSpecialSpring2020WarriorText": "Escudo Iridiscente",
"shieldSpecialFall2020RogueText": "Katar Veloz",
"shieldSpecialSpring2020HealerNotes": "Protégete de esos mustiamente viejas tareas pendientes con este perfumadamente dulce escudo. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de primavera 2020.",
"shieldSpecialSpring2021HealerText": "Escudo Salicílico",
"shieldSpecialFall2020WarriorNotes": "Puede parecer insustancial, pero este escudo espectral puede mantenerte a salvo de todo tipo de daños. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de otoño 2020.",
"shieldSpecialSpring2020WarriorNotes": "¡No dejes que sus brillantes colores te engañen!¡Este escudo te dará gran protección! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de primavera 2020.",
"shieldSpecialSpring2020HealerText": "Escudo Perfumado",
"shieldSpecialFall2020HealerText": "Capullo Llevatodo",
"shieldSpecialFall2019WarriorNotes": "El oscuro brillo de la pluma de un cuervo solidificada, este escudo frustrará todos los ataques. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de otoño 2019.",
"shieldSpecialSummer2020WarriorNotes": "Aquel pez que pescaste era TAN GRANDE, ¡que una sola de sus escama fue suficiente para fabricar este imponente escudo! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de verano 2020.",
"shieldSpecialSummer2020HealerNotes": "Así como el movimiento de la arena y el agua convierte la basura en un tesoro, tu magia convertirá las heridas en fuerza. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de verano 2020.",
"shieldSpecialSummer2020WarriorText": "Escama de Trucha Enorme",
"shieldSpecialSummer2021WarriorNotes": "Esta gota de agua encantada absorbe magia y resiste los golpes de las tareas diarias más rojas. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de verano 2021.",
"shieldSpecialSummer2021WarriorText": "Escudo Acuático",
"shieldSpecialWinter2020WarriorText": "Cono Conífero Redondo",
"shieldSpecialWinter2020WarriorNotes": "Úselo como un escudo hasta que se le caigan las semillas, ¡y luego puedes ponerlo en una corona! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de invierno 2019-2020.",
"shieldSpecialSpring2021WarriorText": "Escudo Solar",
"shieldSpecialWinter2021WarriorNotes": "¡Cuéntales a todos tus amigos el pez EXTREMADAMENTE grande que has cogido! Ahora bien, el contarles que en realidad está hecho de plástico y te canta canciones ya depende de ti. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de invierno 2020-2021.",
"shieldSpecialFall2019HealerNotes": "¡Haz uso del lado oscuro de las artes del sanador con este grimorio! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de otoño 2019.",
"shieldArmoireMasteredShadowNotes": "Tus poderes han traído a tu presencia estas sombras arremolinadas para que cumplan tus órdenes. Aumenta la percepción y la constitución en <%= attrs %> cada una. Armario Encantado: Conjunto de maestro de las sombras (artículo 4 de 4).",
"shieldSpecialSummer2021HealerNotes": "¡Tanto potencial en este escudo! Pero por ahora puedes usarlo para proteger a tus amigos. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de verano 2021.",
"shieldSpecialSummer2021HealerNotes": "¡Tanto potencial en este escudo! Pero por ahora puedes usarlo para proteger a tus amigos. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de verano 2021.",
"shieldMystery202011Notes": "Aprovecha el poder del viento otoñal con este bastón. Úsalo para magia arcana o para hacer increíbles montones de hojas, ¡tú decides! No otorga ningún beneficio. Artículo de suscriptor de noviembre 2020.",
"shieldArmoireAlchemistsScaleNotes": "Asegúrate de que tus ingredientes místicos estén correctamente medidos con este preciso equipo. Aumenta la inteligencia en <%= int %>. Armario Encantado: conjunto de alquimista (artículo 4 de 4).",
"shieldArmoireBirthdayBannerNotes": "¡Celebra tu día especial, el de alguien que amaa, o guarda un trozo para el cumpleaños de Habitica que es el 31 de enero! Aumenta la fuerza en <%= str %>. Armario Encantado: conjunto cumpleañero (artículo 4 de 4).",
"shieldSpecialSummer2021HealerText": "Escudo de semillas de girasol",
"shieldSpecialSummer2021HealerText": "Escudo de Semillas de Girasol",
"shieldArmoireTrustyUmbrellaNotes": "Los misterios suelen ir acompañados de inclemencias climáticas, ¡así que prepárate! Aumenta la inteligencia en <%= int %>. Armario Encantado: conjunto de detective (artículo 4 de 4).",
"shieldArmoirePolishedPocketwatchNotes": "El tiempo es tuyo. Y te queda muy bien. Aumenta la inteligencia en <%= int %>. Armario Encantado: artículo independiente.",
"shieldSpecialFall2021WarriorText": "Escudo de linterna de calabaza",
"shieldSpecialFall2021HealerNotes": "Un ser etéreo surge de entre tus llamas mágicas para otorgarte protección adicional. Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de otoño 2021.",
"shieldSpecialFall2021WarriorNotes": "Este festivo escudo de sonrisa torcida te protegerá e iluminará tu camino en la noche oscura. ¡También puede servirte como cabeza, si la necesitas! Aumenta la constitución en <%= con %>. Equipamiento de edición limitada de otoño 2021.",
"shieldSpecialFall2021HealerText": "Criatura invocada",
"shieldSpecialFall2021WarriorText": "Escudo de Linterna de Calabaza",
"shieldSpecialFall2021HealerNotes": "Un ser etéreo surge de entre tus llamas mágicas para otorgarte protección adicional. Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de otoño 2021.",
"shieldSpecialFall2021WarriorNotes": "Este festivo escudo de sonrisa torcida te protegerá e iluminará tu camino en la noche oscura. ¡También puede servirte como cabeza, si la necesitas! Aumenta la Constitución en <%= con %>. Equipamiento de edición limitada de otoño 2021.",
"shieldSpecialFall2021HealerText": "Criatura Invocada",
"shieldArmoireHoneyFoodText": "Miel decorativa",
"bodyMystery202003Notes": "Son como almohadillas para los hombros pero a otro nivel. No otorga ningún beneficio. Artículo de suscriptor de marzo 2020.",
"shieldArmoireFiddleNotes": "Un instrumento perfecto que siempre dará la nota correcta ante el público. Aumenta la inteligencia en <%= int %>. Armario Encantado: conjunto de violinista (artículo 4 de 4).",
@@ -2616,5 +2616,11 @@
"weaponArmoireYellowKiteNotes": "Cayendo en picado y girando de un lado a otro, mira cómo va tu alegre cometa. Aumenta todas las estadisticas en <%= attrs %>. Armario Encantado: Colección de Cometas (Artículo 5 de 5)",
"weaponArmoirePinkKiteText": "Cometa rosa",
"weaponArmoirePushBroomText": "Escoba de empuje",
"headSpecialSummer2022RogueText": "Casco de Cangrejo"
"headSpecialSummer2022RogueText": "Casco de Cangrejo",
"weaponSpecialSummer2022WarriorText": "Ciclón Giratorio",
"weaponSpecialSummer2022WarriorNotes": "¡Está girando! ¡Se redirecciona! ¡Y trae a la tormenta! (Aumenta la fuerza en <%=str%>). Edición limitada de equipamiento de Verano 2022.",
"weaponSpecialSummer2022MageText": "Bastón de Mantarraya",
"weaponSpecialSummer2022MageNotes": "Magicamente limpia el agua en frente de tí con un movimiento de su bastón. Incrementa la inteligencia en <%=int %> y Percepción en <%=per %>. Edición limitada de equipamiento de Verano 2022.",
"weaponSpecialSummer2022HealerText": "Burbujas Beneficiosas",
"weaponSpecialSummer2022HealerNotes": "Estas burbujas liberan magia de curación en el agua con un satisfactorio Pop!. Incrementa la inteligencia en <%=int %>. Edición limitada de equipamiento de Verano 2022."
}
+2 -1
View File
@@ -371,5 +371,6 @@
"hatchingPotionSolarSystem": "Sistema Solar",
"hatchingPotionMoonglow": "Brillo de Luna",
"hatchingPotionOnyx": "Ónice",
"hatchingPotionVirtualPet": "Mascota virtual"
"hatchingPotionVirtualPet": "Mascota virtual",
"hatchingPotionPorcelain": "Porcelana"
}
+20 -6
View File
@@ -1,8 +1,22 @@
{
"achievement": "Achievement",
"onwards": "Onwards!",
"levelup": "By accomplishing your real life goals, you leveled up and are now fully healed!",
"reachedLevel": "You Reached Level <%= level %>",
"achievementLostMasterclasser": "Quest Completionist: Masterclasser Series",
"achievementLostMasterclasserText": "Completed all sixteen quests in the Masterclasser Quest Series and solved the mystery of the Lost Masterclasser!"
"achievement": "Saavutus",
"onwards": "Edasi!",
"levelup": "Saavutades endale päris elus seatud eesmärke, jõudsid uue tasemeni ning oled täielikult paranenud!",
"reachedLevel": "Jõudsid Tasemeni <%= level %>",
"achievementLostMasterclasser": "Quest Completionist: Masterclasser Series",
"achievementLostMasterclasserText": "Completed all sixteen quests in the Masterclasser Quest Series and solved the mystery of the Lost Masterclasser!",
"yourProgress": "Sinu edasiminek",
"gettingStartedDesc": "Lõpeta need ülesanded ning teenid <strong>5 Saavutust</strong> ja <strong class=\"gold-amount\">100 kulda</strong>!",
"onboardingCompleteDesc": "Teenisid <strong>5 Saavutust</strong> ja <strong class=\"gold-amount\">100 kulda</strong> nimekirja lõpetamise eest.",
"letsGetStarted": "Alustame!",
"onboardingCompleteDescSmall": "Kui soovid rohkem, vaata Saavutusi ning alusta kogumist!",
"onboardingProgress": "<%= percentage %>% edasiminek",
"foundNewItems": "Leidsid uusi esemeid!",
"earnedAchievement": "Teenisid Saavutuse!",
"viewAchievements": "Vaata Saavutusi",
"showAllAchievements": "Näita kõiki <%= category %>",
"foundNewItemsExplanation": "Tehes ülesanded on sul võimalus leida esemeid nagu Munad, Nõiajoogid ja Lemmikloomade Toit.",
"onboardingComplete": "Lõpetasid kõik ülesanded!",
"yourRewards": "Sinu Tasu",
"hideAchievements": "Peida <%= category %>"
}
+3 -1
View File
@@ -625,5 +625,7 @@
"backgroundGhostShipText": "Ghost Ship",
"backgroundUnderwaterAmongKoiNotes": "Mangsilaw at masilaw ng mga kumikinang na carp, Sa Ilalim ng Tubig sa Gitna ng mga Koi.",
"backgroundUnderwaterAmongKoiText": "Sa Ilalim ng Tubig sa Gitna ng mga Koi",
"backgrounds072021": "SET 86: Inilabas noong Hulyo 2021"
"backgrounds072021": "SET 86: Inilabas noong Hulyo 2021",
"backgroundMaskMakersWorkshopText": "Pagawaan ng Tagágawâ ng Panakíp sa Mukhâ",
"backgroundMaskMakersWorkshopNotes": "Sumubok ng panibagong mukhâ sa Pagawaan ng Tagágawâ ng Panakíp sa Mukhâ."
}
+27 -27
View File
@@ -148,38 +148,38 @@
"youCastTarget": "You cast <%= spell %> on <%= target %>.",
"youCastParty": "You cast <%= spell %> for the party.",
"critBonus": "Critical Hit! Bonus:",
"gainedGold": "You gained some Gold",
"gainedMana": "You gained some Mana",
"gainedHealth": "You gained some Health",
"gainedExperience": "You gained some Experience",
"lostGold": "You spent some Gold",
"lostMana": "You used some Mana",
"lostHealth": "You lost some Health",
"lostExperience": "You lost some Experience",
"gainedGold": "Nadágdagán ang Gintô mo",
"gainedMana": "Nadágdagán ang Mana mo",
"gainedHealth": "Nadágdagán ang Kalusugan mo",
"gainedExperience": "Nadágdagán ang Karanasán mo",
"lostGold": "Gumugol ka ng Gintô",
"lostMana": "Gumamit ka ng Mana",
"lostHealth": "Nabawasan ang iyóng Kalusugan",
"lostExperience": "Nabawasan ang iyóng Karanasán",
"equip": "Equip",
"unequip": "Unequip",
"animalSkins": "Animal Skins",
"str": "STR",
"con": "CON",
"per": "PER",
"int": "INT",
"notEnoughAttrPoints": "You don't have enough Stat Points.",
"str": "LAK",
"con": "KAT",
"per": "UNA",
"int": "TAL",
"notEnoughAttrPoints": "Walá kang sapát na Stat Points.",
"classNotSelected": "You must select Class before you can assign Stat Points.",
"style": "Style",
"style": "Tabas",
"facialhair": "Facial",
"photo": "Photo",
"info": "Info",
"joined": "Joined",
"totalLogins": "Total Check Ins",
"latestCheckin": "Latest Check In",
"editProfile": "Edit Profile",
"challengesWon": "Challenges Won",
"questsCompleted": "Quests Completed",
"headAccess": "Head Access.",
"backAccess": "Back Access.",
"bodyAccess": "Body Access.",
"mainHand": "Main-Hand",
"offHand": "Off-Hand",
"photo": "Larawan",
"info": "Mga Nalalaman Natin",
"joined": "Lumahók",
"totalLogins": "Pangkalahatang Panunuluyan",
"latestCheckin": "Pinakahulíng Pagtulóy",
"editProfile": "Iakmâ ang Pagpapakilala",
"challengesWon": "Mga Napanalunang Hamon",
"questsCompleted": "Mga Natapos na Pakikipagsápalarán",
"headAccess": "Dagdág sa Ulo",
"backAccess": "Dagdág sa Likód",
"bodyAccess": "Dagdág sa Katawán",
"mainHand": "Pangunahing",
"offHand": "Pangalawang",
"statPoints": "Stat Points",
"pts": "pts",
"chatCastSpellUser": "<%= username %> casts <%= spell %> sa <%= target %>.",
+1 -1
View File
@@ -200,7 +200,7 @@
"hatchingPotionEmber": "Baga",
"hatchingPotionThunderstorm": "Bagyó",
"hatchingPotionGhost": "Multó",
"hatchingPotionRoyalPurple": "Maharlikáng Ube",
"hatchingPotionRoyalPurple": "Kulay Maharlikáng Ube",
"hatchingPotionHolly": "Asebo",
"hatchingPotionCupid": "Kúpidó",
"hatchingPotionShimmer": "Makináng",
+92 -58
View File
@@ -890,7 +890,7 @@
"headSpecialDandyHatNotes": "What a merry chapeau! You'll look quite fine enjoying a stroll in it. Nagtataás ng Pangangatawán ng <%= con %>.",
"headSpecialKabutoText": "Kabuto",
"headSpecialKabutoNotes": "This helm is functional and beautiful! Your enemies will become distracted admiring it. Nagtataás ng Katalinuhan ng <%= int %>.",
"headSpecialNamingDay2017Text": "Royal Purple Gryphon Helm",
"headSpecialNamingDay2017Text": "Kulay Maharlikáng Ube na Gryphon Helm",
"headSpecialNamingDay2017Notes": "Happy Naming Day! Wear this fierce and feathery helm as you celebrate Habitica. Waláng pakinabang.",
"headSpecialTurkeyHelmBaseText": "Turkey Helm",
"headSpecialTurkeyHelmBaseNotes": "Your Turkey Day look will be complete when you don this beaked helm! Waláng pakinabang.",
@@ -906,7 +906,7 @@
"headSpecialCandycaneNotes": "This is the most delicious hat in the world. It's also known to appear and disappear mysteriously. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2013-2014.",
"headSpecialSnowflakeText": "Snowflake Crown",
"headSpecialSnowflakeNotes": "The wearer of this crown is never cold. Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2013-2014.",
"headSpecialSpringRogueText": "Stealthy Kitty Mask",
"headSpecialSpringRogueText": "Alapusà na Malapusang Panakíp sa Mukhâ",
"headSpecialSpringRogueNotes": "Nobody will EVER guess that you are a cat burglar! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2014.",
"headSpecialSpringWarriorText": "Clover-steel Helmet",
"headSpecialSpringWarriorNotes": "Welded from sweet meadow clover, this helmet can resist even the mightiest blow. Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2014.",
@@ -932,7 +932,7 @@
"headSpecialFallHealerNotes": "Highly sanitary and very fashionable. Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2014.",
"headSpecialNye2014Text": "Silly Party Hat",
"headSpecialNye2014Notes": "You've received a Silly Party Hat! Wear it with pride while ringing in the New Year! Waláng pakinabang.",
"headSpecialWinter2015RogueText": "Icicle Drake Mask",
"headSpecialWinter2015RogueText": "Panakíp sa Mukhâ na Anyóng Dragón sa Yelo",
"headSpecialWinter2015RogueNotes": "You are truly, definitely, absolutely a genuine Icicle Drake. You are not infiltrating the Icicle Drake hives. You have no interest at all in the hoards of riches rumored to lie in their frigid tunnels. Rawr. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2014-2015.",
"headSpecialWinter2015WarriorText": "Gingerbread Helm",
"headSpecialWinter2015WarriorNotes": "Think, think, think as hard as you can. Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2014-2015.",
@@ -974,7 +974,7 @@
"headSpecialWinter2016MageNotes": "Keeps the snow out of your eyes while you're casting spells. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2015-2016.",
"headSpecialWinter2016HealerText": "Fairy Wing Helm",
"headSpecialWinter2016HealerNotes": "Thesewingsfluttersoquicklythattheyblur! Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2015-2016.",
"headSpecialSpring2016RogueText": "Good Doggy Mask",
"headSpecialSpring2016RogueText": "Panakíp sa Mukhâ na Anyóng Mabaít na Aso",
"headSpecialSpring2016RogueNotes": "Aww, what a cute puppy! Come here and let me pet your head. ...Hey, where did all my Gold go? Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2016.",
"headSpecialSpring2016WarriorText": "Mouse Guard Helm",
"headSpecialSpring2016WarriorNotes": "Never again shall you be bopped on the head! Let them try! Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2016.",
@@ -1009,7 +1009,7 @@
"headSpecialWinter2017HealerText": "Sparkling Blossom Helm",
"headSpecialWinter2017HealerNotes": "These glittering petals focus brainpower! Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2016-2017.",
"headSpecialSpring2017RogueText": "Sneaky Bunny Helm",
"headSpecialSpring2017RogueNotes": "This mask will prevent your cuteness from giving you away as you sneak up on Dailies (or clovers)! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2017.",
"headSpecialSpring2017RogueNotes": "Mapipigilan nitó na maibunyág ang kagigil-gigil na mukhâ mo sa sinumang makakakità habang pumupuslít ka sa iyóng mga Pang-Araw-Araw na Gawain (o <i>clovers</i>)! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2017.",
"headSpecialSpring2017WarriorText": "Feline Helm",
"headSpecialSpring2017WarriorNotes": "Protect your adorable, fuzzy noggin with this finely decorated helm. Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2017.",
"headSpecialSpring2017MageText": "Canine Conjuror Hat",
@@ -1059,9 +1059,9 @@
"headSpecialSummer2018HealerText": "Merfolk Monarch Crown",
"headSpecialSummer2018HealerNotes": "Adorned with aquamarine, this finned diadem marks leadership of folk, fish, and those who are a bit of both! Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2018.",
"headSpecialFall2018RogueText": "Alter Ego Face",
"headSpecialFall2018RogueNotes": "Most of us hide away our inward struggles. This mask shows that we all experience tension between our good and bad impulses. Plus it comes with a sweet hat! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2018.",
"headSpecialFall2018RogueNotes": "Itinatagò ng karamihan sa atin ang mga bagay-bagay na nagpápabalisâ sa atin. Ibinubunyág ng panakíp mukhâ na itó ang mga karanasáng lahát tayo ng pagdadalawáng isip sa pagitan ng ating mabubuti at masásamáng impulses. Plus it comes with a sweet hat! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2018.",
"headSpecialFall2018WarriorText": "Minotaur Visage",
"headSpecialFall2018WarriorNotes": "This fearsome mask shows you can really take your tasks by the horns! Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2018.",
"headSpecialFall2018WarriorNotes": "Nagpápakità ang katakot-takot na panakíp mukhâ na ito na bulugan at buóng tapang mong lúlupigin ang iyóng mga gawain! Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2018.",
"headSpecialFall2018MageText": "Candymancer's Hat",
"headSpecialFall2018MageNotes": "This pointy hat is imbued with powerful spells of sweetness. Careful, if it gets wet it may become sticky! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2018..",
"headSpecialFall2018HealerText": "Ravenous Helm",
@@ -1098,7 +1098,7 @@
"headMystery201505Notes": "The green plume on this iron helm waves proudly. Waláng pakinabang. May 2015 Subscriber Item.",
"headMystery201508Text": "Cheetah Hat",
"headMystery201508Notes": "This cozy cheetah hat is very fuzzy! Waláng pakinabang. August 2015 Subscriber Item.",
"headMystery201509Text": "Werewolf Mask",
"headMystery201509Text": "Werewolf na Panakíp sa Mukhâ",
"headMystery201509Notes": "This IS a mask, right? Waláng pakinabang. September 2015 Subscriber Item.",
"headMystery201511Text": "Log Crown",
"headMystery201511Notes": "Count the number of rings to learn how old this crown is. Waláng pakinabang. November 2015 Subscriber Item.",
@@ -1220,7 +1220,7 @@
"headArmoireFalconerCapNotes": "This jaunty cap helps you better understand birds of prey. Nagtataás ng Katalinuhan ng <%= int %>. Mahiwagang Kabán: Falconer Set (Iká-2 ng 3).",
"headArmoireVermilionArcherHelmText": "Vermilion Archer Helm",
"headArmoireVermilionArcherHelmNotes": "The magic ruby in this helm will help you aim with laser focus! Nagtataás ng Pandamá ng <%= per %>. Mahiwagang Kabán: Vermilion Archer Set (Iká-3 ng 3).",
"headArmoireOgreMaskText": "Ogre Mask",
"headArmoireOgreMaskText": "Panakíp Mukhâ ng Ogre",
"headArmoireOgreMaskNotes": "Your enemies will run for the hills when they see an Ogre coming their way! Nagtataás ng Pangangatawán at Lakás ng <%= attrs %> bawát isá. Mahiwagang Kabán: Ogre Outfit (Iká-1 ng 3).",
"headArmoireIronBlueArcherHelmText": "Iron Blue Archer Helm",
"headArmoireIronBlueArcherHelmNotes": "Hard-headed? No, you're just well protected. Nagtataás ng Pangangatawán ng <%= con %>. Mahiwagang Kabán: Iron Archer Set (Iká-1 ng 3).",
@@ -1540,9 +1540,9 @@
"backMystery201805Text": "Phenomenal Peacock Tail",
"backMystery201805Notes": "This gorgeous feathery tail is perfect for a strut down a lovely garden path! Waláng pakinabang. May 2018 Subscriber Item.",
"backSpecialWonderconRedText": "Mighty Cape",
"backSpecialWonderconRedNotes": "Swishes with strength and beauty. Waláng pakinabang. Special Edition Convention Item.",
"backSpecialWonderconRedNotes": "Swishes with strength and beauty. Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"backSpecialWonderconBlackText": "Sneaky Cape",
"backSpecialWonderconBlackNotes": "Spun of shadows and whispers. Waláng pakinabang. Special Edition Convention Item.",
"backSpecialWonderconBlackNotes": "Spun of shadows and whispers. Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"backSpecialTakeThisText": "Take This Wings",
"backSpecialTakeThisNotes": "These wings were earned by participating in a sponsored Challenge made by Take This. Congratulations! Nagtataás ng Lahát ng mga Katangian ng <%= attrs %>.",
"backSpecialSnowdriftVeilText": "Snowdrift Veil",
@@ -1574,11 +1574,11 @@
"bodyBase0Text": "No Body Accessory",
"bodyBase0Notes": "No Body Accessory.",
"bodySpecialWonderconRedText": "Ruby Collar",
"bodySpecialWonderconRedNotes": "An attractive ruby collar! Waláng pakinabang. Special Edition Convention Item.",
"bodySpecialWonderconRedNotes": "An attractive ruby collar! Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"bodySpecialWonderconGoldText": "Gintóng Tubong",
"bodySpecialWonderconGoldNotes": "An attractive gold collar! Waláng pakinabang. Special Edition Convention Item.",
"bodySpecialWonderconGoldNotes": "An attractive gold collar! Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"bodySpecialWonderconBlackText": "Ebony Collar",
"bodySpecialWonderconBlackNotes": "An attractive ebony collar! Waláng pakinabang. Special Edition Convention Item.",
"bodySpecialWonderconBlackNotes": "An attractive ebony collar! Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"bodySpecialTakeThisText": "Take This Pauldrons",
"bodySpecialTakeThisNotes": "These pauldrons were earned by participating in a sponsored Challenge made by Take This. Congratulations! Nagtataás ng Lahát ng mga Katangian ng <%= attrs %>.",
"bodySpecialAetherAmuletText": "Aether Amulet",
@@ -1595,7 +1595,7 @@
"bodySpecialSummer2015MageNotes": "This buckle adds no power at all, but it's shiny. Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2015.",
"bodySpecialSummer2015HealerText": "Sailor's Neckerchief",
"bodySpecialSummer2015HealerNotes": "Yo ho ho? No, no, no! Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2015.",
"bodySpecialNamingDay2018Text": "Royal Purple Gryphon Cloak",
"bodySpecialNamingDay2018Text": "Kulay Maharlikáng Ube na Gryphon Cloak",
"bodySpecialNamingDay2018Notes": "Happy Naming Day! Wear this fancy and feathery cloak as you celebrate Habitica. Waláng pakinabang.",
"bodyMystery201705Text": "Folded Feathered Fighter Wings",
"bodyMystery201705Notes": "These folded wings don't just look snazzy: they will give you the speed and agility of a gryphon! Waláng pakinabang. May 2017 Subscriber Item.",
@@ -1695,34 +1695,34 @@
"headAccessoryArmoireComicalArrowNotes": "This whimsical item sure is good for a laugh! Nagtataás ng Lakás ng <%= str %>. Mahiwagang Kabán: Bukód na Kagamitán.",
"headAccessoryArmoireGogglesOfBookbindingText": "Goggles of Bookbinding",
"headAccessoryArmoireGogglesOfBookbindingNotes": "These goggles will help you zero in on any task, large or small! Nagtataás ng Pandamá ng <%= per %>. Mahiwagang Kabán: Bookbinder Set (Iká-1 ng 4).",
"eyewear": "Eyewear",
"eyewear": "Suót sa Matá",
"eyewearCapitalized": "Eyewear",
"eyewearBase0Text": "No Eyewear",
"eyewearBase0Notes": "No Eyewear.",
"eyewearSpecialBlackTopFrameText": "Black Standard Eyeglasses",
"eyewearSpecialBlackTopFrameNotes": "Glasses with a black frame above the lenses. Waláng pakinabang.",
"eyewearSpecialBlueTopFrameText": "Blue Standard Eyeglasses",
"eyewearSpecialBlueTopFrameNotes": "Glasses with a blue frame above the lenses. Waláng pakinabang.",
"eyewearSpecialGreenTopFrameText": "Green Standard Eyeglasses",
"eyewearSpecialGreenTopFrameNotes": "Glasses with a green frame above the lenses. Waláng pakinabang.",
"eyewearSpecialPinkTopFrameText": "Pink Standard Eyeglasses",
"eyewearSpecialPinkTopFrameNotes": "Glasses with a pink frame above the lenses. Waláng pakinabang.",
"eyewearSpecialRedTopFrameText": "Red Standard Eyeglasses",
"eyewearSpecialRedTopFrameNotes": "Glasses with a red frame above the lenses. Waláng pakinabang.",
"eyewearSpecialWhiteTopFrameText": "White Standard Eyeglasses",
"eyewearSpecialWhiteTopFrameNotes": "Glasses with a white frame above the lenses. Waláng pakinabang.",
"eyewearSpecialYellowTopFrameText": "Yellow Standard Eyeglasses",
"eyewearSpecialYellowTopFrameNotes": "Glasses with a yellow frame above the lenses. Waláng pakinabang.",
"eyewearSpecialAetherMaskText": "Aether Mask",
"eyewearSpecialAetherMaskNotes": "This mask has a mysterious history. Nagtataás ng Katalinuhan ng <%= int %>.",
"eyewearSpecialSummerRogueText": "Roguish Eyepatch",
"eyewearSpecialSummerRogueNotes": "It doesn't take a scallywag to see how stylish this is! Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2014.",
"eyewearSpecialSummerWarriorText": "Dashing Eyepatch",
"eyewearSpecialSummerWarriorNotes": "It doesn't take a rapscallion to see how stylish this is! Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2014.",
"eyewearSpecialWonderconRedText": "Mighty Mask",
"eyewearSpecialWonderconRedNotes": "What a powerful face accessory! Waláng pakinabang. Special Edition Convention Item.",
"eyewearSpecialWonderconBlackText": "Sneaky Mask",
"eyewearSpecialWonderconBlackNotes": "Your motives are definitely legitimate. Waláng pakinabang. Special Edition Convention Item.",
"eyewearBase0Text": "Waláng Suót sa Matá",
"eyewearBase0Notes": "Waláng Suót sa Matá.",
"eyewearSpecialBlackTopFrameText": "Pamantayang Salamín sa Matá na Kulay Itím",
"eyewearSpecialBlackTopFrameNotes": "Salamín na may balangkás na kulay itím sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialBlueTopFrameText": "Pamantayang Salamín sa Matá na Kulay Bugháw",
"eyewearSpecialBlueTopFrameNotes": "Salamín na may balangkás na kulay bugháw sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialGreenTopFrameText": "Pamantayang Salamín sa Matá na Kulay Luntian",
"eyewearSpecialGreenTopFrameNotes": "Salamín na may balangkás na kulay luntian sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialPinkTopFrameText": "Pamantayang Salamín sa Matá na Kulay Kalimbahín",
"eyewearSpecialPinkTopFrameNotes": "Salamín na may balangkás na kulay kalimbahín sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialRedTopFrameText": "Pamantayang Salamín sa Matá na Kulay Pulá",
"eyewearSpecialRedTopFrameNotes": "Salamín na may balangkás na kulay pulá sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialWhiteTopFrameText": "Pamantayang Salamín sa Matá na Kulay Putî",
"eyewearSpecialWhiteTopFrameNotes": "Salamín na may balangkás na kulay putî sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialYellowTopFrameText": "Pamantayang Salamín sa Matá na Kulay Diláw",
"eyewearSpecialYellowTopFrameNotes": "Salamín na may balangkás na kulay diláw sa itaás ng mga lente. Waláng pakinabang.",
"eyewearSpecialAetherMaskText": "Panakíp Mukhâ ng Aether",
"eyewearSpecialAetherMaskNotes": "Ang panakíp mukhâ na ito ay may kasaysayang kataká-taká. Nagtataás ng Katalinuhan ng <%= int %>.",
"eyewearSpecialSummerRogueText": "Haragang Tapal sa Matá",
"eyewearSpecialSummerRogueNotes": "Hindí kinakailangáng magíng isáng balasubas upang makitang napakauso nitó! Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2014.",
"eyewearSpecialSummerWarriorText": "Magarang Tapal sa Mata",
"eyewearSpecialSummerWarriorNotes": "Hindí kinakailangáng magíng isáng walang hiyâ upang makitang napakauso nitó! Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2014.",
"eyewearSpecialWonderconRedText": "Panakíp Mukhâ na Matibay",
"eyewearSpecialWonderconRedNotes": "Napakalakás ng abubot na itó sa mukhá! Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"eyewearSpecialWonderconBlackText": "Panakíp Mukhâ na Mapanlinláng",
"eyewearSpecialWonderconBlackNotes": "Ang mga kadáhilanan mo ay tiyák na alínsunod sa batás. Waláng pakinabang. Natatanging Tampók na Limbág na Kagamitán sa Isáng Kapulungan.",
"eyewearMystery201503Text": "Aquamarine Eyewear",
"eyewearMystery201503Notes": "Don't get poked in the eye by these shimmering gems! Waláng pakinabang. March 2015 Subscriber Item.",
"eyewearMystery201506Text": "Neon Snorkel",
@@ -1735,9 +1735,9 @@
"eyewearMystery301404Notes": "No eyewear could be fancier than a pair of goggles - except, perhaps, for a monocle. Waláng pakinabang. April 3015 Subscriber Item.",
"eyewearMystery301405Text": "Monocle",
"eyewearMystery301405Notes": "No eyewear could be fancier than a monocle - except, perhaps, for a pair of goggles. Waláng pakinabang. July 3015 Subscriber Item.",
"eyewearMystery301703Text": "Peacock Masquerade Mask",
"eyewearMystery301703Text": "Panakíp Mukhâ ng Peacock Masquerade",
"eyewearMystery301703Notes": "Perfect for a fancy masquerade or for stealthily moving through a particularly well-dressed crowd. Waláng pakinabang. March 3017 Subscriber Item.",
"eyewearArmoirePlagueDoctorMaskText": "Plague Doctor Mask",
"eyewearArmoirePlagueDoctorMaskText": "Panakíp Mukhâ ng Plague Doctor",
"eyewearArmoirePlagueDoctorMaskNotes": "An authentic mask worn by the doctors who battle the Plague of Procrastination. Nagtataás ng Pangangatawán at Katalinuhan ng <%= attrs %> bawat isá. Mahiwagang Kabán: Plague Doctor Set (Iká-2 ng 3).",
"eyewearArmoireGoofyGlassesText": "Goofy Glasses",
"eyewearArmoireGoofyGlassesNotes": "Perfect for going incognito or just making your partymates giggle. Nagtataás ng Pandamá ng <%= per %>. Mahiwagang Kabán: Bukód na Kagamitán.",
@@ -1893,7 +1893,7 @@
"armorSpecialSpring2022HealerNotes": "Drive away fears and nightmares simply by wearing this green gem garment. Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2022.",
"headSpecialWinter2020RogueNotes": "A Rogue walks down the street in that hat, people know they're not afraid of anything. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2019-2020.",
"headSpecialFall2020WarriorNotes": "The Warrior who once wore this never flinched from the weightiest tasks! But others may flinch from you when you wear it... Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2020.",
"headSpecialWinter2021RogueNotes": "A rogue can go unseen in the woods with a mask like this. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2020-2021.",
"headSpecialWinter2021RogueNotes": "Maaaring hindi matiktikán ang isang haragán na nasá kakahuyán kung siyá ay may suót panakíp mukhâ kagaya nitó. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2020-2021.",
"headSpecialWinter2021MageNotes": "Let your mind get carried away, while you feel safely tucked in, under this huge homely hood. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2020-2021.",
"headSpecialSpring2021WarriorNotes": "Don't fear! The sunstone in this helm will help you bring to light those deepest, darkest red to-dos. Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2021.",
"headSpecialSpring2021HealerNotes": "Weep not, friends! A Healer is here to soothe your suffering! Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2021.",
@@ -1901,13 +1901,13 @@
"headSpecialFall2021MageNotes": "The tentacles surrounding the mouth grab prey and hold its delicious thoughts close for you to savor. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2021.",
"headSpecialSpring2022WarriorNotes": "Tut tut, it looks like rain! Stand tall and pull up your hood to stay dry. Nagtataás ng Lakás ng <%= str %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2022.",
"headSpecialSpring2022HealerNotes": "This mysterious helmet preserves your privacy as you tackle your tasks. Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2022.",
"headSpecialFall2020RogueNotes": "Look twice, act once: this mask makes it easy. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2020.",
"headSpecialFall2020RogueNotes": "Tumingín ng dalawáng ulit; kumilos ng isá: pinápadalî ng panakíp mukhâ itó. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2020.",
"headSpecialWinter2021HealerNotes": "A surprising amount of heat escapes through the head! Not if you're wearing this thick hood and goggles, though. There'll be no icicles on YOUR eyelashes! Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2020-2021.",
"headSpecialSummer2021MageNotes": "The pinhole eyes set upon this speckled cap may not improve your underwater vision all that much, but they sure can unnerve your opponents. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2021.",
"headSpecialFall2021RogueNotes": "Welp, you're stuck. Now you are doomed to roam dungeon corridors, collecting debris. DOOOOMED! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2021.",
"headSpecialSpring2022RogueNotes": "Be as clever as a magpie when wearing this mask. Maybe youll even be able to whistle, trill, and mimic as well as one, too. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2022.",
"headSpecialSpring2022RogueNotes": "Magíng kasíngtalino ang isáng uwák tuwíng suót mo ang panakíp mukhâ na itó. Marahil ay magagawà mo ring sumipol, magppabilís na pangínginíg ng dila, at gumaya tulad ng isá. Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2022.",
"headSpecialSummer2021RogueNotes": "It's bold, bright, and funny. Just like you! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2021.",
"headSpecialFall2021HealerNotes": "Your own magic turns your hair into shocking, bright flames when you don this mask. Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2021.",
"headSpecialFall2021HealerNotes": "Ginágawáng nakasísindák na apóy na ubod ng liwanag ng iyóng sariling kapángyarihan ang iyóng buhók sa tuwíng suót mo ang panakíp mukhâ na itó. Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2021.",
"headSpecialWinter2022HealerNotes": "Minute imperfections and impurities send the arms of this headdress branching out in unpredictable directions. It's symbolic! And also very, very pretty. Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2021-2022.",
"headSpecialFall2020HealerNotes": "The dreadful pallor of this skull-like visage shines as a warning to all mortals: Time is fleeting! Attend to thy deadlines, before it is too late! Nagtataás ng Katalinuhan ng <%= int %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2020.",
"headSpecialWinter2022RogueNotes": "What? Huh? There's a Rogue where? I'm sorry, I can't hear anything over these fireworks! Nagtataás ng Pandamá ng <%= per %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2021-2022.",
@@ -1940,9 +1940,9 @@
"shieldSpecialSpring2020HealerNotes": "Ward off those musty old To Do's with this sweet-smelling shield. Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2020.",
"shieldSpecialWinter2021WarriorNotes": "Tell all your friends about the REALLY big fish you've caught! But whether you tell them he's made of plastic and sings songs is up to you. Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Taglamíg ng 2020-2021.",
"shieldSpecialSpring2021HealerNotes": "A leafy green bundle that heralds shelter and compassion. Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2021.",
"eyewearSpecialFall2019HealerNotes": "Steel yourself against the toughest foes with this inscrutable mask. Waláng pakinabang.Biláng na Limbág na Kasangkapan ng Taglagás ng 2019.",
"eyewearSpecialFall2019HealerNotes": "Pagtibayin mo ang iyóng sarilì laban sa mga pinakámahíhigpít na kalaban gamit ang hindi mawaring panakíp mukhâ na itó. Waláng pakinabang.Biláng na Limbág na Kasangkapan ng Taglagás ng 2019.",
"shieldSpecialFall2021WarriorNotes": "This festive shield with its crooked smile will both protect you and light your way on a dark night. It nicely doubles for a head, should you need one! Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Taglagás ng 2021.",
"eyewearSpecialFall2019RogueNotes": "You'd think a full mask would protect your identity better, but people tend to be too awestruck by its stark design to take note of any identifying features left revealed. Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Taglagás ng 2019.",
"eyewearSpecialFall2019RogueNotes": "Áakalain mong higít pang makápagpapatagò ng pagkakakilanlan mo ang isang buong panakíp mukhâ, ngunit kadalasang nabíbighani ang mga tao sa matindíng pagkákabuó nito upang makápansin ng anumang tampok na pagkakakilanlan na naiwan. Waláng pakinabang. Biláng na Limbág na Kasangkapan ng Taglagás ng 2019.",
"shieldSpecialSummer2021WarriorNotes": "This enchanted water droplet soaks up magic and resists the blows of the reddest Dailies. Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2021.",
"shieldSpecialSpring2022WarriorNotes": "Ever had one of those days when it seems like a raincloud is following you around? Well, consider yourself lucky, because the prettiest flowers will soon be growing at your feet! Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Tagsiból ng 2022.",
"shieldSpecialSummer2021HealerNotes": "So much potential in this shield! But for now you can use it to protect your friends. Nagtataás ng Pangangatawán ng <%= con %>. Biláng na Limbág na Kasangkapan ng Tag-aráw ng 2021.",
@@ -2112,7 +2112,7 @@
"bodyMystery202002Notes": "For when your heart is warm but the breezes of February are brisk. Waláng pakinabang. February 2020 Subscriber Item.",
"bodyMystery202003Notes": "They're like shoulder pads that are on a whole other level. Waláng pakinabang. March 2020 Subscriber Item.",
"headAccessoryMystery202009Notes": "These feathery appendages will help you find your way even in the dark of night. Waláng pakinabang. September 2020 Subscriber Item.",
"eyewearSpecialBlackHalfMoonNotes": "Glasses with a black frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialBlackHalfMoonNotes": "Salamín na may balangkás na kulay itím at gasukláy na lente. Waláng pakinabang.",
"eyewearMystery201902Notes": "This mysterious mask hides your identity but not your winning smile. Waláng pakinabang. February 2019 Subscriber Item.",
"eyewearMystery202204BNotes": "What's your mood today? Express yourself with these fun screens. Waláng pakinabang. April 2022 Subscriber Item.",
"headMystery201903Notes": "Some may call you an egghead, but that's OK because you know how to take a yolk. Waláng pakinabang. March 2019 Subscriber Item.",
@@ -2124,7 +2124,7 @@
"backMystery202012Notes": "The snowy feathers of these wings will grant you the speed of a wintry gale. Waláng pakinabang. December 2020 Subscriber Item.",
"backSpecialNamingDay2020Notes": "Happy Naming Day! Swish this fiery, pixely tail about as you celebrate Habitica. Waláng pakinabang.",
"headAccessoryMystery201906Notes": "Legend has it these finny ears help merfolk hear the calls and songs of all the denizens of the deep! Waláng pakinabang. June 2019 Subscriber Item.",
"eyewearSpecialYellowHalfMoonNotes": "Glasses with a yellow frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialYellowHalfMoonNotes": "Salamín na may balangkás na kulay diláw at gasukláy na lente. Waláng pakinabang.",
"weaponSpecialSummer2020RogueText": "Talim na Pangil",
"weaponMystery202002Notes": "An accessory that lends you an air of mystery and romance. Sun protection is a bonus! Waláng pakinabang. February 2020 Subscriber Item.",
"headMystery201912Notes": "This glittering snowflake grants you resistance to the biting cold no matter how high you fly! Waláng pakinabang. December 2019 Subscriber Item.",
@@ -2166,10 +2166,10 @@
"headMystery202001Notes": "Your hearing will be so sharp, you'll hear the stars twinkling and the moon spinning. Waláng pakinabang. January 2020 Subscriber Item.",
"weaponSpecialSpring2020RogueText": "Talim na Yarì sa Lapis Lazuli",
"armorMystery201904Notes": "This shining garment has opals sewn into the front panel to grant you arcane powers and a fabulous look. Waláng pakinabang. April 2019 Subscriber Item.",
"eyewearSpecialPinkHalfMoonNotes": "Glasses with a pink frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialPinkHalfMoonNotes": "Salamín na may balangkás na kulay kalimbahín at gasukláy na lente. Waláng pakinabang.",
"armorMystery201909Notes": "Your tough exterior is protective, but it's still best to keep an eye out for squirrels... Waláng pakinabang. September 2019 Subscriber Item.",
"shieldMystery201902Notes": "This glittery paper forms magic hearts that slowly drift and dance in the air. Waláng pakinabang. February 2019 Subscriber Item.",
"eyewearSpecialBlueHalfMoonNotes": "Glasses with a blue frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialBlueHalfMoonNotes": "Salamín na may balangkás na kulay bugháw at gasukláy na lente. Waláng pakinabang.",
"headMystery202108Notes": "You're looking super fresh, just sayin'. Waláng pakinabang. August 2021 Subscriber Item.",
"armorMystery201906Notes": "We will spare you a pun about “playing koi.” Oh wait, oops. Waláng pakinabang. June 2019 Subscriber Item.",
"armorSpecialBirthday2022Notes": "Happy Birthday, Habitica! Wear these Proposterous Party Robes to celebrate this wonderful day. Waláng pakinabang.",
@@ -2178,10 +2178,10 @@
"headAccessoryMystery202005Notes": "With such mighty horns, what creature dares challenge you? Waláng pakinabang. May 2020 Subscriber Item.",
"eyewearMystery202201Notes": "Ring in the new year with an air of mystery in this stylish feathered mask. Waláng pakinabang. January 2022 Subscriber Item.",
"eyewearMystery202208Notes": "Lull your enemies into a false sense of security with these terrifyingly cute peepers. Waláng pakinabang. August 2022 Subscriber Item.",
"eyewearSpecialRedHalfMoonNotes": "Glasses with a red frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialRedHalfMoonNotes": "Salamín na may balangkás na kulay pulá at gasukláy na lente. Waláng pakinabang.",
"headMystery202202Notes": "You gotta have blue hair! Waláng pakinabang. February 2022 Subscriber Item.",
"eyewearSpecialGreenHalfMoonNotes": "Glasses with a green frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialWhiteHalfMoonNotes": "Glasses with a white frame and crescent lenses. Waláng pakinabang.",
"eyewearSpecialGreenHalfMoonNotes": "Salamín na may balangkás na kulay luntian at gasukláy na lente. Waláng pakinabang.",
"eyewearSpecialWhiteHalfMoonNotes": "Salamín na may balangkás na kulay putî at gasukláy na lente. Waláng pakinabang.",
"eyewearSpecialKS2019Notes": "Bold as a gryphon's... hmm, gryphons don't have visors. It reminds you to... oh, who are we kidding, it just looks cool! Waláng pakinabang.",
"eyewearMystery201907Notes": "Look awesome while protecting your eyes from harmful UV rays! Waláng pakinabang. July 2019 Subscriber Item.",
"armorMystery202207Notes": "This armor will have you looking glamorous and gelatinous. Waláng pakinabang. July 2022 Subscriber Item.",
@@ -2227,5 +2227,39 @@
"weaponArmoirePotionGoldenText": "Panggayák Gintó na Mahiwagang Langís",
"shieldArmoireTreasureMapNotes": "X marks the spot! You never know what youll find when you follow this handy map to fabled treasures: gold, jewels, relics, or perhaps a petrified orange? Increases Strength and Intelligence by <%= attrs %> each. Mahiwagang Kabán: Fancy Pirate Set (Iká-3 ng 3).",
"weaponArmoirePushBroomNotes": "Take this tidying tool on your adventures and always be able to sweep a sooty stoop or clear cobwebs from corners. Increases Strength and Intelligence by <%= attrs %> each. Mahiwagang Kabán: Cleaning Supplies Set (Iká-1 ng 3)",
"weaponArmoireFeatherDusterNotes": "Let these fancy feathers fly over all your old objects to make them shine like new. Just beware of the disturbed dust so you dont sneeze! Increases Constitution and Perception by <%= attrs %> each. Mahiwagang Kabán: Cleaning Supplies Set (Iká-2 ng 3)"
"weaponArmoireFeatherDusterNotes": "Let these fancy feathers fly over all your old objects to make them shine like new. Just beware of the disturbed dust so you dont sneeze! Increases Constitution and Perception by <%= attrs %> each. Mahiwagang Kabán: Cleaning Supplies Set (Iká-2 ng 3)",
"eyewearSpecialRedHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Pulá",
"eyewearSpecialWhiteHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Putî",
"eyewearSpecialAnniversaryText": "Panakíp Mukhâ ng Bayani sa Habitica",
"eyewearSpecialAnniversaryNotes": "Magmasíd na parang isáng Bayani ng Habitica—ikáw! Waláng pakinabang. Natatanging Tampók na Limbág na Kasangkapan ng Iká-10ng Pagdiriwang ng Kaárawán.",
"eyewearSpecialPinkHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Kalimbahín",
"eyewearSpecialBlackHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Itím",
"eyewearSpecialBlueHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Bugháw",
"eyewearSpecialYellowHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Diláw",
"eyewearSpecialGreenHalfMoonText": "Salamín sa Matá na Hugis Kalahating Buwán at Kulay Luntian",
"backSpecialAnniversaryNotes": "Hayaang paliparín sa hangin ang mapagtaás-noóng balabal na itó at ipágmalakí sa lahát na isá kang Bayani ng Habitica. Waláng pakinabang. Natatanging Tampók na Limbág na Kasangkapan ng Iká-10ng Pagdiriwang ng Kaárawán.",
"bodySpecialAnniversaryNotes": "Ganapang hiyangán ang iyóng nagkákaakmá-akmáng kasuotan na kulay maharlikáng ube gamit itó! Waláng pakinabang. Natatanging Tampók na Limbág na Kasangkapan ng Iká-10ng Pagdiriwang ng Kaárawán.",
"backSpecialNamingDay2020Text": "Kulay Maharlikáng Ube na Gryphon Tail",
"eyewearSpecialFall2019RogueText": "Panakíp Mukhâ na Kulay Putíng Buto",
"eyewearMystery202201Text": "Panakíp Mukhâ ng Midnight Merrymaker",
"eyewearArmoireComedyMaskNotes": "",
"headSpecialFall2022MageText": "Harpy na Panakíp sa Mukhâ",
"headSpecialFall2021HealerText": "Panakíp Mukhâ ng Isáng Tagatawag ng mga Kaluluwà",
"headSpecialSpring2022RogueText": "Panakíp Mukhâ ng Magpie",
"headSpecialFall2019MageText": "Panakíp Mukhâ na Hugis Bungisngís",
"headSpecialFall2020RogueText": "Panakíp sa Mukhâ na Hugis Dalawáng Mukhâ",
"headSpecialFall2022WarriorText": "Panakíp Mukhâ ng Orc",
"headSpecialFall2022MageNotes": "Entrance and lure others close with this magical maiden mask. Increases Perception by <%= per %>. Limited Edition 2022 Fall Gear.",
"headSpecialFall2022HealerText": "Panakíp Mukhâ ng Naninilip",
"headSpecialFall2020HealerText": "Panakíp sa Mukhâ na Hugis Ulo ni Kamatayan",
"headSpecialSummer2021HealerText": "Panakíp Mukhâ na Hugis Kulasisi",
"eyewearMystery201902Text": "Panakíp Mukhâ ng Cryptic Crush",
"eyewearArmoireTragedyMaskNotes": "",
"eyewearArmoireTragedyMaskText": "Panakíp Mukhâ ng Tragedy",
"eyewearSpecialFall2019HealerText": "Itím na Pagmumukhà",
"headSpecialFall2021MageText": "Panakíp sa Mukhâ na Hugis ng Kumakain ng Utak",
"headSpecialWinter2021RogueText": "Panakíp Mukhâ na Hugis Hagnayà",
"headSpecialFall2022RogueText": "Panakíp Mukhâ na Hugis Siyokoy",
"headMystery202012Text": "Panakíp Mukhâ ng Frostfire",
"eyewearArmoireComedyMaskText": "Panakíp Mukhâ ng Comedy"
}
+1 -1
View File
@@ -3,7 +3,7 @@
"foodItemType": "Pagkaing Pang-alagà",
"eggsItemType": "Mga Itlóg",
"hatchingPotionsItemType": "Mga Mahiwagang Langís na Pampápapisâ",
"specialItemType": "Mga Natatanging kagamitán",
"specialItemType": "Mga natatanging kagamitán",
"lockedItem": "Nakakandadong Gamit",
"allItems": "Lahát ng Kagamitán",
"petAndMount": "Alagà at Lulaníng Alagà"
+1 -1
View File
@@ -179,7 +179,7 @@
"spring2019RobinHealerSet": "Robin (Manggagamot)",
"spring2019AmberMageSet": "Amber (Salamangkero)",
"spring2019OrchidWarriorSet": "Orchid (Mandirigma)",
"royalPurpleJackolantern": "Royal Purple Jack-O-Lantern",
"royalPurpleJackolantern": "Kulay Maharlikang Ube na Jack-O-Lantern",
"noLongerAvailable": "Hindi na bukas ang gamit na ito.",
"g1g1Limitations": "Ito ay isang limited time event na magsisimula sa ika-17 ng Disyembre 8:00 AM ET (13:00 UTC) at magtatapos sa ika-7 ng Enero 8:00 PM ET (1:00 UTC). Ang promosyong ito ay magagamit lamang tuwing nireregaluhan ang kapwang Habitican. Kung ikaw at ang iyong nais pagbigyan ay mayroon nang subscription, ang niregalong subscription ay magiging karagdagang buwan ng credit na magagamit lamang pagkatapos makansela o mag-expire ang kasalukuyang subscription.",
"limitations": "Mga Limitasyon",
+1 -1
View File
@@ -20,7 +20,7 @@
"messageTwoHandedEquip": "Wielding <%= twoHandedText %> takes two hands, so <%= offHandedText %> has been unequipped.",
"messageTwoHandedUnequip": "Wielding <%= twoHandedText %> takes two hands, so it was unequipped when you armed yourself with <%= offHandedText %>.",
"messageDropFood": "You've found <%= dropText %>!",
"messageDropEgg": "You've found a <%= dropText %> Egg!",
"messageDropEgg": "Nakahanap ka ng Itlóg ng <%= dropText %>!",
"messageDropPotion": "You've found a <%= dropText %> Hatching Potion!",
"messageDropMysteryItem": "You open the box and find <%= dropText %>!",
"messageAlreadyOwnGear": "You already own this item. Equip it by going to the equipment page.",
+2 -2
View File
@@ -24,12 +24,12 @@
"potion": "<%= potionType %> Potion",
"gryphatrice": "Gryphatrice",
"invisibleAether": "Invisible Aether",
"royalPurpleJackalope": "Royal Purple Jackalope",
"royalPurpleJackalope": "Kulay Maharlikáng Ube na <i>Jackalope</i>",
"hopefulHippogriffMount": "Umaasang Hippogriff",
"hopefulHippogriffPet": "Umaasang Hippogriff",
"magicalBee": "Mahiwagang Bubuyog",
"phoenix": "Fenix",
"royalPurpleGryphon": "Kulay Ube na Maharlikáng Leóng Lawin",
"royalPurpleGryphon": "Kulay Maharlikáng Ube na Leóng Lawin",
"orca": "Orca",
"mammoth": "Mabalahibong Mammoth",
"mantisShrimp": "Tatampál",
+1 -1
View File
@@ -85,5 +85,5 @@
"chatItemQuestFinish": "Nahanap ang lahat ng gamit! Natanggap ng partido ang kanilang gantimpala.",
"chatFindItems": "Nakahanap si <%= username %> ng <%= items %>.",
"chatBossDefeated": "Natalo mo ang <%= bossName %>! Natanggap ng mga miyembro ng mga kapartidong kasama sa quest ang mga gantimpala ng tagumpay.",
"bossDamage": "Nabawasan mo ng buhay ang boss!"
"bossDamage": "Napinsalà mo ang pinunò!"
}
@@ -528,7 +528,7 @@
"questLostMasterclasser2Notes": "The Joyful Reaper drums her bony fingers on some of the books that you brought. “Oh, dear,” the Master of Healers says. “There is a malevolent life essence at work. I might have guessed, considering the attacks by reanimated skulls during each incident.” Her assistant @tricksy.fox brings in a chest, and you are startled to see the contents that @beffymaroo unloads: the very same objects once used by this mysterious Tzina to possess people.<br><br>“Im going to use resonant healing magic to try to make this creature manifest,” the Joyful Reaper says, reminding you that the skeleton is a somewhat unconventional Healer. “Youll need to read the revealed information quickly, in case it breaks loose.”<br><br>As she concentrates, a twisting mist begins to siphon from the books and twine around the objects. Quickly, you flip through the pages, trying to read the new lines of text that are writhing into view. You catch only a few snippets: “Sands of the Timewastes” — “the Great Disaster” —“split into four”— “permanently corrupted”— before a single name catches your eye: Zinnya.<br><br>Abruptly, the pages wrench free from your fingers and shred themselves as a howling creature explodes into being, coalescing around the possessed objects.<br><br>“Its an aVoidant!” the Joyful Reaper shouts, throwing up a protection spell. “Theyre ancient creatures of confusion and obscurity. If this Tzina can control one, she must have a frightening command over life magic. Quickly, attack it before it escapes back into the books!”<br><br>",
"questLostMasterclasser2Completion": "The aVoidant succumbs at last, and you share the snippets that you read.<br><br>“None of those references sound familiar, even for someone as old as I,” the Joyful Reaper says. “Except… the Timewastes are a distant desert at the most hostile edge of Habitica. Portals often fail nearby, but swift mounts could get you there in no time. Lady Glaciate will be glad to assist.” Her voice grows amused. “Which means that the enamored Master of Rogues will undoubtedly tag along.” She hands you the glimmering mask. “Perhaps you should try to track the lingering magic in these items to its source. Ill go harvest some sustenance for your journey.”",
"questLostMasterclasser2Boss": "The a'Voidant",
"questLostMasterclasser2DropEyewear": "Aether Mask (Eyewear)",
"questLostMasterclasser2DropEyewear": "Aether Panakíp Mukhâ (Suót sa Matá)",
"questLostMasterclasser3Text": "The Mystery of the Masterclassers, Part 3: City in the Sands",
"questLostMasterclasser3Notes": "As night unfurls over the scorching sands of the Timewastes, your guides @AnnDeLune, @Kiwibot, and @Katy133 lead you forward. Some bleached pillars poke from the shadowed dunes, and as you approach them, a strange skittering sound echoes across the seemingly-abandoned expanse.<br><br>“Invisible creatures!” says the April Fool, clearly covetous. “Oho! Just imagine the possibilities. This must be the work of a truly stealthy Rogue.”<br><br>“A Rogue who could be watching us,” says Lady Glaciate, dismounting and raising her spear. “If theres a head-on attack, try not to irritate our opponent. I dont want a repeat of the volcano incident.”<br><br>He beams at her. “But it was one of your most resplendent rescues.”<br><br>To your surprise, Lady Glaciate turns very pink at the compliment. She hastily stomps away to examine the ruins.<br><br>“Looks like the wreck of an ancient city,” says @AnnDeLune. “I wonder what…”<br><br>Before she can finish her sentence, a portal roars open in the sky. Wasnt that magic supposed to be nearly impossible here? The hoofbeats of the invisible animals thunder as they flee in panic, and you steady yourself against the onslaught of shrieking skulls that flood the skies.",
"questLostMasterclasser3Completion": "The April Fool surprises the final skull with a spray of sand, and it blunders backwards into Lady Glaciate, who smashes it expertly. As you catch your breath and look up, you see a single flash of someones silhouette moving on the other side of the closing portal. Thinking quickly, you snatch up the amulet from the chest of previously-possessed items, and sure enough, its drawn towards the unseen person. Ignoring the shouts of alarm from Lady Glaciate and the April Fool, you leap through the portal just as it snaps shut, plummeting into an inky swath of nothingness.",
+1 -1
View File
@@ -35,7 +35,7 @@
"attributes": "Stats",
"progress": "Katayuan",
"daily": "Pang-Araw-Araw",
"dailies": "Mga Pang-Araw-Araw",
"dailies": "Mga Pang-Araw-Araw na Gawain",
"dailysDesc": "Madalás umuulit ang mga Pang-Araw-Araw. Piliin ang talatakdaán na pinakamainam para sa iyo!",
"streakCounter": "Streak Counter",
"repeat": "Ulitin",
+1 -1
View File
@@ -143,6 +143,6 @@
"achievementBoneToPickText": "A fait éclore tous les familiers squelettes classiques et de quête !",
"achievementBoneToPickModalText": "Vous avez collecté tous les familiers squelette classiques et de quête !",
"achievementPolarPro": "Pro polaire",
"achievementPolarProText": "A fait éclore tous les familiers polaires : Ours, renard, pingouin, baleine et loup !",
"achievementPolarProText": "A fait éclore toutes les couleurs standard de familiers polaires : Ours, renard, pingouin, baleine et loup !",
"achievementPolarProModalText": "Vous avez collecté tous les familiers polaires !"
}
+25 -1
View File
@@ -749,5 +749,29 @@
"backgroundInsideACrystalText": "L'intérieur d'un cristal",
"backgroundInsideACrystalNotes": "Surveillez depuis l'intérieur d'un cristal.",
"backgroundSnowyVillageText": "Village enneigé",
"backgroundSnowyVillageNotes": "Admirez un village enneigé."
"backgroundSnowyVillageNotes": "Admirez un village enneigé.",
"backgrounds012023": "Ensemble 104 : sorti en janvier 2023",
"backgroundRimeIceText": "Glace givrée",
"backgroundRimeIceNotes": "Admirez de la glace givrée scintillante.",
"backgroundSnowyTempleText": "Temple enneigé",
"backgroundSnowyTempleNotes": "Contemplez un temple enneigé serein.",
"backgroundWinterLakeWithSwansText": "Lac d'hiver avec des cygnes",
"backgroundWinterLakeWithSwansNotes": "Profitez de la nature près d'un lac d'hiver avec des cygnes.",
"eventBackgrounds": "Arrière-plans événementiels",
"backgroundBirthdayBashText": "Fête d'anniversaire",
"backgroundBirthdayBashNotes": "Habitica fait une fête d'anniversaire, et tout le monde est invité !",
"backgrounds022023": "Ensemble 105 : sorti en février 2023",
"backgroundInFrontOfFountainText": "Devant une fontaine",
"backgroundInFrontOfFountainNotes": "Baladez-vous devant une fontaine.",
"backgroundGoldenBirdcageText": "Cage à oiseau dorée",
"backgroundGoldenBirdcageNotes": "Cachez-vous dans une cage à oiseau dorée.",
"backgroundFancyBedroomText": "Chambre fantaisiste",
"backgroundFancyBedroomNotes": "Amusez-vous dans une chambre fantaisiste.",
"backgroundOldTimeyBasketballCourtNotes": "Faites des tirs sur un vieux terrain de basket.",
"backgroundJungleWateringHoleText": "Point d'eau dans la jungle",
"backgroundMangroveForestText": "Mangrove",
"backgrounds032023": "Ensemble 106 : sorti en mars 2023",
"backgroundOldTimeyBasketballCourtText": "Vieux terrain de basket",
"backgroundJungleWateringHoleNotes": "Arrêtez vous pour vous désaltérer à un point d'eau dans la jungle.",
"backgroundMangroveForestNotes": "Explorez les abords d'une mangrove."
}
@@ -4,55 +4,55 @@
"commGuideHeadingWelcome": "Bienvenue sur Habitica !",
"commGuidePara001": "Salutations, aventuriers et aventurières ! Bienvenue en Habitica, le pays de la productivité, de la vie saine et de l'occasionnel griffon ravageur. Nous sommes une joyeuse communauté, faite de personnes serviables qui se soutiennent les unes les autres sur la voie de lamélioration de soi. Pour s'intégrer, il suffit d'avoir une attitude positive, de respecter les autres, et de comprendre que chacun a différentes compétences et limites -- y compris vous ! Les habiticiens et habiticiennes sont patients avec autrui et essaient de s'entraider dès qu'ils le peuvent.",
"commGuidePara002": "Afin que tout le monde se sente bien, heureux et productif dans la communauté, nous avons établi quelques règles de conduite. Nous les avons minutieusement forgées afin de les rendre aussi agréables et faciles à lire que possible. Nous vous enjoignons à prendre le temps de les lire.",
"commGuidePara003": "Ces règles sappliquent à tous les espaces sociaux que nous utilisons, comprenant (mais pas forcément limités à) Trello, GitHub, Weblate et le wiki Habitica sur Fandom. Lorsque les communautés grandissent et changent, leurs règles doivent parfois s'adapter. Si ces règles devaient subir des changement substantiels, vous pourrez le lire sur une annonce de Bailey et/ou sur nos média sociaux !",
"commGuidePara003": "Ces règles sappliquent à tous les espaces sociaux que nous utilisons, comprenant (mais pas forcément limités à) Trello, GitHub, Weblate et le wiki Habitica sur Fandom. Lorsque les communautés grandissent et changent, leurs règles doivent parfois s'adapter. Si les règles listées ici devaient subir des changement substantiels, vous pourrez le lire sur une annonce de Bailey et/ou sur nos média sociaux !",
"commGuideHeadingInteractions": "Interactions dans Habitica",
"commGuidePara015": "Habitica compte deux sortes despaces sociaux : publics et privés. Les espaces publics comprennent la taverne, les guildes publiques, GitHub, Trello et le Wiki. Les espaces privés sont les guildes privées, la messagerie d’équipe et les messages privés. Tous les identifiants et les @pseudos doivent se conformer au code de conduite en espace public. Pour changer votre identifiant et/ou votre @pseudo sur mobile, rendez-vous dans Menu > Paramètres > Profil. Sur le web, allez dans Utilisateur > Paramètres.",
"commGuidePara016": "Lorsque vous naviguez dans les sphères publiques dHabitica, il y a quelques règles générales à suivre afin que tout le monde se sente bien et heureux.",
"commGuideList02A": "<strong>Respectez-vous les uns les autres</strong>. Faites preuve de courtoisie, de gentillesse et de soutien. Souvenez-vous : Les membres d'Habitica proviennent de tout milieu et ont des expériences très différentes. C'est en partie ce qui rend Habitica si sympathique ! Construire une communauté signifie respecter et célébrer nos différences, tout autant que nos similitudes.",
"commGuideList02B": "<strong>Respectez l'ensemble des <a href='/static/terms' target='_blank'>Conditions d'utilisation.</a></strong> dans les espaces publics et privés.",
"commGuideList02B": "<strong>Respectez l'ensemble des <a href='https://habitica.com/static/terms' target='_blank'>Conditions d'utilisation.</a></strong> dans les espaces publics et privés.",
"commGuideList02C": "<strong>Ne postez pas d'images ou de textes violents, menaçants, ou sexuellement explicites/suggestifs, ou qui encouragent à la discrimination, au sectarisme, au racisme, au sexisme, à la haine, au harcèlement ou visant à nuire à un quelconque individu ou groupe</strong>. Pas même en tant que plaisanterie ou meme. Cela inclut les injures aussi bien que les déclarations. Tout le monde na pas le même sens de lhumour, et ce que vous considérez comme une plaisanterie peut être blessant pour une autre personne.",
"commGuideList02D": "<strong>Gardez les discussions à un niveau correct</strong>. Cela signifie entre autre d'éviter les sujets adultes sur les espaces publics. Beaucoup de jeunes utilisent le site, et chacun et chacune d'entre nous vient avec son propre bagage d'expériences. Nous souhaitons que notre communauté soit la plus confortable et la plus inclusive possible.",
"commGuideList02E": "<strong>Évitez les grossièretés. Cela comprend les petits jurons, les grossièretés religieuses qui pourraient être acceptées ailleurs et les insultes abrégées ou masquées.</strong> Nous accueillons des personnes de toutes religions et cultures et voulons nous assurer que toutes se sentent à laise dans les espaces publics. <strong>Si l'équipe de modération d'Habitica vous dit que ce terme est interdit sur le site, cette décision est définitive, même si ce terme ne vous apparaît pas problématique.</strong> De plus, les injures seront traitées très sévèrement car elles contreviennent aux conditions dutilisation.",
"commGuideList02F": "Évitez les discussions longues ou polémiques en dehors de l'arrière-boutique. Si quelqu'un mentionne quelque chose qui est autorisé par les règles mais qui vous blesse, il est normal de le lui faire savoir poliment. Si quelqu'un vous dit que vous l'avez mis mal à l'aise, prenez le temps de réfléchir au lieu de répondre par la colère. Mais si vous sentez qu'une conversation s'enflamme, devient trop émotive ou est blessante, <strong>cessez de répondre. Au lieu de cela, signalez les messages pour nous en informer.</strong> Les modérateurs répondront aussi rapidement que possible. Vous pouvez aussi envoyer un courriel ) <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>, et éventuellement inclure des copies d'écran si nécessaire.",
"commGuideList02G": "<strong>Obtempérez immédiatement aux demandes de l'équipe de modération.</strong> Ceci inclus, sans être limité à : quand elle demande à ce que vous publiiez votre message dans un espace particulier, modifiiez votre profil pour retirer un contenu inadapté, déplaciez la discussion dans un autre endroit, etc. N'essayez pas d'argumenter avec l'équipe de modération. Si vous avez des soucis ou des commentaires à propos de la modération, écrivez à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> pour contacter notre responsable de la communauté.",
"commGuideList02J": "<strong>Ne spammez pas</strong>. Le spam peut inclure, sans être limité à : poster le même commentaire ou la même demande dans de multiples endroits, <strong>poster des liens sans explication ou contexte</strong>, poster des messages incohérents, ou poster le même message à la chaîne. Si le fait que des personnes cliquant sur un lien vous est profitable, vous devez l'indiquer dans le texte de votre message, ou cela sera aussi considéré comme du spam. L'équipe de modération peut décider si quelque chose constitue du spam à sa propre discrétion.",
"commGuideList02E": "<strong>Évitez les grossièretés. Cela comprend les insultes abrégées ou masquées.</strong> Nous accueillons des personnes de toutes religions et cultures et voulons nous assurer que toutes se sentent à laise dans les espaces publics. <strong>Si l'équipe d'administration d'Habitica vous dit que ce terme est interdit sur le site, cette décision est définitive, même si ce terme ne vous apparaît pas problématique.</strong> De plus, les injures seront traitées très sévèrement car elles contreviennent aux conditions dutilisation.",
"commGuideList02F": "Évitez les discussions longues ou polémiques en dehors de l'arrière-boutique. Si quelqu'un mentionne quelque chose qui est autorisé par les règles mais qui vous blesse, il est normal de le lui faire savoir poliment. Si quelqu'un vous dit que vous l'avez mis mal à l'aise, prenez le temps de réfléchir au lieu de répondre par la colère. Mais si vous sentez qu'une conversation s'enflamme, devient trop émotive ou est blessante, <strong>cessez de répondre. Au lieu de cela, signalez les messages pour nous en informer.</strong> L'équipe d'administration répondra aussi rapidement que possible. Vous pouvez aussi envoyer un courriel ) <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>, et éventuellement inclure des copies d'écran si nécessaire.",
"commGuideList02G": "<strong>Obtempérez immédiatement aux demandes de l'équipe d'administration.</strong> Ceci inclus, sans être limité à : quand elle demande à ce que vous publiiez votre message dans un espace particulier, modifiiez votre profil pour retirer un contenu inadapté, déplaciez la discussion dans un autre endroit, etc. N'essayez pas d'argumenter avec l'équipe d'administration. Si vous avez des soucis ou des commentaires à propos des actions de l'équipe d'administration, écrivez à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> pour contacter notre responsable de la communauté.",
"commGuideList02J": "<strong>Ne spammez pas</strong>. Le spam peut inclure, sans être limité à : poster le même commentaire ou la même demande dans de multiples endroits, <strong>poster des liens sans explication ou contexte</strong>, poster des messages incohérents, ou poster le même message à la chaîne. Si le fait que des personnes cliquant sur un lien vous est profitable, vous devez l'indiquer dans le texte de votre message, ou cela sera aussi considéré comme du spam. L'équipe d'administration peut décider si quelque chose constitue du spam à sa propre discrétion.",
"commGuideList02K": "<strong>Merci d'éviter de publier des textes de taille imposante dans les espaces de discussions publics, en particulier dans la taverne</strong>. Tout comme les messages EN MAJUSCULES, cela signifie que vous êtes en train de hurler, et cela parasite l'ambiance chaleureuse du lieu.",
"commGuideList02L": "<strong>Nous vous recommandons vivement de ne pas dévoiler d'informations personnelles particulièrement des informations qui pourraient être utilisées pour vous identifier dans les espaces de chat publics</strong>. Ceci inclut : votre adresse postale, votre adresse courriel, et votre jeton d'API/mot de passe ; mais n'y est pas limité. Cette recommandation est pour votre propre sécurité. L'équipe d'administration ou l'équipe de modération pourraient supprimer de tels messages à leur discrétion. Si l'on vous demande des informations personnelles dans une guilde, une équipe ou par message privé, nous recommandons vivement que vous refusiez poliment et alertiez l'équipe de modération soit 1) en rapportant le message, soit 2) en envoyant un message à<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> en y incluant des copies d'écran.",
"commGuideList02L": "<strong>Nous vous recommandons vivement de ne pas dévoiler d'informations personnelles particulièrement des informations qui pourraient être utilisées pour vous identifier dans les espaces de chat publics</strong>. Ceci inclut : votre adresse postale, votre adresse courriel, et votre jeton d'API/mot de passe ; mais n'y est pas limité. Cette recommandation est pour votre propre sécurité. L'équipe d'administration pourrait supprimer de tels messages à leur discrétion. Si l'on vous demande des informations personnelles dans une guilde, une équipe ou par message privé, nous recommandons vivement que vous refusiez poliment et alertiez l'équipe d'administration soit 1) en rapportant le message, soit 2) en envoyant un message à<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> en y incluant des copies d'écran.",
"commGuidePara019": "<strong>Dans les espaces privés,</strong> une plus grande liberté est accordée pour discuter de ce dont vous avez envie, mais vous êtes toujours soumis aux conditions d'utilisation, notamment pour le contenu discriminatoire, violent ou menaçant. Notez que, parce que les noms de défis apparaissent dans le profil public du vainqueur, TOUS les noms de défis doivent obéir au code de conduite en espace public, même s'ils sont privés.",
"commGuidePara020": "<strong>Les messages privés (MP)</strong> ont quelques règles additionnelles. Si une personne vous a bloqué, ne la contactez pas par un autre biais pour lui demander de vous débloquer. Vous ne devriez également pas envoyer des MP à quelqu'un en lui demandant de l'aide (dans la mesure où les réponses publiques aux questions sont utiles à la communauté). Enfin, n'envoyez à personne de message les priant de vous offrir des objets payants, quelle qu'en soit la sorte.",
"commGuidePara020A": "<strong>Si vous voyez un message ou une message privé que vous pensez être irrespectueux du code de conduite en espace public présenté ci-dessus, ou si vous voyez un message ou un message privé qui vous concerne ou qui vous place dans une situation inconfortable, vous pouvez attirer lattention de l'équipe de modération en cliquant sur le drapeau pour le signaler.</strong> Un membre de l’équipe va résoudre la situation aussitôt que possible. Sachez cependant que le signalement intentionnel de messages innocents constitue une infraction à ce code de conduite (voir plus haut, dans la partie \"Infractions\"). Vous pouvez aussi contacter l'équipe de modération en envoyant un mail à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. Vous pouvez le faire sil y a plusieurs messages problématiques de la même personne dans différentes guildes, ou si la situation requiert d’être expliquée. Vous pouvez nous contacter dans votre langue natale si cest plus facile pour vous : nous pourrions avoir à utiliser Google Traduction, mais nous voulons que vous soyez à l'aise pour nous contacter si vous avez un problème.",
"commGuidePara020A": "<strong>Si vous voyez un message ou une message privé que vous pensez être irrespectueux du code de conduite en espace public présenté ci-dessus, ou si vous voyez un message ou un message privé qui vous concerne ou qui vous place dans une situation inconfortable, vous pouvez attirer lattention de l'équipe d'administration en cliquant sur le drapeau pour le signaler.</strong> Un membre de l’équipe va résoudre la situation aussitôt que possible. Sachez cependant que le signalement intentionnel de messages innocents constitue une infraction à ce code de conduite (voir plus haut, dans la partie \"Infractions\"). Vous pouvez aussi contacter l'équipe de modération en envoyant un mail à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. Vous pouvez le faire sil y a plusieurs messages problématiques de la même personne dans différentes guildes, ou si la situation requiert d’être expliquée. Vous pouvez nous contacter dans votre langue natale si cest plus facile pour vous : nous pourrions avoir à utiliser Google Traduction, mais nous voulons que vous soyez à l'aise pour nous contacter si vous avez un problème.",
"commGuidePara021": "De plus, certains lieux publics dHabitica ont des règles supplémentaires.",
"commGuideHeadingTavern": "La taverne",
"commGuidePara022": "La taverne est le lieu de rendez-vous principal dHabitica. Daniel l'aubergiste veille à la propreté des lieux, et Lemoness invoquera de la limonade avec plaisir pendant que vous discutez. Retenez cependant…",
"commGuidePara023": "<strong>La conversation tourne autour de sujets courants et dastuces pour améliorer sa productivité ou sa vie</strong>. Comme la taverne ne peut contenir que 200 messages, <strong>ce n'est pas l'endroit pour des conversation prolongées sur des sujets, particulièrement les plus sensibles</strong> (par exemple : politique, religion, dépression, ou le fait que la chasse aux gobelins devrait être bannie, etc.). Ces conversations devraient avoir lieu dans une guilde appropriée. Une personne de l'équipe de modération peut vous diriger vers la guilde appropriée, mais c'est au final de votre responsabilité de la trouver et d'y écrire.",
"commGuidePara023": "<strong>La conversation tourne autour de sujets courants et dastuces pour améliorer sa productivité ou sa vie</strong>. Comme la taverne ne peut contenir que 200 messages, <strong>ce n'est pas l'endroit pour des conversation prolongées sur des sujets, particulièrement les plus sensibles ou contentieux</strong> (par exemple : politique, religion, dépression, ou le fait que la chasse aux gobelins devrait être bannie, etc.). Ces conversations devraient avoir lieu dans une guilde appropriée. L'équipe d'administration peut vous diriger vers la guilde appropriée, mais c'est au final de votre responsabilité de la trouver et d'y écrire.",
"commGuidePara024": "<strong>Ne discutez de rien daddictif dans la taverne</strong>. De nombreuses personnes utilisent Habitica pour tenter de quitter leurs mauvaises habitudes. Entendre dautres gens discuter de substances illégales ou addictives peut leur rendre la tâche bien plus difficile ! Respectez vos camarades de taverne et prenez cela en considération. Ceci inclut, mais pas seulement : le tabagisme, lalcool, la pornographie, le jeu et lusage/abus de drogues.",
"commGuidePara027": "<strong>Lorsque l'équipe de modération vous propose de déplacer la conversation à un autre endroit, s'il n'y a pas de guilde à ce sujet, vous pouvez être dirigé vers l'arrière-boutique</strong>. L'arrière-boutique est un espace de discussion libre, pour aborder les sujets sensibles qui nécessitent l'accord de l'équipe de modération. Ce n'est pas le lieu pour les conversations ou discussions générales, et l'équipe de modération ne vous y dirigera que si cela s'avère nécessaire.",
"commGuideHeadingPublicGuilds": "Les guildes publiques",
"commGuidePara029": "<strong>Les guildes publiques ressemblent à la taverne, mais elles sont centrées autour dun thème particulier et pas autour d'une conversation générale.</strong> La messagerie dune guilde publique devrait se concentrer sur ce thème. Par exemple, les membres de la guilde des scribes pourraient être froissés si lon découvrait une conversation sur le jardinage plutôt que sur l’écriture, et une guilde de fans de dragons ne trouverait que peu dintérêt dans l’étude des runes anciennes. Certaines guildes sont plus ouvertes que dautres mais de façon générale <strong> essayez de ne pas vous éloigner du sujet </strong> !",
"commGuidePara031": "Certaines guildes publiques peuvent contenir des contenus sensibles comme la dépression, la religion, la politique, etc. Ceci est permis tant que les conversations ne brisent ni les conditions d'utilisation ni le code de conduite en espace public et quelles ne dérivent pas du sujet.",
"commGuidePara033": "<strong>Les guildes publiques ne doivent PAS posséder de contenus réservés aux plus de 18 ans. Si une guilde prévoit de discuter régulièrement de contenu sensible, elle doit l'annoncer dans le titre de la guilde</strong>. Cela vise a rendre Habitica sûr et agréable pour tout le monde.",
"commGuidePara035": "<strong>Si la guilde en question a d'autres types de sujets sensibles, il est respectueux envers vos compagnons d'ajouter un avertissement à votre commentaire (par exemple : \"Attention : parle d'automutilation\")</strong>. Les guildes peuvent avoir établi leurs propres règles concernant ces avertissements, en plus de celles données ici. Si possible, merci d'utiliser la syntaxe <a href='https://habitica.fandom.com/fr/wiki/M%C3%A9mo_de_Markdown' target='_blank'>markdown</a> afin de cacher le contenu sensible sous des sauts de ligne, et permettre ainsi à ceux qui souhaiteraient ne pas lire vos propos de les contourner facilement, en faisant défiler leur écran. L'équipe de modération peut toujours décider de retirer votre contenu malgré tout : c'est à sa discrétion.",
"commGuidePara035": "<strong>Si la guilde en question a d'autres types de sujets sensibles, il est respectueux envers vos compagnons d'ajouter un avertissement à votre commentaire (par exemple : \"Attention : parle d'automutilation\")</strong>. Les guildes peuvent avoir établi leurs propres règles concernant ces avertissements, en plus de celles données ici. L'équipe d'administration peut toujours décider de retirer votre contenu malgré tout : c'est à sa discrétion.",
"commGuidePara036": "De plus, les contenus sensibles doivent être appropriés au sujet parler d'automutilation dans une guilde focalisée sur la lutte contre la dépression peut avoir du sens, mais sera moins approprié dans une guilde musicale. Si vous constatez qu'une personne transgresse régulièrement ces règles, même après plusieurs rappels à l'ordre, veuillez signaler ces messages.",
"commGuidePara037": "<strong>Aucune guilde, publique ou privée, ne devrait être créée dans le but dattaquer un groupe ou une personne</strong>. Créer une telle guilde est passible dun bannissement immédiat. Combattez vos mauvaises habitudes, pas vos compagnons daventure !",
"commGuidePara038": "<strong>Tous les défis de la taverne et des guildes publiques doivent aussi respecter ces règles</strong>.",
"commGuideHeadingInfractionsEtc": "Infractions, conséquences et restauration",
"commGuideHeadingInfractions": "Infractions",
"commGuidePara050": "La vaste majorité des Habiticiens et Habiticiennes est respectueuse, assiste les autres et travaille à faire de la communauté un espace agréable et amical. Cependant, il peut arriver quune personne enfreigne lune des règles énoncées ci-dessus. Lorsque cela arrive, l'équipe de modération peut prendre les mesures quelle juge nécessaires pour que Habitica reste un endroit sain et agréable pour tout le monde.",
"commGuidePara051": "<strong>Il y a différents types d'infractions, et ils sont gérés en fonction de leur sévérité</strong>. Il n'y a pas de liste complète, et l'équipe de modération peut prendre des décisions sur des sujets qui ne sont pas couverts ici à sa propre discrétion. L'équipe de modération prendra en compte le contexte au moment d'évaluer les infractions.",
"commGuidePara050": "La vaste majorité des Habiticiens et Habiticiennes est respectueuse, assiste les autres et travaille à faire de la communauté un espace agréable et amical. Cependant, il peut arriver quune personne enfreigne lune des règles énoncées ci-dessus. Lorsque cela arrive, l'équipe d'administration peut prendre les mesures quelle juge nécessaires pour que Habitica reste un endroit sain et agréable pour tout le monde.",
"commGuidePara051": "<strong>Il y a différents types d'infractions, et ils sont gérés en fonction de leur sévérité</strong>. Il n'y a pas de liste complète, et l'équipe d'administration peut prendre des décisions sur des sujets qui ne sont pas couverts ici à sa propre discrétion. L'équipe d'administration prendra en compte le contexte au moment d'évaluer les infractions.",
"commGuideHeadingSevereInfractions": "Infractions graves",
"commGuidePara052": "Les infractions graves sont très nocives pour la communauté dHabitica et ses membres, et ont ainsi des conséquences sévères.",
"commGuidePara053": "Les exemples suivants représentent des infractions graves. Cette liste nest pas exhaustive.",
"commGuideList05A": "Violation des conditions d'utilisation",
"commGuideList05B": "Discours (ou images) haineux, harcèlement moral, harcèlement en ligne, dénigrement, trollage",
"commGuideList05C": "Violation de la période de probation",
"commGuideList05D": "Usurpation de l'identité d'un membre de l'équipe d'administration ou de modération - cela inclus le fait de prétendre que des espaces non affiliés à Habitica serait officiels et/ou administrés par Habitica ou ses équipes",
"commGuideList05D": "Usurpation de l'identité d'un membre de l'équipe d'administration - cela inclus le fait de prétendre que des espaces non affiliés à Habitica serait officiels et/ou administrés par Habitica ou ses équipes",
"commGuideList05E": "Répétition dinfractions modérées",
"commGuideList05F": "Création d'un compte secondaire pour échapper aux sanctions (par exemple, créer un compte pour poster sur la messagerie après révocation des droits de participation aux discussions)",
"commGuideList05G": "Tromper intentionnellement l'équipe d'administration ou de modération afin d'échapper aux conséquences de ses actes, ou pour nuire à un autre utilisateur",
"commGuideList05G": "Tromper intentionnellement l'équipe d'administration afin d'échapper aux conséquences de ses actes, ou pour nuire à un autre utilisateur",
"commGuideHeadingModerateInfractions": "Infractions modérées",
"commGuidePara054": "Des infractions modérées n'affectent pas notre communauté, mais ne la rendent pas attractive. Ces infractions auront des conséquences modérées. Lorsqu'elles sont liées à d'autres infractions, les conséquences peuvent devenir plus importantes.",
"commGuidePara055": "Les exemples suivants représentent des infractions modérées. Cette liste nest pas exhaustive.",
"commGuideList06A": "Ignorer, contester ou manquer de respect à l'équipe de modération. Ceci inclut : se plaindre en public d'un modérateur ou d'un autre utilisateur, ou publiquement glorifier ou défendre des utilisateurs bannis, ou débattre si l'action d'un modérateur était ou non appropriée. Si une règle ou un modérateur vous pose un souci, veuillez contacter l'équipe par courriel (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06A": "<strong>Ignorer, contester ou manquer de respect à l'équipe d'administration</strong>. Ceci inclut : se plaindre en public de l'équipe d'administration ou d'un autre utilisateur, ou publiquement glorifier ou défendre des utilisateurs bannis, ou débattre si l'action de l'équipe d'administration était ou non appropriée. Si une règle ou le comportement de l'équipe d'administration vous pose un souci, veuillez contacter l'équipe par courriel (<a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>).",
"commGuideList06B": "Modération abusive. Pour clarifier : un rappel sympathique des règles ne pose pas de problème. La modération abusive consiste à ordonner, demander et/ou sous-entendre fortement que quelquun doit vous écouter afin de corriger une erreur. Vous pouvez prévenir une personne quelle enfreint les règles, mais ne réclamez pas daction particulière. Par exemple, dire « Juste pour que tu saches, il est déconseillé de jurer dans la taverne donc tu devrais retirer cela » est plus adéquat que dire « Je vais devoir te demander de retirer tes propos.»",
"commGuideList06C": "Signalement intentionnel de messages innocents.",
"commGuideList06D": "Violations répétées du code de conduite en espace public",
@@ -61,12 +61,12 @@
"commGuidePara056": "Les infractions mineures, bien que découragées, nont que des conséquences minimes. Si elles persistent, elles peuvent mener à des conséquences plus sévères.",
"commGuidePara057": "Les exemples suivants représentent des infractions mineures. Cette liste nest pas exhaustive.",
"commGuideList07A": "Première infraction au code de conduite en espace public",
"commGuideList07B": "Toute remarque ou action qui déclenche un « Sil te-plaît, ne fais pas ça » (ou « Please dont » en anglais) de la part de l'équipe de modération. Quand il vous est demandé de faire quelque chose publiquement, cela peut être une conséquence en soi. Si l'équipe de modération a besoin de répéter ces corrections à une même personne, cela pourra compter comme une infraction plus importante",
"commGuideList07B": "Toute remarque ou action qui déclenche un « Sil te-plaît, ne fais pas ça » (ou « Please dont » en anglais) de la part de l'équipe d'administration. Quand il vous est demandé de faire quelque chose publiquement, cela peut être une conséquence en soi. Si l'équipe d'administration a besoin de répéter ces corrections à une même personne, cela pourra compter comme une infraction plus importante",
"commGuidePara057A": "Certains messages peuvent être masqués parce quils contiennent des informations sensibles ou quils pourraient donner aux lecteurs une mauvaise idée. Typiquement ceci ne compte pas comme une infraction, surtout la première fois que cela arrive !",
"commGuideHeadingConsequences": "Conséquences",
"commGuidePara058": "En Habitica comme dans la vie réelle toute action a une conséquence, que ce soit être en forme parce que vous avez fait de l'exercice, avoir des caries parce que vous avez mangé trop sucré ou réussir un examen parce que vous avez étudié.",
"commGuidePara059": "<strong>De même, toute infraction aura des conséquences directes.</strong> Quelques exemples de ces sanctions sont exposés ci-dessous.",
"commGuidePara060": "<strong>Si votre infraction conduit à des conséquences modérées ou sévères, l'équipe d'administration ou de modération publiera un message dans le forum où l'infraction a eu lieu, expliquant</strong> :",
"commGuidePara060": "<strong>Si votre infraction conduit à des conséquences modérées ou sévères, et si cela s'avère approprié suivant les circonstances, l'équipe d'administration publiera un message dans le forum où l'infraction a eu lieu, expliquant</strong> :",
"commGuideList08A": "la teneur de votre infraction",
"commGuideList08B": "la conséquence quelle aura",
"commGuideList08C": "ce que vous pouvez faire pour corriger la situation et restaurer votre statut initial, si cest possible.",
@@ -77,7 +77,7 @@
"commGuideList09C": "Désactivation permanente (« gel ») de la progression des échelons de contribution",
"commGuideHeadingModerateConsequences": "Exemples de conséquences modérées",
"commGuideList10A": "Privilèges de discussion publique et/ou privée restreints",
"commGuideList10A1": "Si vos actes conduisent à une révocation de vos droits de discussion, l'équipe de modération vous enverra un message privé et/ou un message dans le fil de discussion pour lequel vous avez été interdit de parole, dans lequel vous seront exposées les raisons de ce choix et la durée de cette révocation et/ou les actions requise pour votre rétablissement. Vous serez rétabli si vous consentez poliment aux actions requises et si vous acceptez de vous conformer aux règles de vie en communauté et aux conditions d'utilisation",
"commGuideList10A1": "Si vos actes conduisent à une révocation de vos droits de discussion, vous devez envoyer un mail à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. Vous pourrez être rétabli (à la discrétion du staff) si vous consentez poliment aux actions requises et si vous acceptez de vous conformer aux règles de vie en communauté et aux conditions d'utilisation",
"commGuideList10C": "Privilèges de création de guilde/défi restreints",
"commGuideList10D": "Désactivation temporaire (« gel ») de la progression des échelons de contribution",
"commGuideList10E": "Rétrogradation des échelons de contribution",
@@ -86,15 +86,15 @@
"commGuideList11A": "Rappel du code de conduite en espace public",
"commGuideList11B": "Avertissements",
"commGuideList11C": "Requêtes",
"commGuideList11D": "Suppressions (l'équipe de modération peut supprimer du contenu problématique)",
"commGuideList11E": "Modifications (l'équipe de modération peut modifier du contenu problématique)",
"commGuideList11D": "Suppressions (le staff peut supprimer du contenu problématique)",
"commGuideList11E": "Modifications (le staff peut modifier du contenu problématique)",
"commGuideHeadingRestoration": "Restauration",
"commGuidePara061": "Habitica est un lieu dédié au développement personnel, et nous croyons aux secondes chances. <strong>Si vous commettez une infraction qui a eu une conséquence, voyez-le comme une chance d’évaluer vos actions et de travailler à devenir un meilleur membre de la communauté</strong>.",
"commGuidePara062": "L'annonce, le message et/ou le courriel que vous recevez expliquant les conséquences de vos actions constitue une bonne source dinformations. Acceptez les restrictions qui vous sont imposées, et engagez-vous à faire ce quil faut pour voir vos sanctions levées.",
"commGuidePara063": "Si vous ne comprenez pas les conséquences ou la nature de votre infraction, demandez de laide à l'équipe de modération afin d'éviter de nouvelles infractions. Si vous trouvez qu'une décision spécifique était injuste, vous pouvez contacter l'équipe pour en discuter à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>.",
"commGuideHeadingMeet": "Rencontrez l'équipe de modération !",
"commGuidePara063": "Si vous ne comprenez pas les conséquences ou la nature de votre infraction, demandez de laide à l'équipe d'administration afin d'éviter de nouvelles infractions. Si vous trouvez qu'une décision spécifique était injuste, vous pouvez contacter l'équipe pour en discuter à <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>.",
"commGuideHeadingMeet": "Rencontrez le staff",
"commGuidePara006": "Habitica compte plusieurs chevaliers-errants qui unissent leurs forces avec celles des membres de l'équipe d'administration afin de préserver le calme et le contentement de la communauté et la protéger des trolls. Tous et toutes ont leur domaine spécifique, mais certains peuvent être parfois appelés à servir dans d'autres sphères sociales.",
"commGuidePara007": "Les membres du staff ont une étiquette de couleur pourpre, marquée d'une couronne. Ils portent le titre \"Héroïque\".",
"commGuidePara007": "L'équipe d'administration d'Habitica maintient le fonctionnement de l'application et des sites et peut agir en tant que modérateurs des discussions. Ils ont une étiquette de couleur pourpre, marquée d'une couronne. Ils portent le titre \"Héroïque\".",
"commGuidePara008": "L'équipe de modération a une étiquette bleu foncé, marquée d'une étoile. Leur titre est \"Gardien\".",
"commGuidePara009": "Les membres actuels de l'équipe d'administration sont (de gauche à droite) :",
"commGuideAKA": "<%= habitName %> ou <%= realName %> dans la vie",
@@ -121,13 +121,14 @@
"commGuideLink07": "<a href='https://trello.com/b/nnv4QIRX/' target='_blank'>Le Trello de quête</a> : pour soumettre du contenu de quête.",
"commGuidePara069": "Ces peintres de talent ont contribué aux illustrations :",
"commGuideList01F": "Ne demandez pas des objets payants, ne spammez pas, ou n'écrivez pas des textes en grand/en majuscules.",
"commGuideList01E": "Ne démarrez pas et n'encouragez pas les discussions contentieuse à la taverne.",
"commGuideList01D": "Veuillez s'il vous plaît vous conformer aux requêtes de l'équipe de modération.",
"commGuideList01E": "<strong>Ne démarrez pas et n'encouragez pas les discussions contentieuse à la taverne.</strong>",
"commGuideList01D": "Veuillez s'il vous plaît vous conformer aux requêtes de l'équipe d'administration.",
"commGuideList01C": "Toutes les discussions doivent être adaptées à tous les ages, et ne doivent pas contenir de jurons.",
"commGuideList01B": "Interdit : Toute communication de nature violente, menaçante, discriminatoire, etc. y compris les memes, les images et les blagues.",
"commGuideList01A": "Les conditions d'utilisations sont valables sur tous les espaces, y compris les guildes privées, les discussions d'équipe et les messages.",
"commGuidePara017": "Voici le résumé, mais nous vous encourageons à lire plus en détail ci-dessous :",
"commGuideList09D": "Le retrait ou la diminution des paliers de contribution accordés",
"commGuideList05H": "Efforts répétés ou importants pour escroquer ou faire pression sur d'autres personnes pour obtenir des objets à valeur monétaire",
"commGuideList02M": "Veuillez ne pas demander à recevoir des gemmes, des abonnements, ou des participations à un plan de groupe. Ceci n'est pas autorisé à la taverne, dans les espaces publiques ou privés, et dans les messages privés. Si vous recevez des messages demandant des objets payants, veuillez les signaler. Des demandes répétées pour des gemmes ou des abonnements, en particulier après un avertissement, peuvent conduire au bannissement du compte."
"commGuideList02M": "Veuillez ne pas demander à recevoir des gemmes, des abonnements, ou des participations à un plan de groupe. Ceci n'est pas autorisé à la taverne, dans les espaces publiques ou privés, et dans les messages privés. Si vous recevez des messages demandant des objets payants, veuillez les signaler. Des demandes répétées pour des gemmes ou des abonnements, en particulier après un avertissement, peuvent conduire au bannissement du compte.",
"commGuideList02N": "<strong>Signalez et rapportez tout message qui déroge aux règles de vie en communauté et aux conditions d'utilisations.</strong> nous nous en occuperons aussi vite que possible. vous pouvez aussi notifier l'administration via <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> mais le signalement est la méthode la plus rapide pour obtenir de l'aide."
}
+2 -1
View File
@@ -372,5 +372,6 @@
"hatchingPotionSolarSystem": "système solaire",
"hatchingPotionOnyx": "onyx",
"hatchingPotionVirtualPet": "Familier virtuel",
"hatchingPotionPorcelain": "porcelaine"
"hatchingPotionPorcelain": "porcelaine",
"hatchingPotionPinkMarble": "bille rose"
}
+2 -1
View File
@@ -188,5 +188,6 @@
"enterHabitica": "Entrez dans Habitica",
"socialAlreadyExists": "Cet identifiant social est déjà lié à un compte Habitica existant.",
"emailUsernamePlaceholder": "par exemple habitrabbit ou gryphon@example.com",
"footerProduct": "Produit"
"footerProduct": "Produit",
"translateHabitica": "Traduire Habitica"
}
+34 -2
View File
@@ -2783,6 +2783,38 @@
"shieldSpecialWinter2023WarriorText": "Bouclier huitre",
"shieldSpecialWinter2023HealerText": "Chansonnette fraiche",
"shieldSpecialWinter2023HealerNotes": "Votre chanson de givre et de neige apaisera les esprits de ceux qui l'entendent. Augmente la constitution de <%= con %>. Équipement en édition limitée de l'hiver 2022-2023.",
"headSpecialNye2022Text": "Chapeau de fête fantastique",
"headSpecialNye2022Notes": "Vous avez reçu un chapeau de soirée fantastique ! Portez-le avec fierté en levant votre verre à cette nouvelle année ! Ne confère aucun bonus."
"headSpecialNye2022Text": "Chapeau de fête fabuleux",
"headSpecialNye2022Notes": "Vous avez reçu un chapeau de soirée fabuleux ! Portez-le avec fierté en levant votre verre à cette nouvelle année ! Ne confère aucun bonus.",
"eyewearSpecialAnniversaryNotes": "Regardez à travers les yeux d'un Héro d'Habitica - vous ! Ne confère aucun avantage. Édition Spéciale Objet d'Anniversaire des 10 ans.",
"armorSpecialBirthday2023Text": "Tenue de soirée fabuleuse",
"armorSpecialBirthday2023Notes": "Joyeux anniversaire Habitica ! Portez cette Tenue de Soirée Fabuleuse pour fêter ce superbe jour. Ne confère aucun avantage.",
"armorArmoireShawlCollarCoatText": "Manteau à Col Retourné",
"armorArmoireShawlCollarCoatNotes": "Un sage sorcier a dit un jour \"Il n'y a rien de mieux que d'être confortable et productif !\" Portez ce manteau élégant et chaud en surmontant les défis de l'année. Augmente la Constitution de <%= con %>. Armoire Enchantée : Objet Indépendant.",
"headMystery202301Text": "Oreilles de Vulpin Vaillant",
"headMystery202301Notes": "Votr ouïe sera si fine que vous entendrez le jour se lever et la rosée scintiller. Ne confère aucun avantage. Objet d'abonné de Janvier 2023.",
"backMystery202301Text": "Cinq queues de valeur",
"backMystery202301Notes": "Ces Queues Moelleuses contiennent un pouvoir éthéré mais également une grande quantité de charme ! Ne confère aucun avantage. Objet d'abonné de Janvier 2023.",
"backSpecialAnniversaryText": "Cape de Héro d'Habitica",
"backSpecialAnniversaryNotes": "Laissez cette cape flotter dans le vent pour dire à tout le monde que vous êtes un héro d'Habitica. Ne confère aucun avantage. Édition spéciale Objet d'Anniversaire des 10 ans.",
"bodySpecialAnniversaryText": "Collier de Héro d'Habitica",
"bodySpecialAnniversaryNotes": "Complète parfaitement votre ensemble royal violet ! Ne confère aucun avantage. Édition Spéciale Objet d'Anniversaire des 10 ans.",
"eyewearSpecialAnniversaryText": "Masque de Héro d'Habitica",
"armorArmoireTeaGownText": "Blouse de salon de thé",
"armorArmoireTeaGownNotes": "Vous faites preuve de résilience, de créativité, d'intelligence et vous êtes tellement à la mode ! Augmente la force et l'intelligence de <%= attrs %> chacune. Armoire enchantée : ensemble de salon de thé (objet 1 de 3).",
"headMystery202303Text": "Chevelure crinière",
"headMystery202303Notes": "Quelle meilleure manière de montrer à tout le monde que vous êtes le personnage principal de cette aventure que d'avoir des cheveux bleus et ébouriffés ? Ne confère aucun bonus. Équipement d'abonnement de mars 2023.",
"headArmoireTeaHatText": "Chapeau de salon de thé",
"headArmoireTeaHatNotes": "Ce chapeau élégant est à la fois fantaisiste et fonctionnel. Augmente la perception de <%= per %>. Armoire enchantée : ensemble de salon de thé (objet 2 de 3).",
"shieldArmoireTeaKettleText": "Bouilloire à thé",
"shieldArmoireTeaKettleNotes": "Tous vos thés préférés et savoureux peuvent être infusés dans cette bouilloire. Vous avez envie d'un thé noir, d'un thé vert, d'un oolong ou d'une infusion ? Augmente la constitution de <%= con %>. Armoire enchantée : ensemble de salon de thé (objet 3 de 3).",
"backMystery202302Text": "Queue de chat-tigre rusé",
"backMystery202302Notes": "Chaque fois que vous portez cette queue, vous êtes sûr de passer une bonne journée ! Callooh ! Callay ! Ne confère aucun bonus. Équipement d'abonnement de Février 2023.",
"headAccessoryMystery202302Text": "Oreilles de chat-tigre rusé",
"headAccessoryMystery202302Notes": "L'accessoire parfait pour installer votre sourire enchanteur. Ne confère aucun bonus. Équipement d'abonnement de février 2023.",
"eyewearMystery202303Text": "Yeux réveurs",
"eyewearMystery202303Notes": "Laissez votre expression nonchalante tromper vos ennemis en un sens de sécurité mal placé. Ne confère aucun bonus. Équipement d'abonnement de mars 2023.",
"shieldArmoireBasketballText": "Balle de basket",
"shieldArmoireBasketballNotes": "Waow ! Quand vous tirez avec cette balle magique, vous ne ferez que des paniers. Augmente la constitution et la force de <%= attrs %> chacune. Armoire enchantée : ensemble de basket (objet 2 de 2).",
"armorArmoireBasketballUniformText": "Uniforme de basket",
"armorArmoireBasketballUniformNotes": "Vous vous demandez ce qui est écrit à l'arrière de cet uniforme ? Votre numéro porte-bonheur, bien sûr ! Augmente la perception de <%= per %>. Armoire enchantée : ensemble de basket (objet 1 de 2)."
}
+34 -5
View File
@@ -188,7 +188,7 @@
"septemberYYYY": "Septembre <%= year %>",
"royalPurpleJackolantern": "Citrouille d'Habitoween pourpre royal",
"novemberYYYY": "Novembre <%= year %>",
"g1g1Limitations": "Il s'agit d'un événement limité dans le temps, qui démarre le 15 décembre à 08h00 ET (13h00 UTC) et qui finit le 8 janvier à 23h59 ET (9 janvier04h59 UTC). Cette promotion ne s'applique que lorsque vous offrez à quelqu'un d'autre. Si la personne désignée a déjà un abonnement, l'abonnement offert ajoutera des mois d'abonnement qui ne seront utilisés qu'après la fin de leur abonnement actuel.",
"g1g1Limitations": "Il s'agit d'un événement limité dans le temps, qui démarre le 15 décembre à 08h00 ET (13h00 UTC) et qui finit le 8 janvier à 23h59 ET (9 janvier04h59 UTC). Cette promotion ne s'applique que lorsque vous faites un cadeau à un autre Habiticien. Si la personne désignée a déjà un abonnement, la souscription offerte ajoutera des mois de crédit supplémentaires qui ne seront utilisés qu'après la fin de leur souscription actuelle.",
"limitations": "Limitations",
"g1g1HowItWorks": "Entrez l'identifiant du compte auquel vous voulez faire un cadeau. Puis choisissez la durée d'abonnement que vous voulez offrir et validez. Vous recevrez automatiquement la même durée d'abonnement que celle que vous venez d'offrir.",
"howItWorks": "Comment ça marche",
@@ -234,11 +234,40 @@
"fall2022HarpyMageSet": "Harpie (Mage)",
"fall2022WatcherHealerSet": "Voyeur (Guérisseur)",
"fall2022KappaRogueSet": "Kappa (Voleur)",
"gemSaleHow": "Entre le <%= eventStartOrdinal %> et le <%= eventEndOrdinal %> <%= eventStartMonth %>, achetez simplement n'importe quel ensemble de gemmes comme d'habitude et votre compte sera crédité avec le montant promotionnel de gemmes. Plus de gemmes à dépenser, à partager ou à conserver pour de nouveaux objets !",
"gemSaleLimitations": "Cette promotion s'applique uniquement pendant la durée de l'événement. L'événement démarre le <%= eventStartOrdinal %> <%= eventStartMonth %> à 8:00 EDT (12:00 UTC) et se terminera le <%= eventEndOrdinal %> <%= eventStartMonth %> à 20:00 EDT (00:00 UTC). Cette promotion n'est disponible que pour les gemmes que vous achetez pour vous.",
"gemSaleHow": "Entre le <%= eventStartOrdinal %> et le <%= eventEndOrdinal %> <%= eventStartMonth %>, achetez, comme d'habitude, n'importe quel ensemble de Gemmes et votre compte sera crédité avec le montant promotionnel. Plus de gemmes à dépenser, à partager ou à conserver pour de futures nouveautés !",
"gemSaleLimitations": "Cette promotion s'applique uniquement pendant la durée de l'événement. L'événement démarre le <%= eventStartOrdinal %> <%= eventStartMonth %> à 8:00 EDT (12:00 UTC) et se terminera le <%= eventEndOrdinal %> <%= eventStartMonth %> à 20:00 EDT (00:00 UTC). Cette promotion n'est disponible que pour les Gemmes que vous achetez pour vous.",
"winter2023WalrusWarriorSet": "Morse (Guerrier)",
"winter2023FairyLightsMageSet": "Lumières féeriques (Mage)",
"winter2023FairyLightsMageSet": "Guirlandes lumineuses (Mage)",
"winter2023CardinalHealerSet": "Cardinal (Guérisseur)",
"spring2023RibbonRogueSet": "Ruban (Voleur)",
"winter2023RibbonRogueSet": "Ruban (Voleur)"
"winter2023RibbonRogueSet": "Ruban (Voleur)",
"fourForFreeText": "Pour continuer la fête nous allons donner des Tenues de Soirée, 20 Gemmes et une édition limitée d'un Arrière-plan d'anniversaire et un ensemble d'objets qui inclut une Cape, des Épaulettes et un Masque.",
"anniversaryLimitations": "C'est un événement limité dans le temps qui commencera le 30 janvier à 8h00 ET (13h00 UTC) et se finira le 8 Février à 23h59 ET (04h59 UTC). L'Edition Limitée Gryphatrice Joyeux et dix Potions Magiques seront disponibles à l'achat à ce moment là. Les autres cadeaux listés dans la section \"Quatre gratuits\" seront automatiquement distribués à tous les comptes qui étaient actifs dans les 30 jours avant l'envoi des cadeaux. Les comptes créés après l'envoi des cadeaux ne pourront pas les réclamer.",
"dateStartFebruary": "Le 8 Février",
"anniversaryLimitedDates": "Du 30 Janvier au 8 Février",
"limitedEvent": "Événement Limité",
"celebrateAnniversary": "Célébrez les 10 ans d'Habitica avec des cadeaux et des objets exclusifs ci-dessous !",
"celebrateBirthday": "Célébrez les 10 ans d'Habitica avec des cadeaux et des objets exclusifs !",
"jubilantGryphatricePromo": "Familier Gryphatrice Joyeux animé",
"limitedEdition": "Édition limitée",
"anniversaryGryphatriceText": "Le Gryphatrice joyeux rare rejoint la fête ! Ne manquez pas votre chance d'adopter cet animal de compagnie animé exclusif.",
"anniversaryGryphatricePrice": "Achetez le aujourd'hui pour <strong>$9,99</strong> ou <strong>60 gemmes</strong>",
"buyNowMoneyButton": "Acheter pour $9,99",
"buyNowGemsButton": "Acheter pour 60 Gemmes",
"wantToPayWithGemsText": "Voulez-vous payer avec des Gemmes ?",
"wantToPayWithMoneyText": "Voulez-vous payer avec Stripe, Paypal ou Amazon ?",
"ownJubilantGryphatrice": "<strong>Vous avez acheté le Gryphatrice Joyeux !</strong> Allez dans l'Écurie pour l'équiper !",
"jubilantSuccess": "Vous avez acheté le <strong>Gryphatrice Joyeux !</strong>",
"stableVisit": "Allez dans l'Écurie pour l'équipper !",
"takeMeToStable": "Emmenez-moi à l'Écurie",
"plentyOfPotions": "Beaucoup de Potions",
"plentyOfPotionsText": "Nous faisons revenir 10 des Potions Magiques préférées de la communauté. Rendez-vous au marché pour compléter votre collection !",
"visitTheMarketButton": "Aller au marché",
"fourForFree": "Quatre gratuits",
"dayOne": "Jour 1",
"dayFive": "Jour 5",
"dayTen": "Jour 10",
"partyRobes": "Tenue de soirée",
"twentyGems": "20 Gemmes",
"birthdaySet": "Ensemble d'Anniversaire"
}
+2 -1
View File
@@ -113,5 +113,6 @@
"gryphatrice": "Griffatrice",
"invalidAmount": "Quantité invalide de nourriture, doit être un entier positif",
"tooMuchFood": "Vous essayez de donner trop de nourriture à votre familier, action annulée",
"notEnoughFood": "Vous n'avez pas assez de nourriture"
"notEnoughFood": "Vous n'avez pas assez de nourriture",
"jubilantGryphatrice": "Gryphatrice jubilante"
}
+10 -1
View File
@@ -753,5 +753,14 @@
"questVirtualPetDropVirtualPetPotion": "Potion d'éclosion de familier virtuel",
"questVirtualPetUnlockText": "Déverrouille l'achat de potions d'éclosion de familier virtuel au marché",
"questVirtualPetRageDescription": "Cette barre se remplit quand vous n'effectuez pas vos quotidiennes. Quand elle sera pleine, le Wotchimon fera disparaître une partie des dégâts en cours de votre équipe !",
"questVirtualPetCompletion": "Quelques pressions sur des boutons semblent avoir satisfait les besoins mystérieux de l'animal virtuel, qui s'est finalement calmé et semble content.<br><br>Soudain, dans une explosion de confettis, le poisson d'avril apparaît avec un panier rempli d'étranges potions émettant de doux bips.<br><br>\"Quel timing, poisson d'avril\", dit @Beffymaroo avec un sourire en coin. \"Je soupçonne que ce grand gaillard qui émet des bips est une de vos connaissances.\"<br><br>\"Euh, oui,\" dit-il, penaud. \"Je suis vraiment désolé, et je vous remercie tous les deux d'avoir pris soin de Wotchimon ! Prenez ces potions en guise de remerciement, elles peuvent faire retransformer vos animaux de façon virtuelle quand vous le souhaitez !\".<br><br>Vous doutez d'être 100% d'accord avec tous ces bips, mais comme ils sont mignons, ça vaut le coup d'essayer !"
"questVirtualPetCompletion": "Quelques pressions sur des boutons semblent avoir satisfait les besoins mystérieux de l'animal virtuel, qui s'est finalement calmé et semble content.<br><br>Soudain, dans une explosion de confettis, le poisson d'avril apparaît avec un panier rempli d'étranges potions émettant de doux bips.<br><br>\"Quel timing, poisson d'avril\", dit @Beffymaroo avec un sourire en coin. \"Je soupçonne que ce grand gaillard qui émet des bips est une de vos connaissances.\"<br><br>\"Euh, oui,\" dit-il, penaud. \"Je suis vraiment désolé, et je vous remercie tous les deux d'avoir pris soin de Wotchimon ! Prenez ces potions en guise de remerciement, elles peuvent faire retransformer vos animaux de façon virtuelle quand vous le souhaitez !\".<br><br>Vous doutez d'être 100% d'accord avec tous ces bips, mais comme ils sont mignons, ça vaut le coup d'essayer !",
"questPinkMarbleBoss": "Corrompidon",
"questPinkMarbleRageDescription": "Cette barre se remplit quand vous n'effectuez pas vos tâches quotidiennes. Lorsqu'elle est pleine, Corrompidon réduira une partie des dommages reçues de la part de votre équipe !",
"questPinkMarbleRageEffect": "`Corrompidon donne un coup rose-mantique !` Ce n'était pas du tout affectueux ! Vos compagnons et vous êtes pris par surprise. Les prochains dégâts seront réduits.",
"questPinkMarbleDropPinkMarblePotion": "Potion d'éclosion marbre rose",
"questPinkMarbleRageTitle": "Coup Rose-mantique",
"questPinkMarbleCompletion": "Vous réussissez finalement à épingler le petit gars il était bien plus costaud et rapide qu'on aurait pu croire. Avant qu'il ne recommence à remuer, vous lui confisquez son carquois de flèches brillantes. Il cligne des yeux et regarde soudainement autour de lui avec un air surpris. \"Je me suis piqué avec une de mes propres flèches pour échapper à ma tristesse et à mon chagrin d'amour… Je ne me souviens de rien après ça !\"<br><br>Alors qu'il s'apprête à fuir la cave, il remarque que @Loremi a pris un échantillon de poussière de marbre rose et se met à sourire. \"Essayez d'utiliser un peu de cette poussière rose dans une potion ! Nourrissez les familiers qu'elle fera éclore et vous découvrirez que les vraies relations naissent de la communication, de la confiance mutuelle et du soin. Je vous souhaite bonne chance, et je vous souhaite de l'amour !\"",
"QuestPinkMarbleUnlockText": "Déverrouille l'achat de potions d'éclosion marbre rose au marché.",
"questPinkMarbleText": "Calmez le Corrupidon",
"questPinkMarbleNotes": "Après avoir avoir entendu des rumeurs à propos d'une grotte dans les Montagnes Méandreuses d'où sortent des rochers et de la poussière roses, votre groupe commence à enquêter. En s'approchant de la grotte, vous remarquez effectivement un énorme nuage de poussière rose - et étrangement, vous entendez le cri de guerre d'une petite voix, suivi du bruit d'un rocher qui se brise.<br><br>@Empress42 inhale accidentellement un peu de poussière et se sent soudain rêveuse et moins productive ! \"Pareil ici\" dit @QuartzFox, \"Je fantasme soudainement sur une personne que je connais à peine !\"<br><br>@a_diamond jette un coup d'œil dans la grotte et trouve un petit être qui virevolte et réduit en poussière des rochers marbrés de rose. \"Mettez-vous à l'abri ! Ce Cupidon a été corrompu et utilise sa magie pour provoquer de la limpidité et des engouements irréalistes ! Nous devons le maîtriser !\""
}
+9 -2
View File
@@ -159,7 +159,7 @@
"needToUpdateCard": "Besoin de mettre à jour votre carte ?",
"subMonths": "Mois d'abonnement",
"subscriptionStats": "Statistiques d'abonnement",
"subscriptionInactiveDate": "Les bénéfices de votre abonnement deviendront inactifs le <strong><%= date %></strong>",
"subscriptionInactiveDate": "Les bénéfices de votre abonnement deviendront inactifs le <br><strong><%= date %></strong>",
"subscriptionCanceled": "Votre abonnement est annulé",
"youAreSubscribed": "Vous bénéficiez d'un abonnement à Habitica",
"doubleDropCap": "Double le butin",
@@ -216,5 +216,12 @@
"mysterySet202209": "Ensemble d'étude de magie",
"mysterySet202210": "Ensemble ophidien inquiétant",
"mysterySet202211": "Ensemble d'électromancie",
"mysterySet202212": "Ensemble de Garde des glaces"
"mysterySet202212": "Ensemble de garde des glaces",
"mysterySet202301": "Ensemble de vulpin vaillant",
"haveNonRecurringSub": "Vous avez un abonnement non récurrent cadeau.",
"switchToRecurring": "Passer à un abonnement récurrent ?",
"continueGiftSubBenefits": "Vous voulez faire perdurer vos avantages ? Vous pouvez commencer un nouvel abonnement avant que votre abonnement cadeau se termine pour conserver vos avantages.",
"subscriptionCreditConversion": "Commencer un nouvel abonnement convertira vos mois restants en crédit qui seront utilisés à l'annulation de votre abonnement récurrent.",
"mysterySet202302": "Ensemble de chat-tigré rusé",
"mysterySet202303": "Ensemble du perso principal"
}
+1 -1
View File
@@ -126,7 +126,7 @@
"achievementShadeOfItAllModalText": "Kamu menjinakkan semua Tunggangan Bayangan!",
"achievementWoodlandWizardModalText": "Kamu telah mengumpulkan seluruh peliharaan hutan!",
"achievementPolarProModalText": "Kamu mengumpulkan seluruh Peliharaan Kutub!",
"achievementPolarProText": "Telah menetaskan semua peliharaan Kutub: Beruang, Rubah, Pinguin, Paus, dan Serigala!",
"achievementPolarProText": "Telah menetaskan semua warna standar peliharaan Kutub: Beruang, Rubah, Pinguin, Paus, dan Serigala!",
"achievementBirdsOfAFeatherModalText": "Kamu mengumpulkan seluruh peliharaan yang bisa terbang!",
"achievementBoneToPickModalText": "Kamu telah mengumpulkan semua Peliharaan Tulang Klasik dan Misi!",
"achievementBoneToPickText": "Telah menetaskan semua Peliharaan Tulang Klasik dan Misi!",
+130 -12
View File
@@ -392,23 +392,23 @@
"backgroundBackAlleyText": "Gang Belakang",
"backgroundBackAlleyNotes": "Terlihat mencurigakan berkeliaran di Gang Belakang.",
"backgroundGlowingMushroomCaveText": "Goa Jamur Bercahaya",
"backgroundGlowingMushroomCaveNotes": "Stare in awe at a Glowing Mushroom Cave.",
"backgroundGlowingMushroomCaveNotes": "Memandangi dengan kekaguman di gua jamur bercahaya.",
"backgroundCozyBedroomText": "Kamar Tidur Nyaman",
"backgroundCozyBedroomNotes": "Curl up in a Cozy Bedroom.",
"backgroundCozyBedroomNotes": "Menggeliat di kamar yang nyaman.",
"backgrounds122018": "SET 55: Dirilis Desember 2018",
"backgroundFlyingOverSnowyMountainsText": "Pegunungan Bersalju",
"backgroundFlyingOverSnowyMountainsNotes": "Terbang di atas Pegunungan Bersalju pada malam hari.",
"backgroundFrostyForestText": "Hutan Membekukan",
"backgroundFrostyForestNotes": "Bersiap-siap untuk mendaki melalui Hutan Membekukan.",
"backgroundSnowyDayFireplaceText": "Snowy Day Fireplace",
"backgroundSnowyDayFireplaceNotes": "Snuggle up next to a Fireplace on a Snowy Day.",
"backgrounds012019": "SET 56: Released January 2019",
"backgroundAvalancheText": "Avalanche",
"backgroundAvalancheNotes": "Flee the thundering might of an Avalanche.",
"backgroundArchaeologicalDigText": "Archaeological Dig",
"backgroundArchaeologicalDigNotes": "Unearth secrets of the ancient past at an Archaeological Dig.",
"backgroundScribesWorkshopText": "Scribe's Workshop",
"backgroundScribesWorkshopNotes": "Write your next great scroll in a Scribe's Workshop.",
"backgroundSnowyDayFireplaceText": "Perapian Hari Bersalju",
"backgroundSnowyDayFireplaceNotes": "Merapat ke perapian di hari bersalju.",
"backgrounds012019": "SET 56: Dirilis Januari 2019",
"backgroundAvalancheText": "Salju Longsor",
"backgroundAvalancheNotes": "Kabur dari kemungkinan salju longsor.",
"backgroundArchaeologicalDigText": "Penggalian Arkeologis",
"backgroundArchaeologicalDigNotes": "Membuka rahasia masa lalu di penggalian arkeologi.",
"backgroundScribesWorkshopText": "Bengkel Penulis",
"backgroundScribesWorkshopNotes": "Tulislah gulungan besar selanjutnya di bengkel penulis.",
"backgrounds022019": "SET 57: Dirilis pada bulan Februari 2019",
"backgrounds042019": "SET 59: Dirilis April 2019",
"backgroundFlowerMarketNotes": "Mencari warna yang sempurna untuk buket atau kebun di Pasar Bunga.",
@@ -651,5 +651,123 @@
"backgroundHauntedPhotoNotes": "Temukan dirimu terperangkap di dunia monokromik dalam Foto Berhantu.",
"backgroundUndeadHandsText": "Tangan Mayat Hidup",
"backgroundUndeadHandsNotes": "Mencoba kabur dari genggaman Tangan Mayat Hidup.",
"backgroundCrypticCandlesText": "Lilin Gaib"
"backgroundCrypticCandlesText": "Lilin Gaib",
"backgroundFortuneTellersShopNotes": "Mencari petunjuk tentang masa depanmu di Toko Peramal Masa Depan.",
"backgroundFortuneTellersShopText": "Toko Peramal Masa Depan",
"backgroundInsideAPotionBottleText": "Di dalam Botol Ramuan",
"backgrounds112021": "SET 90: Dirilis November 2021",
"backgroundSpiralStaircaseText": "Tangga Berputar",
"backgroundSpiralStaircaseNotes": "Naik, turun, dan memutari Tangga Berputar.",
"backgroundInsideAPotionBottleNotes": "Mengintip melalui kaca sembari berharap pertolongan dari dalam Botol Ramuan.",
"backgroundFrozenPolarWatersText": "Air Kutub Beku",
"backgroundFrozenPolarWatersNotes": "Jelajahi Air Kutub yang membeku.",
"backgroundWinterCanyonNotes": "Petualangan di Tebing Musim Dingin!",
"backgroundIcePalaceText": "Istana Es",
"backgroundIcePalaceNotes": "Bertakhta di Istana Es.",
"backgrounds122021": "SET 91: Dirilis Desember 2021",
"backgroundWinterCanyonText": "Tebing Musim Dingin",
"backgroundMeteorShowerText": "Hujan Meteor",
"backgroundMeteorShowerNotes": "Amati pemandangan indah malam hari menampilkan Hujan Meteor.",
"backgroundPalmTreeWithFairyLightsText": "Pohon Palem dengan Lampu Peri",
"backgroundSnowyFarmText": "Ladang Bersalju",
"backgroundSnowyFarmNotes": "Pastikan semua orang sehat dan hangat di Ladang Bersaljumu.",
"backgrounds012022": "SET 92: Dirilis Januari 2022",
"backgrounds022022": "SET 93: Dirilis Februari 2022",
"backgroundPalmTreeWithFairyLightsNotes": "Bergaya di Pohon Palem berhias Lampu Peri.",
"backgroundIridescentCloudsText": "Awan Warna-Warni",
"backgroundIridescentCloudsNotes": "Melayang di Awan Warna-Warni.",
"backgrounds032022": "SET 94: Dirilis Maret 2022",
"backgroundAnimalsDenNotes": "Bersantai di Sarang Makhluk Hutan.",
"backgroundAnimalsDenText": "Sarang Makhluk Hutan",
"backgroundBrickWallWithIvyText": "Tembok Bata Belukar",
"backgroundBrickWallWithIvyNotes": "Mengagumi Tembok Bata dengan Belukar.",
"backgroundOnACastleWallText": "Di Dinding Kastil",
"backgroundCastleGateText": "Gerbang Kastil",
"backgroundBlossomingTreesText": "Pepohonan Bersemi",
"backgroundBlossomingTreesNotes": "Menghabiskan waktu di bawah Pepohonan Bersemi.",
"backgroundFlowerShopText": "Toko Bunga",
"backgroundSpringtimeLakeText": "Danau Musim Semi",
"backgroundFloweringPrairieText": "Padang Rumput Berbunga",
"backgroundFloweringPrairieNotes": "Bersenda gurau di Padang Rumput Berbunga.",
"backgrounds042022": "SET 95: Dirilis April 2022",
"backgroundFlowerShopNotes": "Menikmati aroma wangi dari Toko Bunga.",
"backgroundSpringtimeLakeNotes": "Memandangi pinggir tepian Danau Musim Semi.",
"backgrounds052022": "SET 96: Dirilis Mei 2022",
"backgroundOnACastleWallNotes": "Memandang dari dinding sebuah Kastil.",
"backgroundCastleGateNotes": "Menjaga Gerbang Kastil.",
"backgrounds062022": "SET 97: Dirilis Juni 2022",
"backgroundEnchantedMusicRoomText": "Ruang Musik Ajaib",
"backgroundEnchantedMusicRoomNotes": "Bermain di sebuah Ruang Musik Ajaib.",
"backgroundBeachWithDunesText": "Pantai dengan Bukit Pasir",
"backgroundBeachWithDunesNotes": "Jelajah pinggiran pantai dengan bukit pasir.",
"backgroundMountainWaterfallText": "Pegunungan Air Terjun",
"backgroundMountainWaterfallNotes": "Mengagumi pegunungan air terjun.",
"backgrounds072022": "SET 98: Dirilis Juli 2022",
"backgroundBioluminescentWavesText": "Ombak Bercahaya",
"backgroundBioluminescentWavesNotes": "Mengagumi sinaran ombak yang bercahaya.",
"backgroundUnderwaterCaveText": "Gua di Bawah Air",
"backgroundUnderwaterCaveNotes": "Menjelajahi gua di bawah air.",
"backgroundUnderwaterStatuesText": "Taman Patung Dasar Laut",
"backgrounds082022": "SET 99: Dirilis Agustus 2022",
"backgroundSailboatAtSunsetText": "Perahu Layar di Kala Petang",
"backgroundSailboatAtSunsetNotes": "Menikmati keindahan perahu layar di kala petang.",
"backgroundUnderwaterStatuesNotes": "Mencoba tudak berkedip di sebuah Taman Patung Dasar Laut.",
"backgroundRainbowEucalyptusText": "Eukaliptus Pelangi",
"backgroundRainbowEucalyptusNotes": "Mengagumi belukar Eukaliptus Pelangi.",
"backgroundMessyRoomText": "Kamar Berantakan",
"backgroundByACampfireText": "Api Unggun",
"backgroundTheatreStageText": "Panggung Teater",
"backgroundTheatreStageNotes": "Berlaga di panggung teater.",
"backgroundAutumnPicnicText": "Piknik Musim Gugur",
"backgroundAutumnPicnicNotes": "Menikmati piknik di musim gugur.",
"backgroundOldPhotoText": "Foto Lama",
"backgroundOldPhotoNotes": "Bergaya di sebuah foto lama.",
"backgroundMessyRoomNotes": "Merapikan kamar yang berantakan.",
"backgroundByACampfireNotes": "Bersantai disinari cahaya api unggul.",
"backgrounds092022": "SET 100: Dirilis September 2022",
"backgrounds102022": "SET 101: Dirilis Oktober 2022",
"backgroundSpookyRuinsText": "Reruntuhan Berhantu",
"backgroundSpookyRuinsNotes": "Menjelalahi reruntuhan berhantu.",
"backgroundMaskMakersWorkshopText": "Bengkel Pembuat Topeng",
"backgroundMaskMakersWorkshopNotes": "Mencoba wajah baru di bengkel pembuat topeng.",
"backgroundCemeteryGateText": "Gerbang Perkuburan",
"backgroundCemeteryGateNotes": "Menghantui gerbang perkuburan.",
"backgrounds112022": "SET 102: Dirilis November 2022",
"backgroundAmongGiantMushroomsText": "Di Antara Jamur Raksasa",
"backgroundMistyAutumnForestNotes": "Mengelilingi hutan berkabut musim gugur.",
"backgrounds122022": "SET 103: Dirilis Desember 2022",
"backgroundBranchesOfAHolidayTreeText": "Cabang Pohon Liburan",
"backgroundAmongGiantMushroomsNotes": "Mengagumi jamur-jamur raksasa.",
"backgroundMistyAutumnForestText": "Hutan Berkabut Musim Gugur",
"backgroundAutumnBridgeText": "Jembatan di Musim Gugur",
"backgroundAutumnBridgeNotes": "Mengagumi keindahan jembatan di Musim Gugur.",
"backgrounds012023": "SET 104: Dirilis Januari 2023",
"backgroundBranchesOfAHolidayTreeNotes": "Bergembira di cabang-cabang pohon liburan.",
"backgroundInsideACrystalText": "Dalam Kristal",
"backgroundInsideACrystalNotes": "Mengintip dari dalam Kristal.",
"backgroundSnowyVillageText": "Desa Bersalju",
"backgroundSnowyVillageNotes": "Mengagumi Desa Bersalju.",
"backgrounds022023": "SET 105: Dirilis Februari 2023",
"backgroundInFrontOfFountainText": "Di Depan Air Mancur",
"backgroundInFrontOfFountainNotes": "Berjalan-jalan di depan air mancur.",
"backgroundGoldenBirdcageText": "Sarang Burung Keemasan",
"backgroundGoldenBirdcageNotes": "Bersembunyi di sarang burung keemasan.",
"backgroundFancyBedroomText": "Kamar Mewah",
"backgroundFancyBedroomNotes": "Bermewah-mewahan di kamar mewah.",
"backgroundRimeIceText": "Embun Beku",
"backgroundRimeIceNotes": "Mengagumi embun beku yang berkilauan.",
"backgroundSnowyTempleText": "Kuis Bersalju",
"backgroundSnowyTempleNotes": "Memandangi pemandangan kuil bersalju.",
"backgroundWinterLakeWithSwansText": "Danau Musim Dingin dengan Angsa",
"backgroundWinterLakeWithSwansNotes": "Menikmati pemandangan danau musim dingin dengan angsa.",
"eventBackgrounds": "Latar belakang Even",
"backgroundBirthdayBashText": "Pesta Ulang Tahun",
"backgroundBirthdayBashNotes": "Habitica mengadakan pesta ulang tahun, dan semua orang diundang!",
"backgrounds032023": "SET 106: Dirilis Maret 2023",
"backgroundOldTimeyBasketballCourtText": "Lapangan Basket Jaman Dulu",
"backgroundOldTimeyBasketballCourtNotes": "Lontaran ring basket di Lapangan Basket Jaman Dulu.",
"backgroundMangroveForestText": "Hutan Mangrove",
"backgroundMangroveForestNotes": "Menyusuri tepian hutan mangrove.",
"backgroundJungleWateringHoleText": "Lubang Pengairan Hutan",
"backgroundJungleWateringHoleNotes": "Berhenti sejenak mencicip lubang pengairan hutan."
}
@@ -10,17 +10,17 @@
"commGuidePara016": "Ketika menjelajahi ruang publik di Habitica, terdapat beberapa peraturan umum untuk memastikan semua orang tetap bahagia dan nyaman.",
"commGuideList02A": "<strong>Hormati satu sama lain</strong>. Bersikaplah sopan, baik, ramah, dan suka membantu. Ingat: Para Habitican datang dari segala latar belakang dan punya pengalaman yang berbeda satu dengan yang lain. Inilah yang membuat Habitica sangat digemari! Membangun komunitas yang berarti saling menghormati dan merayakan segala perbedaan dan kesamaan kita semua.",
"commGuideList02B": "<strong>Patuhi semua<a href='/static/terms' target='_blank'>Syarat dan Ketentuan</a></strong> baik di ruang publik maupun pribadi.",
"commGuideList02C": "<strong>Do not post images or text that are violent, threatening, or sexually explicit/suggestive, or that promote discrimination, bigotry, racism, sexism, hatred, harassment or harm against any individual or group</strong>. Not even as a joke. This includes slurs as well as statements. Not everyone has the same sense of humor, and so something that you consider a joke may be hurtful to another. Attack your Dailies, not each other.",
"commGuideList02D": "<strong>Keep discussions appropriate for all ages</strong>. We have many young Habiticans who use the site! Let's not tarnish any innocents or hinder any Habiticans in their goals.",
"commGuideList02E": "<strong>Avoid profanity. This includes milder, religious-based oaths that may be acceptable elsewhere</strong>. We have people from all religious and cultural backgrounds, and we want to make sure that all of them feel comfortable in public spaces. <strong>If a moderator or staff member tells you that a term is disallowed on Habitica, even if it is a term that you did not realize was problematic, that decision is final</strong>. Additionally, slurs will be dealt with very severely, as they are also a violation of the Terms of Service.",
"commGuideList02F": "<strong>Avoid extended discussions of divisive topics in the Tavern and where it would be off-topic</strong>. If you feel that someone has said something rude or hurtful, do not engage them. If someone mentions something that is allowed by the guidelines but which is hurtful to you, its okay to politely let someone know that. If it is against the guidelines or the Terms of Service, you should flag it and let a mod respond. When in doubt, flag the post.",
"commGuideList02C": "<strong>Dilarang mengirimkan gambar atau tulisan yang kasar, mengancam, atau tidak senonoh, atau mempromosikan diskriminasi, penistaan, rasisme, seksisme, kebencian, dan penghinaan kepada orang atau kelompok tertentu.</strong>. Bahkan jika hanya sebagai candaan atau meme. Hal ini termasuk pelesetan maupun pernyataan resmi. Tidak semua orang memiliki selera humor yang sama, sehingga hal yang dianggap bercandaan bagi satu orang dapat menyakiti orang lain. Seranglah tugas-tugasmu, bukannya orang lain.",
"commGuideList02D": "<strong>Mohon dijaga agar diskusi tetap sesuai untuk semua umur</strong>. Hindari pembahasan topik dewasa di area publik. Kami memiliki banyak Habitican muda yang menggunakan situs ini, dan orang-orang datang dari berbagai latar belakang. Kami ingin komunitas kami jadi senyaman dan se-inklusif mungkin.",
"commGuideList02E": "<strong>Hindari kata-kata kasar. Termasuk sumpah serapah yang mungkin bisa diterima di tempat lain</strong>. Kita berasal dari beraneka ragam agama dan budaya, dan kami ingin memastikan semua orang merasa nyaman di ruang-ruang publik. <strong>Jika moderator atau staf memberi tahu kamu bahwa sebuah istilah tidak dibolehkan di Habitica, bahkan jika istilah tersebut menurut kamu tidak masalah, maka keputusan larangan itu adalah final</strong>. Selebihnya, hinaan akan diberi sanksi berat, sebab merupakan pelanggaran terhadap Persyaratan Layanan.",
"commGuideList02F": "Hindari memperpanjang diskusi yang memecah belah di Kedai Minuman dan di tempat-tempat yang tidak sebaiknya membahas hal tersebut. Jika seseorang mengatakan sesuatu yang dibolehkan oleh Pedoman Komunitas tetapi menyakitkan untuk kamu, tidak apa-apa menegur mereka secara sopan. Jika seseorang memberi tahu kami bahwa kamu membuat mereka tidak nyaman, cobalah renungkan hal ini dan jangan merespon dengan marah. Tapi jika kamu merasa sebuah percakapan mulai memanas, menjadi emosional, atau menyakitkan, <strong>berhentilah terlibat. Yang harus dilakukan adalah melaporkan pesan-pesan tersebut supaya kami tahu mengenai hal tersebut.</strong> Moderator akan merespon secepatnya. Kamu juga bisa mengirimkan pesan ke <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> dan menyertakan tangkapan layar yang dapat membantu.",
"commGuideList02G": "<strong>Patuhi segera segala permintaan Moderator.</strong> Ini juga termasuk, tetapi tidak terbatas pada, memintamu untuk membatasi jumlah postinganmu di ruang tertentu, menghapus konten yang tidak sesuai dari profil, memindahkan diskusimu ke tempat yang lebih sesuai, dll. Jangan berdebat dengan moderator. Jika kamu mempunyai masalah atau pendapat terkait cara bersikap, kirimkan email pada <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>untuk ditindaklanjuti oleh manager komunitas kami.",
"commGuideList02J": "<strong>Do not spam</strong>. Spamming may include, but is not limited to: posting the same comment or query in multiple places, posting links without explanation or context, posting nonsensical messages, posting multiple promotional messages about a Guild, Party or Challenge, or posting many messages in a row. Asking for gems or a subscription in any of the chat spaces or via Private Message is also considered spamming. If people clicking on a link will result in any benefit to you, you need to disclose that in the text of your message or that will also be considered spam.<br/><br/>It is up to the mods to decide if something constitutes spam or might lead to spam, even if you dont feel that you have been spamming. For example, advertising a Guild is acceptable once or twice, but multiple posts in one day would probably constitute spam, no matter how useful the Guild is!",
"commGuideList02J": "<strong>Jangan mengirim spam</strong>. Spam termasuk, tapi tidak terbatas pada: mengirimkan komentar yang sama di banyak tempat berbeda, <strong>mengirimkan tautan tanpa penjelasan atau konteks</strong>, mengirimkan pesan tidak masuk akal, mengirimkan pesan promosi yang banyak tentang sebuah Guild, Party, atau Tantangan, atau mengirimkan banyak pesan berturut-turut. Jika seseorang meng-klik sebuah tautan yang akan memberikan keuntungan untuk kamu, kamu harus memberitahukan hal tersebut di pesan, kalau tidak demikian maka dianggap sebagai spam. Moderator dapat menentukan yang mana spam atau bukan berdasarkan penilaian mereka.",
"commGuideList02K": "<strong>Avoid posting large header text in the public chat spaces, particularly the Tavern</strong>. Much like ALL CAPS, it reads as if you were yelling, and interferes with the comfortable atmosphere.",
"commGuideList02L": "<strong>Kami sangat tidak menyarankan pertukaran informasi pribadi -- khususnya informasi yang dapat digunakan untuk mengidentifikasimu -- di ruang obrolan umum</strong>. Informasi mengidentifikasi dapat termasuk, namun tidak terbatas pada: alamat kamu, alamat email kamu, dan token API/passwordmu. Ini untuk keamananmu! Staf ataupun moderator bisa menghapus postingan sesuai kebijakan mereka. Jika kamu diminta untuk memberi informasi pribadi di dalam sebuah Guild tertutup (?), Party, atau PM, kami sangat menyarankan kamu menolak dengan sopan kemudian menyiagakan staf dan moderator dengan 1) menandakan pesan jika di dalam sebuah Party atau Guild tertutup, atau 2) mengisi <a href='https://contact.habitica.com/' target='_blank'>Kontak Form Moderator</a> dengan tangkapan layar.",
"commGuideList02L": "<strong>Kami sangat tidak menyarankan pertukaran informasi pribadi -- khususnya informasi yang dapat digunakan untuk mengidentifikasimu -- di ruang obrolan publik</strong>. Informasi mengidentifikasi dapat termasuk, namun tidak terbatas pada: alamat kamu, alamat email kamu, dan token API/passwordmu. Ini untuk keamananmu! Staf ataupun moderator bisa menghapus postingan sesuai kebijakan mereka. Jika kamu diminta untuk memberi informasi pribadi di dalam sebuah Guild privat, Party, atau PM, kami sangat menyarankan kamu menolak dengan sopan kemudian memberitahu staf dan moderator dengan cara 1) melaporkan pesan 2) mengirim pesan ke <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a> dan menyertakan tangkapan layar.",
"commGuidePara019": "<strong>In private spaces</strong>, users have more freedom to discuss whatever topics they would like, but they still may not violate the Terms and Conditions, including posting slurs or any discriminatory, violent, or threatening content. Note that, because Challenge names appear in the winner's public profile, ALL Challenge names must obey the public space guidelines, even if they appear in a private space.",
"commGuidePara020": "<strong>Pesan Pribadi (PM)</strong> memiliki beberapa panduan tambahan. Jika seseorang telah memblokirmu, jangan hubungi mereka di tempat lain untuk tidak memblokirmu. Selain itu, kamu sebaiknya tidak mengirimkan Pesan Pribadi kepada seseorang yang meminta bantuan (karena jawaban umum untuk membantu pertanyaan sangat membantu untuk komunitas). Terakhir, jangan kirim Pesan Pribadi kepada siapapun dengan tujuan meminta hadiah permata atau langganan, karena ini bisa dianggap sebagai spamming.",
"commGuidePara020A": "<strong> Jika kamu melihat postingan atau pesan pribadi berupa pelanggaran terhadap pedoman ruang publik yang diuraikan diatas, atau jika kamu melihat postingan atau pesan pribadi yang mengganggumu atau membuatmu tidak nyaman, kamu dapat membawa masalah tersebut pada Moderator dan Staf dengan mengkllik ikon bendera untuk melaporkannya.</strong>. Seorang Staff atau Moderator akan merespon laporanmu sesegera mungkin. Mohon diperhatikan bahwa melaporkan postingan yang tidak melanggar apapun secara sengaja adalah tindakan pelanggaran Pedoman ini (lihat dibawah di \"Pelanggaran\"). Kamu juga dapat menghubungi Mods melalui formulir pada halaman \"Hubungi Kami\", yang dimana kamu juga dapat mengaksesnya melalui menu bantuan dengan mengklik \"<a href='https://contact.habitica.com/' target='_blank'>Hubungi Tim Moderasi</a>. Kamu juga dapat melakukan ini jikalau ada beberapa postingan bermasalah yang dilakukan oleh orang yang sama di dalam Guild yang berbeda, atau jika situasinya membutuhkan penjelasan. Kamu dapat menghubungi kami menggunakan bahasa negaramu sendiri jika itu dirasa lebih mudah: kami bisa saja menggunakan Google Translate, tapi kami ingin kamu merasa nyaman berkomunikasi dengan kami saat kamu ada masalah.",
"commGuidePara020": "<strong>Pesan Pribadi (PM)</strong> memiliki beberapa panduan tambahan. Jika seseorang telah memblokirmu, jangan hubungi mereka di tempat lain untuk tidak memblokirmu. Selain itu, kamu sebaiknya tidak mengirimkan Pesan Pribadi kepada seseorang yang meminta bantuan (karena jawaban publik dari pertanyaan yang sifatnya bantuan sangat membantu untuk komunitas). Terakhir, jangan kirim Pesan Pribadi kepada siapapun dengan tujuan meminta konten berbayar dalam bentuk apapun.",
"commGuidePara020A": "<strong> Jika kamu melihat postingan atau pesan pribadi berupa pelanggaran terhadap pedoman ruang publik yang diuraikan diatas, atau jika kamu melihat postingan atau pesan pribadi yang mengganggumu atau membuatmu tidak nyaman, kamu dapat membawa masalah tersebut pada Moderator dan Staf dengan mengkllik ikon bendera untuk melaporkannya.</strong>. Seorang Staff atau Moderator akan merespon laporanmu sesegera mungkin. Mohon diperhatikan bahwa melaporkan postingan yang tidak melanggar apapun secara sengaja adalah tindakan pelanggaran Pedoman ini (lihat dibawah di \"Pelanggaran\"). Kamu juga bisa menghubungi moderator dengan mengirim email ke <a href='mailto:admin@habitica.com' target='_blank'>admin@habitica.com</a>. Kamu dapat melakukan hal ini bila terdapat banyak postingan bermasalah dari orang yang sama di Guild berbeda, atau jika kondisinya membutuhkan suatu penjelasan. Kamu dapat menghubungi kami dengan bahasa kamu sendiri jika itu memudahkan buatmu: kami mungkin harus menggunakan Google Translate tapi kami ingin kamu merasa nyaman ketika menghubungi kami jika ada masalah.",
"commGuidePara021": "Selanjutnya, beberapa ruang publik di Habitica memiliki panduan tambahan.",
"commGuideHeadingTavern": "Kedai Minum",
"commGuidePara022": "The Tavern is the main spot for Habiticans to mingle. Daniel the Innkeeper keeps the place spic-and-span, and Lemoness will happily conjure up some lemonade while you sit and chat. Just keep in mind…",
@@ -31,7 +31,7 @@
"commGuidePara029": "<strong>Public Guilds are much like the Tavern, except that instead of being centered around general conversation, they have a focused theme</strong>. Public Guild chat should focus on this theme. For example, members of the Wordsmiths Guild might be cross if the conversation is suddenly focusing on gardening instead of writing, and a Dragon-Fanciers Guild might not have any interest in deciphering ancient runes. Some Guilds are more lax about this than others, but in general, <strong>try to stay on topic</strong>!",
"commGuidePara031": "Some public Guilds will contain sensitive topics such as depression, religion, politics, etc. This is fine as long as the conversations therein do not violate any of the Terms and Conditions or Public Space Rules, and as long as they stay on topic.",
"commGuidePara033": "<strong>Public Guilds may NOT contain 18+ content. If they plan to regularly discuss sensitive content, they should say so in the Guild description</strong>. This is to keep Habitica safe and comfortable for everyone.",
"commGuidePara035": "<strong>If the Guild in question has different kinds of sensitive issues, it is respectful to your fellow Habiticans to place your comment behind a warning (ex. \"Warning: references self-harm\")</strong>. These may be characterized as trigger warnings and/or content notes, and Guilds may have their own rules in addition to those given here. If possible, please use <a href='http://habitica.fandom.com/wiki/Markdown_Cheat_Sheet' target='_blank'>markdown</a> to hide the potentially sensitive content below line breaks so that those who may wish to avoid reading it can scroll past it without seeing the content. Habitica staff and moderators may still remove this material at their discretion.",
"commGuidePara035": "<strong>Jika Guild yang bersangkutan memiliki permasalahan sensitif yang berbeda, merupakan hal yang sopan ke sesama Habitican untuk menempatkan komentar setelah peringatan (mis. \"Berbahaya: dapat menyakiti diri sendiri\")</strong>. Hal ini dapat dituliskan sebagai peringatan dan/atau catatan konten, dan guild-guild tersebut dapat memiliki aturannya sendiri selain dari yang dituliskan di sini. Jika memungkinkan, gunakan <a href='https://habitica.fandom.com/wiki/Markdown_Cheat_Sheet' target='_blank'>*markdown*</a> untuk menyembunyikan konten potensial sensitif di bawah jeda garis sehingga orang-orang yang ingin menghindari membaca hal tersebut dapat melewatinya tanpa harus melihat isinya. Staf dan moderator Habitica masih dapat menghapus hal seperti ini atas pertimbangan sendiri.",
"commGuidePara036": "Sebagai tambahan, materi yang sensitif haruslah relatif -- membahas masalah self-harm di dalam Guild khusus yang membahas masalah depresi adalah hal yang masuk akal, namun berbeda ceritanya jika dibahas di dalam Guild musik. Jika kamu melihat seseorang yang kerap melanggar pedoman ini, terutama setelah beberapa kali diingatkan, mohon klik logo bendera pada postingan tersebut dan beritahu moderator melalui <a href='https://contact.habitica.com/' target='_blank'>Formulir Kontak Moderator</a>.",
"commGuidePara037": "<strong>No Guilds, Public or Private, should be created for the purpose of attacking any group or individual</strong>. Creating such a Guild is grounds for an instant ban. Fight bad habits, not your fellow adventurers!",
"commGuidePara038": "<strong>All Tavern Challenges and Public Guild Challenges must comply with these rules as well</strong>.",
@@ -61,7 +61,7 @@
"commGuidePara056": "Pelanggaran ringan memiliki konsekuensi kecil. Jika diulangi, konsekuensi akan semakin berat.",
"commGuidePara057": "Berikut ini adalah beberapa contoh pelanggaran kecil. Ini bukan daftar lengkap .",
"commGuideList07A": "Pelanggaran pertama Pedoman Ruang Publik",
"commGuideList07B": "Any statements or actions that trigger a \"Please Don't\". When a Mod has to say \"Please don't do this\" to a user, it can count as a very minor infraction for that user. An example might be \"Please don't keep arguing in favor of this feature idea after we've told you several times that it isn't feasible.\" In many cases, the Please Don't will be the minor consequence as well, but if Mods have to say \"Please Don't\" to the same user enough times, the triggering Minor Infractions will start to count as Moderate Infractions.",
"commGuideList07B": "Setiap pernyataan atau tindakan yang memicu kata \"Tolong jangan\" dari moderator. Ketika kamu diminta untuk tidak melakukan sesuatu secara publik, hal itu dapat menjadi dasar pemberian konsekuensi. Jika moderator telah menyampaikan koreksi tersebut berulang kali, hal itu dapat termasuk pelanggaran berat",
"commGuidePara057A": "Some posts may be hidden because they contain sensitive information or might give people the wrong idea. Typically this does not count as an infraction, particularly not the first time it happens!",
"commGuideHeadingConsequences": "Konsekuensi",
"commGuidePara058": "Di Habitica -- seperti di kehidupan sebenarnya -- semua aksi ada konsekuensinya, seperti jadi bugar karena sering latihan lari, gigi bolong karena makan banyak permen, atau naik kelas karena belajar.",
@@ -77,7 +77,7 @@
"commGuideList09C": "Mematikan permanen (\"membekukan\") progres Tingkat Kontributor",
"commGuideHeadingModerateConsequences": "Contoh dari Konsekuensi Moderat",
"commGuideList10A": "Restricted public and/or private chat privileges",
"commGuideList10A1": "Jika tindakan kamu menyebabkan hak kamu untuk mengobrol di game dicabut, seorang Moderator atau anggota Staff akan mengirim sebuah pesan pribadi dan/ atau post ke forum dimana kamu dilarang mengobrol untuk memberi tahu kamu apa alasan hal ini dilakukan dan berapa lama kamu dilarang mengobrol. Setelah waktu itu berlalu, kamu akan menerima kembali hak mengobrolmu, asalkan kamu berniat untuk memperbaiki kelakuan yang telah menyebabkan larangan tersebut dan menuruti Pedoman Komunitas.",
"commGuideList10A1": "Jika tindakan kamu menyebabkan hak kamu untuk mengobrol di game dicabut, seorang Moderator atau Staf akan mengirim sebuah pesan pribadi dan/atau post ke forum dimana kamu dilarang mengobrol untuk memberi tahu kamu apa alasan hal ini dilakukan dan berapa lama kamu dilarang mengobrol serta tindakan apa yang diperlukan untuk menebus kesalahan. Kamu akan dimaafkan bila kamu bersedia patuh dengan melakukan apa yang harus dilakukan dan setuju untuk mematuhi Pedoman Komunitas dan Persyaratan Layanan",
"commGuideList10C": "Restricted Guild/Challenge creation privileges",
"commGuideList10D": "Mematikan sementara (\"membekukan\") progres Tingkat Kontributor",
"commGuideList10E": "Pencabutan Tingkat Kontributor",
@@ -126,5 +126,8 @@
"commGuideList01D": "Harap patuhi permintaan moderator.",
"commGuideList01C": "Semua diskusi harus sesuai untuk segala usia dan bebas dari kata-kata kotor.",
"commGuideList01B": "Hal yang Dilarang : Segala bentuk komunikasi yang berbau kekerasan, ancaman, menyuarakan diskriminasi dll, termasuk meme, gambar, dan candaan.",
"commGuideList01A": "Syarat dan Ketentuan berlaku pada seluruh ruang, termasuk guild pribadi, obrolan party, dan pesan."
"commGuideList01A": "Syarat dan Ketentuan berlaku pada seluruh ruang, termasuk guild pribadi, obrolan party, dan pesan.",
"commGuideList09D": "Pencabutan atau penurunan tingkat kontributor",
"commGuideList05H": "Percobaan penipuan berulang atau menekan pemain lain untuk memberikan item berbayar",
"commGuideList02M": "Dilarang meminta permata, langganan, atau keanggotaan di Rencana Kelompok (Group Plan). Hal ini tidak dibolehkan di Kedai Minuman, ruang obrolan publik maupun pribadi, dan di pesan langsung. Jika kamu menerima pesan yang meminta item berbayar, laporkan pesan tersebut. Meminta permata atau langganan berulang kali, apalagi setelah mendapat peringatan, dapat berakibat pemblokiran akun."
}
+30 -5
View File
@@ -4,7 +4,7 @@
"armoireText": "Peti Ajaib",
"armoireNotesFull": "Buka Peti untuk mendapatkan Perlengkapan, Pengalaman, ataupun Makanan! secara acak, Sisa perlengkapan:",
"armoireLastItem": "Kamu mendapat Perlengkapan langka terakhir dalam Peti Ajaib.",
"armoireNotesEmpty": "Buka Peti untuk mendapatkan Perlengkapan, Pengalaman, ataupun Makanan secara acak! Sisa perlengkapan:",
"armoireNotesEmpty": "Peti ajaib akan terisi dengan Perlengkapan baru di setiap minggu pertama tiap bulan. Sampai waktunya, klik terus untuk mendapatkan Pengalaman dan Makanan Peliharaan!",
"dropEggWolfText": "Serigala",
"dropEggWolfMountText": "Serigala",
"dropEggWolfAdjective": "setia",
@@ -66,7 +66,7 @@
"questEggOwlMountText": "Burung Hantu",
"questEggOwlAdjective": "bijaksana",
"questEggPenguinText": "Pinguin",
"questEggPenguinMountText": "Penguin",
"questEggPenguinMountText": "Pinguin",
"questEggPenguinAdjective": "berpikiran tajam",
"questEggTRexText": "Tiranosaurus",
"questEggTRexMountText": "Tiranosaurus",
@@ -208,11 +208,11 @@
"hatchingPotionStarryNight": "Malam Berbintang",
"hatchingPotionRainbow": "Pelangi",
"hatchingPotionGlass": "Kaca",
"hatchingPotionGlow": "Glow-in-the-Dark",
"hatchingPotionGlow": "Bersinar di Kegelapan",
"hatchingPotionFrost": "Frost",
"hatchingPotionIcySnow": "Icy Snow",
"hatchingPotionNotes": "Berikan ini kepada sebuah telur, dan ia akan menetas menjadi binatang peliharaan <%= potText(locale) %>.",
"premiumPotionAddlNotes": "Tidak dapat digunakan kepada telur peliharaan yang didapat dari misi.",
"premiumPotionAddlNotes": "Tidak dapat digunakan kepada telur peliharaan yang didapat dari misi. Tersedia untuk pembelian sampai dengan <%= date(locale) %>.",
"foodMeat": "Daging",
"foodMeatThe": "Daging",
"foodMeatA": "Daging",
@@ -326,5 +326,30 @@
"questEggRobotAdjective": "futuristik",
"questEggRobotMountText": "Robot",
"questEggRobotText": "Robot",
"questEggDolphinAdjective": "Pemotong daging"
"questEggDolphinAdjective": "Pemotong daging",
"hatchingPotionStainedGlass": "Kaca Patri",
"hatchingPotionBlackPearl": "Mutiara Hitam",
"hatchingPotionVampire": "Vampir",
"hatchingPotionTurquoise": "Pirus",
"hatchingPotionAutumnLeaf": "Daun Musim Gugur",
"hatchingPotionSandSculpture": "Patung Pasir",
"hatchingPotionMossyStone": "Batu Lumut",
"hatchingPotionSolarSystem": "Tata Surya",
"hatchingPotionMoonglow": "Sinar Rembulan",
"hatchingPotionSunset": "Senja",
"hatchingPotionPorcelain": "Porselen",
"premiumPotionUnlimitedNotes": "Tidak dapat digunakan untuk telur peliharaan misi.",
"hatchingPotionVirtualPet": "Peliharaan Virtual",
"foodPieCottonCandyBlueA": "sepotong Pie Bluberi",
"foodPieBaseA": "sepotong Pie Apel Biasa",
"foodPieBase": "Pie Apel Biasa",
"foodPieCottonCandyBlue": "Pie Bluberi",
"foodPieCottonCandyBlueThe": "Pie Bluberi",
"foodPieBaseThe": "Pie Apel Biasa",
"foodPieShadeThe": "Pie Coklat Hitam",
"foodPieShadeA": "sepotong Pie Coklat Hitam",
"foodPieShade": "Pie Coklat Hitam",
"foodPieSkeletonA": "sepotong Pie Sumsum Tulang",
"foodPieSkeleton": "Pie Sumsum Tulang",
"foodPieSkeletonThe": "Pie Sumsum Tulang"
}
+7 -1
View File
@@ -26,5 +26,11 @@
"healthHabit": "Makan Makanan Sehat/Junk Food",
"exerciseTodoNotes": "Klik untuk menambah checklist!",
"exerciseTodoText": "Mengatur jadwal olahraga",
"exerciseDailyNotes": "Klik untuk memilih jadwalmu dan menentukan latihan!"
"exerciseDailyNotes": "Klik untuk memilih jadwalmu dan menentukan latihan!",
"schoolHabit": "Belajar/Menunda-nunda",
"healthDailyNotes": "Klik untuk mengubah!",
"healthTodoNotes": "Klik untuk menambahkan ceklis!",
"schoolDailyText": "Menyelesaikan pekerjaan rumah",
"healthTodoText": "Menjadwalkan cek-up >> Buat Brainstorm kesehatan",
"healthDailyText": "Mengaitkan benang gigi"
}

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